fid解释
VID就是VLAN ID,这个意思很明白.
PVID就是PORT VID,当一个PORT属于多个VLAN时,当它收到不带TAG的数据时,
它 就给数据加上TAG,其中VID=PVID.
FID就是FILTERING ID.在SHARE LEARNING环境中,共享地址学习的VLAN用一个FID来标识.
下面这篇短文是中兴的工程师给我的,重点是介绍ZTE二层交换机中的FID
==========
以太网交换机中FID的概念和作用
本文介绍以太网交换 机中的一个新的概念FID,首先我们回顾一下通过vlan进行端口隔离的配置,及存在的一个问题,最后通过FID的设置解决这个问题。
还 记得以前介绍的vlan端口隔离配置吗?
创建vlan1, 包含1, 24口
创建vlan2, 包含2, 24口
...
创 建vlan23, 包含23,24口
创建vlan100,包含1,2,...,23,24口
这样配置以后,端口1,2,...,23之间 是隔离的,不能互相访问,24口上行,可以和1-23通信
但实事证明存在这样一个问题,24口在转发用户下行数据时是广播方式转发到 1-23口。抓包可以发现端口1用户的下行数据在2-23口都能抓到包(上行未能抓到),说明隔离的是上行数据,下行却变成了一个HUB。
那么为什么会出现这种情况能?让我们来分析一下。
二层交换机有这样一张转发表:mac -> port,对于每个vlan而言,每个vlan都有一张这个表
当PC1(端口1下的PC)发出上行包后,交换机的vlan1学到如下的一个条目
vlan1 mac -> port
PC1-mac -> 1
当上行口三层设备(R1)回复PC1 的数据时,交换机的vlan100学到如下条目
vlan100 mac -> port
R1-mac -> 24
当它在vlan100中要转发给PC1时,vlan100转发表中只有这样的条目
vlan100 mac -> port
R1-mac -> 24
可见并没有满足PC1 mac地址的条目,于是它在vlan100里的端口(1-23口)广播。
当PC1第二个数据包发出后,下行时是否还会在1-23口广播 呢?答案是YES,重复上面的过程,始终无法在vlan100中形成PC1的mac条目,所以以后每次通信,下行是都会在每个端口广播。
于 是,我们以前用的用户端口隔离的配置,并没有真正意义上起到端口隔离的作用——仅仅上行数据隔离,下行就变成了一个HUB(其实上行也是广播方式,只不过 只广播到一个24口)。
那么怎样解决这个问题呢?先介绍一个新的概念——FID,即Filtering Database Identifier,是指相同FID的VLAN可以共享转发表的条目。
FID并不是新鲜事物,在交换机内部其实一直 都有fid,大多数厂家并不会提供fid的设置,而是缺省的让fid=vid。
在公司自研的以太网交换机中,提供fid的设置,现在用 2826E举例说明,fid的作用。
首先在2826E上配置端口隔离(注意先把缺省vlan1里的端口删掉)
set vlan 1 add port 1,24 untag
set vlan 2 add port 2,24 untag
...
set vlan 23 add port 23,24 untag
set vlan 100 add port 1-24 untag
!
set vlan 1 enable
set vlan 2 enable
...
set vlan 23 enable
set vlan 100 enable
!
set port 1 pvid 1
set port 2 pvid 2
...
set port 23 pvid 23
set port 24 pvid 100
此时show vlan可以看到每个vlan的fid都缺省的等于各自的vid。
这时通过sniffer抓包可以发现,1口的下行包,在2-23口都能被抓到, 也就如同之前一样,下行数据在1-23口广播。
我们再增加一条命令set vlan 1-23 fid 100,再抓包,发现1口的下行包,在2-23口都抓不到了,下行数据不再广播到每个端口了,是什么原因呢?这就不得不研究fid的作用了。
前面提到相同fid的vlan可以共享转发表的条目,那么又是如何实现的呢?请看
zte(cfg)#show fdb 可以看到这样一张表
MacAddress Fid PortId Type
----------------- ---- ------ -------
00.08.02.d7.a0.81 4 1 dynamic
...
排 除type不管,这张表由mac,fid,port构成
当PC1(端口1下的PC)发出上行包后,交换机学到如下的一个条目(此时 vlan1的fid已设为100)
mac, fid -> port
PC1-mac, 100 -> 1
数 据在vlan1广播,从24口出去
当上行口三层设备(R1)回复PC1的数据时,根据fid规则,交换机学到如下条目
mac, fid -> port
R1-mac, 100 -> 24
当它在vlan100中要转发给PC1时,fid相同 的vlan共享如下条目
mac, fid -> port
PC1-mac, 100 -> 1
R1-mac, 100 -> 24
于是从1口单播出去
PC1第二次发包,查找已经形成的fdb转发表,从24口单播出去,再由1口单播 回来。
到了这里,我突然想到,如果端口2的PC2发包,形成如下fdb表
mac, fid -> port
PC1-mac, 100 -> 1
PC2-mac, 100 -> 2
R1-mac, 100 -> 24
那么PC1和PC2还能隔离吗?
PC1的数据从端口1收到后,在vlan1里转发,虽然vlan1共享了 fid=100的转发表,但PC2所在的端口2不属于vlan1,所以仍然不会转发到端口2去。
回过头再看,fid缺 省时等于vid的情况,经过不断的学习,交换机内部最终形成这样一张fdb表
mac, fid -> port
PC1-mac, 1 -> 1
PC2-mac, 2 -> 2
...
PC23-mac,23 -> 2
R1-mac, 100 -> 24
由于fid不同,每个vlan都只享有与自己fid对应的一个条目,和本文最先说的每个vlan的转发表其实是一会 事。不管交换机是否可以设置fid,fdb这张表在交换机内部始终存在着的,而且交换机是依照这张表进行转发的。
通过 对fid的研究,我们对以太网交换机有了更深入的了解,让我们把fid的概念和作用总结一下:
1、RFC 802.1Q中关于FID的原文
Filtering Database ID (FID)
Addressing information that the device learns about a VLAN is stored in
the filtering database assigned to that VLAN. Several VLANs can be
assigned to the same FID to allow those VLANs to share addressing
information. This enables the devices in the different VLANs to
communicate with each other when the individual(个别的) ports have been
configured to allow communication to occur. The configuration is
accomplished using the Local Management VLAN Forwarding
Configuration screen. By default a VLAN is assigned to the FID that
matches its VLAN ID.
2、交换机内部存在这样一个数据库filtering database,存放着每个vlan的mac地址信息,fid是这个数据库的字段之一
3、相同fid的vlan共享着mac地址信息,使得个别 的端口可以和其它vlan的端口互相通信(即我们常做的vlan端口隔离的上行口,可以和其它端口通信)
4、每个vlan都有一个fid属性,缺 省情况下,vlan的fid和它的vid相同
5、在2826E等提供fid设置的交换机下,通过fid的灵活设置,真正意义上做到了vlan的端 口隔离,有效避免了在交换机端口的广播
6、Fid在上面的例子中,可以不等于100,经实验等于110或其它值也是可以的
到此, 我查阅了资料和通过实验对FID的概念和作用进行了一些研究,可能带有个人观点,不当之处请各位指出。
fid解释的更多相关文章
- matlab fscanf用法
matlab fscanf用法 matlab中的fscanf的用法如下: A=fscanf(fid,format)[A, count]=fscanf(fid,format,size) [A, coun ...
- Drupal 7.31 SQL注入漏洞利用具体解释及EXP
有意迟几天放出来这篇文章以及程序,只是看样子Drupal的这个洞没有引起多少重视,所以我也没有必要按着不发了,只是说实话这个洞威力挺大的.当然.这也是Drupal本身没有意料到的. 0x00 首 ...
- 详解MySQL中EXPLAIN解释命令
Explain 结果解读与实践 基于 MySQL 5.0.67 ,存储引擎 MyISAM . 注:单独一行的"%%"及"`"表示分隔内容,就象分开“第一 ...
- Linux tcpdump命令具体解释
简单介绍 用简单的话来定义tcpdump,就是:dump the traffic on a network,依据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump能够将网络中传送的数据 ...
- Nutch的nutch-default.xml和regex-urlfilter.txt的中文解释
nutch-default解释.xml <?xml version="1.0"?> <?xml-stylesheet type="text/xsl&qu ...
- server.htaccess 具体解释以及 .htaccess 參数说明
.htaccess文件(或者"分布式配置文件")提供了针对文件夹改变配置的方法. 即.在一个特定的文档文件夹中放置一个包括一个或多个指令的文件, 以作用于此文件夹及其所有子文件夹. ...
- ZIP压缩算法详细分析及解压实例解释
最近自己实现了一个ZIP压缩数据的解压程序,觉得有必要把ZIP压缩格式进行一下详细总结,数据压缩是一门通信原理和计算机科学都会涉及到的学科,在通信原理中,一般称为信源编码,在计算机科学里,一般称为数据 ...
- 说说BPM数据表和日志表中几个状态字段的详细解释
有个客户说需要根据这些字段的值作为判断条件做一些定制化需求,所以需要知道这些字段的名词解释,以及里面存储的值具体代表什么意思 我只好为你们整理奉上这些了! Open Work Sheet 0 Sav ...
- 【完全开源】知乎日报UWP版:项目结构说明、关键源代码解释
目录 说明 项目结构 关键代码 演示视频 说明 上一篇博客将源码放出来了,但是并没有做过多的介绍,所以如果自己硬看可能需要花费很长的时间,尤其这些代码并不是自己写的.项目不算复杂但是也不算简单,这篇文 ...
随机推荐
- java实现大文件上传
文件上传是最古老的互联网操作之一,20多年来几乎没有怎么变化,还是操作麻烦.缺乏交互.用户体验差. 一.前端代码 英国程序员Remy Sharp总结了这些新的接口 ,本文在他的基础之上,讨论在前端采用 ...
- ERROR: An HTTP request took too long to complete. Retry with --verbose to obtain debug information.
docker-compose 的问题 要改环境变量 xed ~/.profile export COMPOSE_HTTP_TIMEOUT=500 export DOCKER_CLIENT_TIMEOU ...
- Angular 文档中的修改链接是从哪里改的
如何修改修改的文本的链接. 如下图表示的,如何修改这个地方的链接到自己的 SCM 中. 你需要修改的文件为: aio\tools\transforms\templates\lib\githubLink ...
- CF 680D 堆塔
D. Bear and Tower of Cubes time limit per test 2 seconds memory limit per test 256 megabytes input s ...
- 3.JSP
JSP(Java Server Pages)页面是指扩展名为.jsp的文件,在一个JSP中可以包含指令标识,HTML代码, JavaScript代码,嵌入的Java代码,注释和JSP动作标识等 ...
- JS框架_(JQuery.js)绚丽的3D星空动画
百度云盘: 传送门 密码:8ft8 绚丽的3D星空动画效果(纯CSS) (3D星空动画可以用作网页背景,Gary为文本文字) <!doctype html> <html lang=& ...
- 使用oracle数据库的开发流程
- 胜利点20191010-5 alpha week 1/2 Scrum立会报告+燃尽图 03
此作业要求参见:https://edu.cnblogs.com/campus/nenu/2019fall/homework/8747 一.小组情况组长:贺敬文组员:彭思雨 王志文 位军营 杨萍队名:胜 ...
- 怎样查看explorer里运行的DLL文件
怎样查看explorer里运行的DLL文件 tasklist /m /fi "imagename eq explorer.exe">a.txt 列出explorer用的所有模 ...
- apache源码安装 转载
转载 1.先进入/usr/local/中创建三个文件夹 apr apr-util apache cd /usr/local目录 mkdir apr mkdir apr-util mkdir apach ...