VLAN-TAG 知識相關

VLAN技術要點主要有兩點:
1.支持VLAN的交換機的內部交換原理;
2.設備之間(交換機之間,交換機與路由器之間,交換機與主機之間)交互時,VLAN TAG的添加和移除。
802.1Q VLAN只定義了數據幀的封裝格式,即,在以太網幀頭中插入了4個字節的VLAN字段。
其主要內容爲VLAN TAG,緊隨其後的數據類型和802.1p報文優先級的標識。

以太網幀格式
|-----------------------------------------------------------------------------|
| DMAC(6bytes) | SMAC(6bytes) | Ether-Type(2bytes) | DATA |
|-----------------------------------------------------------------------------|
帶VLAN TAG的以太網幀格式
|------------------------------------------------------------------------------------------|
| DMAC(6bytes) | SMAC(6bytes) | Ether-Type(0x8100) | VLAN(4bytes) | DATA |
|------------------------------------------------------------------------------------------|
VLAN TAG的格式
|---------------------------------------------------------------------------------|
| PRI(3bits) | CFI(1bit) | TAG(12bits) | Ether-Type(2bytes) | DATA |
|---------------------------------------------------------------------------------|
PRI:幀優先級,就是通常所說的802.1p。
CFI:規範標識位,0爲規範格式,用於802.3或EthII。
TAG:就是我們通常說的VLAN ID
Ether-Type:標識緊隨其後的數據類型。

               
PC:大部分的PC(專用的,或用於測試的除外)是工作在應用層的,缺省情況下是不支持(其實也不需要)VLAN TAG的。也就是說,PC發出的都是UNTAGED數據幀。
Router:路由器是支持VLAN TAG的。也就是說,路由器可以發出TAGED數據幀,也可以發出UNTAGED數據幀。需要說明的是,路由器是處理數據包的三層信息的,對於二層信息(包括VLAN信息),路由器只是檢查其有效性,之後將其剝離。這個過程就是我們常說的‘終結’,也就是說,路由器會終結掉報文的VLAN信息的。
Switch:以太網交換機。VLAN技術就是主要針對於交換機提出的,所以,在討論VLAN概念時都是立足於交換機來討論。很顯然,交換機既支持收發TAGED數據幀,也支持收發UNTAGED數據幀。從嚴格意義上講,引入VLAN後,交換機的行爲不再是‘透明傳輸’,因爲數據幀經過交換機後可能發生了變化。
典型配置
交換機連接不同典型設備時的常用配置。
1). 連接PC
  在通常情況下,PC只支持收發UNTAG的數據幀,所以,連接PC的端口只需要加入一個VLAN,而且,在該VLAN中的屬性爲UNTAG。
2). 連接Router
  路由器既支持收發TAG數據幀,也支持收發UNTAG數據幀。通常情況下,不同的VLAN數據幀都能通過該端口與路由器互通。所以連接路由器的端口可以屬於多個VLAN,而且,只能在一個VLAN中的屬性是UNTAG的,在其他的VLAN中都是TAG的。
3). 連接Switch
  也就是交換機的級聯。通常情況下是不同性能的交換機進行級聯。這種情況和連接路由器的情況基本相同。
                           交換機對VLAN的tag處理
  所有能感知VLAN的交換機,報文在交換機內部轉發過程中都是帶Tag的。在交給交換芯片處理之前,或者交換芯片交給端口時會根據端口的設置添加或去掉Tag。
  如果沒有進行配置,默認所有的端口都處於Access模式。一般來說,對端口來說與VLAN相關的有三個屬性,PVID、Tag Vlan、Untag Vlan。PVID有且只有一個,Tag Vlan和Untag Vlan可能有一個,多個,也可以沒有,但兩個至少其中一個有一個。PVID的作用是:如果此端口收到一個Untag的報文,則交換機會根據PVID的值給此報文打上等於PVID的Tag,然後交給交換芯片處理;如果交換芯片要將一個報文從此端口發送,發現此報文的Tag值與PVID相同,則會將Tag去掉,然後從此端口發送出去。Tag Vlan和Untag Vlan主要是用於報文發送的處理,如果交換芯片要將報文從此端口發送,發現報文的Tag在此端口的Tag Vlan中,且不等於PVID,則此報文將以Tag的形式發送出去,如果在Untag Vlan中,則以Untag形式發出去。如果報文的Tag既不在Tag Vlan中,也不在Untag Vlan中,則只有一種可能,交換芯片出毛病了。這就是交換機處理Vlan Tag的基本原則了。可以如圖所示,即Tag處理只在交換芯片的進、出時刻。
file:///C:/Users/ADMINI~1.WCF/AppData/Local/Temp/msohtml1/01/clip_image001.jpg
 
這裏做了簡化,假設一個報文從Port1入,從Port2出,期間可能經過的環節如上所示的1-5。
報文的Tag處理主要在1、5
環節1:如果報文的是Untag的,則報文被加上Port1的PVID的tag,然後送給2層轉發引擎L2。如果報文的Tag不是Port1所屬的VLAN,則報文丟棄。
環節5:如果報文此時的Tag等於Port2的PVID,則報文去Tag,變爲Untag的,如果報文的Tag在端口的Untag列表裏,報文去掉Tag,變爲Untag。如果報文的Tag不是Port2的PVID,但在端口的Tag列表裏,報文Tag不變。

