以太網交換機中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或其它值也是可以的

 轉自:http://blog.csdn.net/hxg130435477/article/details/5964187

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章