對於任意端口來說,只能是三種類型的一種:Access,Trunk,Multi。
如果是Access,端口只能屬於特定VLAN,只能有一個Untag的VLAN,且其等於PVID,沒有Tag的VLAN。因此Access端口只能接收Untag的報文或所屬的VLAN,即等於PVID的VLAN。出去的報文都是Untag的。
如果是Trunk端口,端口只能有一個Untag的VLAN,且其等於PVID,有多個Tag的VLAN。端口可以接收在所有允許的VLAN和Untag的報文,如果是Untag的報文,則在PVID所在的VLAN轉發。報文發送時,按上述規則轉發,即可能是Tag的,也可能是Untag的。
Multi端口是一種特殊的端口,任何VLAN可能屬於此端口的Untag的,也可以屬於Tag的。PVID可能等於Tag VLAN中的一個,也可能屬於Untag VLAN中的一個。因此這裏就有矛盾的是,如果PVID是Tag VLAN中的一個,轉發時仍按PVID來處理,也就是上述的規則,先進行報文的Tag與PVID的比較,只要相等就給Untag。

可以再簡要分析幾種轉發情況。
如果報文從Port1入,如果報文是Untag的,或者報文的Tag是Port1所屬的VLAN,則報文是合法的。如果報文的MAC地址不等於端口的VLAN的MAC地址,則進行二層轉發。如果L2引擎查找到目的MAC的表項,則按端口轉發,否則在VLAN內廣播。
如果報文的MAC地址等於端口的VLAN的MAC地址,且此VLAN的三層接口是UP的,則會進行三層轉發。報文通過環節3到三層轉發引擎,如果三層轉發引擎匹配到了目的IP,則硬件直接轉發,從環節5出,此時Tag已經變成出接口VLAN的Tag,然後在按照端口轉發原則進行轉發。因此,三層報文如果從Trunk端口出,可能是Tag的,也可能是Untag的,如果是Untag的,那肯定是報文出接口的PVID所對應的VLAN。
這裏還有一個細節是交換機如何對協議報文的處理,最頻繁的應該是ARP的請求報文,其餘還有一些路由協議或其他協議報文。ARP報文的目的MAC是廣播的,不等於VLAN的目的MAC,因此會將此報文在VLAN內廣播,對所有VLAN來說,CPU也是其的一個端口。因此CPU是可以收到其他主機或網絡設備對其IP的ARP請求,正確處理之後,其他主機或網絡設備以後就可以使用此MAC進行三層通信了。
  引入VLAN概念後,數據幀只在相應的VLAN進行交換。用通俗一點的話來講,一個交換機被虛擬出了多個邏輯交換機,每一個VLAN內的端口都是一個邏輯上的交換機。用專業一點的話來講,一個交換機被劃分了多個不同的廣播域,每一個VLAN內的端口,在同一個廣播域內。
引入VLAN後的交換原理與傳統的交換原理相比,並沒有本質上的改變,同樣遵循‘源MAC學習,目的MAC轉發’的基本原則。唯一不同的是,學習和轉發都只在同一個VLAN中進行,數據幀不能跨VLAN交換或轉發。
  如果收到的數據幀攜帶了VLAN信息 (通常稱爲'TAGED數據幀',前面已經介紹了帶VLAN TAG的以太幀格式),該VLAN信息中的VLAN TAG就是交換該幀的VLAN。
  如果收到的數據幀沒有攜帶VLAN信息(通常稱爲‘UNTAGED’數據幀),收到該幀的端口的PVID就是交換該幀的VLAN。
根據上面的原則,也定義了PVID的概念。當端口收到一個UNTAGED數據幀時,無法確定在哪個VLAN中進行交換,PVID定義了在這種情形下交換該幀的VLAN。從某種意義上講,可以把PVID理解爲端口的default VLAN。在支持VLAN的交換機中,每個端口都有一個PVID值,該值有一個缺省值,當然你也可以更改它。
交換機收發數據幀的處理總結
分幾種情況討論交換機的接收和發送處理:接收端口和發送端口在VLAN中屬性;收到的數據幀是TAG的還是UNTAG的。
1). 端口接收到數據幀
  a). 如果是TAG的數據幀,檢查該接收端口是否在該VLAN(數據幀中所攜帶的VLAN TAG)中
   - 接收端口在該VLAN中,則在該VLAN中根據交換原理(即,'源MAC學習,目的MAC轉發'的原理)交換該數據包
   - 接收端口不在該VLAN中,丟棄該數據幀
b). 如果是UNTAG的數據幀,檢查該接收端口是否在某個VLAN中的屬性是UNTAG
   - 接收端口在某個VLAN中的屬性是UNTAG的,則在該VLAN中根據交換原理交換該數據包
   - 接收端口在任何VLAN中的屬性都不是UNTAG的,丟棄該數據包
注:根據這個原理可知,一個端口最多在一個VLAN中的屬性是UNTAG的,否則,收到一個UNTAG的數據幀之後,就無法確定在哪個VLAN中進行交換。其實,端口UNTAG所在的VLAN,2). 端口發送數據幀
a).檢查該端口在該VLAN(就是交換該數據幀的VLAN)中的屬性
    - 該端口在該VLAN種的屬性是TAG的,發送的數據幀爲TAG的數據幀
    - 該端口在該VLAN種的屬性是UNTAG的,發送的數據幀爲UNTAG的數據幀
注:由於數據已經被交換到該端口,說明該端口肯定在該VLAN裏。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章