VLAN-TAG超經(jīng)典解釋
VLAN技術(shù)要點(diǎn)主要有兩點(diǎn):
1.支持VLAN的交換機(jī)的內(nèi)部交換原理;
2.設(shè)備之間(交換機(jī)之間,交換機(jī)與路由器之間,交換機(jī)與主機(jī)之間)交互時(shí),VLAN TAG的添加和移除。
802.1Q VLAN只定義了數(shù)據(jù)幀的封裝格式,即,在以太網(wǎng)幀頭中插入了4個(gè)字節(jié)的VLAN字段。其主要內(nèi)容為VLAN TAG,緊隨其后的數(shù)據(jù)類型和802.1p報(bào)文優(yōu)先級的標(biāo)識。
以太網(wǎng)幀格式
| DMAC(6bytes) | SMAC(6bytes) | Ether-Type(2bytes) | DATA |
帶VLAN TAG的以太網(wǎng)幀格式
| DMAC(6bytes) | SMAC(6bytes) | Ether-Type(0x8100) | VLAN(4bytes) | DATA |
VLAN TAG的格式
| PRI(3bits) | CFI(1bit) | TAG(12bits) | Ether-Type(2bytes) | DATA |
PRI:幀優(yōu)先級,就是通常所說的802.1p。
CFI:規(guī)范標(biāo)識位,0為規(guī)范格式,用于802.3或EthII。
TAG:就是我們通常說的VLAN ID
Ether-Type:標(biāo)識緊隨其后的數(shù)據(jù)類型。
PC:大部分的PC(專用的,或用于測試的除外)是工作在應(yīng)用層的,缺省情況下是不支持(其實(shí)也不需要)VLAN TAG的。也就是說,PC發(fā)出的都是UNTAGED數(shù)據(jù)幀。
Router:路由器是支持VLAN TAG的。也就是說,路由器可以發(fā)出TAGED數(shù)據(jù)幀,也可以發(fā)出UNTAGED數(shù)據(jù)幀。需要說明的是,路由器是處理數(shù)據(jù)包的三層信息的,對于二層信息(包括VLAN信息),路由器只是檢查其有效性,之后將其剝離。這個(gè)過程就是我們常說的‘終結(jié)’,也就是說,路由器會終結(jié)掉報(bào)文的VLAN信息的。
Switch:以太網(wǎng)交換機(jī)。VLAN技術(shù)就是主要針對于交換機(jī)提出的,所以,在討論VLAN概念時(shí)都是立足于交換機(jī)來討論。很顯然,交換機(jī)既支持收發(fā)TAGED數(shù)據(jù)幀,也支持收發(fā)UNTAGED數(shù)據(jù)幀。從嚴(yán)格意義上講,引入VLAN后,交換機(jī)的行為不再是‘透明傳輸’,因?yàn)閿?shù)據(jù)幀經(jīng)過交換機(jī)后可能發(fā)生了變化。
典型配置
交換機(jī)連接不同典型設(shè)備時(shí)的常用配置。
1). 連接PC
在通常情況下,PC只支持收發(fā)UNTAG的數(shù)據(jù)幀,所以,連接PC的端口只需要加入一個(gè)VLAN,而且,在該VLAN中的屬性為UNTAG。
2). 連接Router
路由器既支持收發(fā)TAG數(shù)據(jù)幀,也支持收發(fā)UNTAG數(shù)據(jù)幀。通常情況下,不同的VLAN數(shù)據(jù)幀都能通過該端口與路由器互通。所以連接路由器的端口可以屬于多個(gè)VLAN,而且,只能在一個(gè)VLAN中的屬性是UNTAG的,在其他的VLAN中都是TAG的。
3). 連接Switch
也就是交換機(jī)的級聯(lián)。通常情況下是不同性能的交換機(jī)進(jìn)行級聯(lián)。這種情況和連接路由器的情況基本相同。
交換機(jī)對VLAN的tag處理
所有能感知VLAN的交換機(jī),報(bào)文在交換機(jī)內(nèi)部轉(zhuǎn)發(fā)過程中都是帶Tag的。在交給交換芯片處理之前,或者交換芯片交給端口時(shí)會根據(jù)端口的設(shè)置添加或去掉Tag。
如果沒有進(jìn)行配置,默認(rèn)所有的端口都處于Access模式。一般來說,對端口來說與VLAN相關(guān)的有三個(gè)屬性,PVID、Tag Vlan、Untag Vlan。PVID有且只有一個(gè),Tag Vlan和Untag Vlan可能有一個(gè),多個(gè),也可以沒有,但兩個(gè)至少其中一個(gè)有一個(gè)。PVID的作用是:如果此端口收到一個(gè)Untag的報(bào)文,則交換機(jī)會根據(jù)PVID的值給此報(bào)文打上等于PVID的Tag,然后交給交換芯片處理;如果交換芯片要將一個(gè)報(bào)文從此端口發(fā)送,發(fā)現(xiàn)此報(bào)文的Tag值與PVID相同,則會將Tag去掉,然后從此端口發(fā)送出去。Tag Vlan和Untag Vlan主要是用于報(bào)文發(fā)送的處理,如果交換芯片要將報(bào)文從此端口發(fā)送,發(fā)現(xiàn)報(bào)文的Tag在此端口的Tag Vlan中,且不等于PVID,則此報(bào)文將以Tag的形式發(fā)送出去,如果在Untag Vlan中,則以Untag形式發(fā)出去。如果報(bào)文的Tag既不在Tag Vlan中,也不在Untag Vlan中,則只有一種可能,交換芯片出毛病了。這就是交換機(jī)處理Vlan Tag的基本原則了。可以如圖所示,即Tag處理只在交換芯片的進(jìn)、出時(shí)刻。
這里做了簡化,假設(shè)一個(gè)報(bào)文從Port1入,從Port2出,期間可能經(jīng)過的環(huán)節(jié)如上所示的1-5。
報(bào)文的Tag處理主要在1、5
環(huán)節(jié)1:如果報(bào)文的是Untag的,則報(bào)文被加上Port1的PVID的tag,然后送給2層轉(zhuǎn)發(fā)引擎L2。如果報(bào)文的Tag不是Port1所屬的VLAN,則報(bào)文丟棄。
環(huán)節(jié)5:如果報(bào)文此時(shí)的Tag等于Port2的PVID,則報(bào)文去Tag,變?yōu)閁ntag的,如果報(bào)文的Tag在端口的Untag列表里,報(bào)文去掉Tag,變?yōu)閁ntag。如果報(bào)文的Tag不是Port2的PVID,但在端口的Tag列表里,報(bào)文Tag不變。
對于任意端口來說,只能是三種類型的一種:Access,Trunk,Multi。
如果是Access,端口只能屬于特定VLAN,只能有一個(gè)Untag的VLAN,且其等于PVID,沒有Tag的VLAN。因此Access端口只能接收Untag的報(bào)文或所屬的VLAN,即等于PVID的VLAN。出去的報(bào)文都是Untag的。
如果是Trunk端口,端口只能有一個(gè)Untag的VLAN,且其等于PVID,有多個(gè)Tag的VLAN。端口可以接收在所有允許的VLAN和Untag的報(bào)文,如果是Untag的報(bào)文,則在PVID所在的VLAN轉(zhuǎn)發(fā)。報(bào)文發(fā)送時(shí),按上述規(guī)則轉(zhuǎn)發(fā),即可能是Tag的,也可能是Untag的。
Multi端口是一種特殊的端口,任何VLAN可能屬于此端口的Untag的,也可以屬于Tag的。PVID可能等于Tag VLAN中的一個(gè),也可能屬于Untag VLAN中的一個(gè)。因此這里就有矛盾的是,如果PVID是Tag VLAN中的一個(gè),轉(zhuǎn)發(fā)時(shí)仍按PVID來處理,也就是上述的規(guī)則,先進(jìn)行報(bào)文的Tag與PVID的比較,只要相等就給Untag。
可以再簡要分析幾種轉(zhuǎn)發(fā)情況。
如果報(bào)文從Port1入,如果報(bào)文是Untag的,或者報(bào)文的Tag是Port1所屬的VLAN,則報(bào)文是合法的。如果報(bào)文的MAC地址不等于端口的VLAN的MAC地址,則進(jìn)行二層轉(zhuǎn)發(fā)。如果L2引擎查找到目的MAC的表項(xiàng),則按端口轉(zhuǎn)發(fā),否則在VLAN內(nèi)廣播。
如果報(bào)文的MAC地址等于端口的VLAN的MAC地址,且此VLAN的三層接口是UP的,則會進(jìn)行三層轉(zhuǎn)發(fā)。報(bào)文通過環(huán)節(jié)3到三層轉(zhuǎn)發(fā)引擎,如果三層轉(zhuǎn)發(fā)引擎匹配到了目的IP,則硬件直接轉(zhuǎn)發(fā),從環(huán)節(jié)5出,此時(shí)Tag已經(jīng)變成出接口VLAN的Tag,然后在按照端口轉(zhuǎn)發(fā)原則進(jìn)行轉(zhuǎn)發(fā)。因此,三層報(bào)文如果從Trunk端口出,可能是Tag的,也可能是Untag的,如果是Untag的,那肯定是報(bào)文出接口的PVID所對應(yīng)的VLAN。
這里還有一個(gè)細(xì)節(jié)是交換機(jī)如何對協(xié)議報(bào)文的處理,最頻繁的應(yīng)該是ARP的請求報(bào)文,其余還有一些路由協(xié)議或其他協(xié)議報(bào)文。ARP報(bào)文的目的MAC是廣播的,不等于VLAN的目的MAC,因此會將此報(bào)文在VLAN內(nèi)廣播,對所有VLAN來說,CPU也是其的一個(gè)端口。因此CPU是可以收到其他主機(jī)或網(wǎng)絡(luò)設(shè)備對其IP的ARP請求,正確處理之后,其他主機(jī)或網(wǎng)絡(luò)設(shè)備以后就可以使用此MAC進(jìn)行三層通信了。
引入VLAN概念后,數(shù)據(jù)幀只在相應(yīng)的VLAN進(jìn)行交換。用通俗一點(diǎn)的話來講,一個(gè)交換機(jī)被虛擬出了多個(gè)邏輯交換機(jī),每一個(gè)VLAN內(nèi)的端口都是一個(gè)邏輯上的交換機(jī)。用專業(yè)一點(diǎn)的話來講,一個(gè)交換機(jī)被劃分了多個(gè)不同的廣播域,每一個(gè)VLAN內(nèi)的端口,在同一個(gè)廣播域內(nèi)。
引入VLAN后的交換原理與傳統(tǒng)的交換原理相比,并沒有本質(zhì)上的改變,同樣遵循‘源MAC學(xué)習(xí),目的MAC轉(zhuǎn)發(fā)’的基本原則。唯一不同的是,學(xué)習(xí)和轉(zhuǎn)發(fā)都只在同一個(gè)VLAN中進(jìn)行,數(shù)據(jù)幀不能跨VLAN交換或轉(zhuǎn)發(fā)。
如果收到的數(shù)據(jù)幀攜帶了VLAN信息 (通常稱為'TAGED數(shù)據(jù)幀',前面已經(jīng)介紹了帶VLAN TAG的以太幀格式),該VLAN信息中的VLAN TAG就是交換該幀的VLAN。
如果收到的數(shù)據(jù)幀沒有攜帶VLAN信息(通常稱為‘UNTAGED’數(shù)據(jù)幀),收到該幀的端口的PVID就是交換該幀的VLAN。
根據(jù)上面的原則,也定義了PVID的概念。當(dāng)端口收到一個(gè)UNTAGED數(shù)據(jù)幀時(shí),無法確定在哪個(gè)VLAN中進(jìn)行交換,PVID定義了在這種情形下交換該幀的VLAN。從某種意義上講,可以把PVID理解為端口的default VLAN。在支持VLAN的交換機(jī)中,每個(gè)端口都有一個(gè)PVID值,該值有一個(gè)缺省值,當(dāng)然你也可以更改它。
交換機(jī)收發(fā)數(shù)據(jù)幀的處理總結(jié)
分幾種情況討論交換機(jī)的接收和發(fā)送處理:接收端口和發(fā)送端口在VLAN中屬性;收到的數(shù)據(jù)幀是TAG的還是UNTAG的。
1). 端口接收到數(shù)據(jù)幀
a). 如果是TAG的數(shù)據(jù)幀,檢查該接收端口是否在該VLAN(數(shù)據(jù)幀中所攜帶的VLAN TAG)中
- 接收端口在該VLAN中,則在該VLAN中根據(jù)交換原理(即,'源MAC學(xué)習(xí),目的MAC轉(zhuǎn)發(fā)'的原理)交換該數(shù)據(jù)包
- 接收端口不在該VLAN中,丟棄該數(shù)據(jù)幀
b). 如果是UNTAG的數(shù)據(jù)幀,檢查該接收端口是否在某個(gè)VLAN中的屬性是UNTAG
- 接收端口在某個(gè)VLAN中的屬性是UNTAG的,則在該VLAN中根據(jù)交換原理交換該數(shù)據(jù)包
- 接收端口在任何VLAN中的屬性都不是UNTAG的,丟棄該數(shù)據(jù)包
注:根據(jù)這個(gè)原理可知,一個(gè)端口最多在一個(gè)VLAN中的屬性是UNTAG的,否則,收到一個(gè)UNTAG的數(shù)據(jù)幀之后,就無法確定在哪個(gè)VLAN中進(jìn)行交換。其實(shí),端口UNTAG所在的VLAN,
2). 端口發(fā)送數(shù)據(jù)幀
a).檢查該端口在該VLAN(就是交換該數(shù)據(jù)幀的VLAN)中的屬性
- 該端口在該VLAN種的屬性是TAG的,發(fā)送的數(shù)據(jù)幀為TAG的數(shù)據(jù)幀
- 該端口在該VLAN種的屬性是UNTAG的,發(fā)送的數(shù)據(jù)幀為UNTAG的數(shù)據(jù)幀
注:由于數(shù)據(jù)已經(jīng)被交換到該端口,說明該端口肯定在該VLAN里。
武漢海翎光電科技有限公司是一家集自主研發(fā)、生產(chǎn)、 銷售、集成業(yè)務(wù)、服務(wù)為一體的高新技術(shù)企業(yè)。公司積極響應(yīng)國家戰(zhàn)略布局,重點(diǎn)推進(jìn)自主可控國產(chǎn)化產(chǎn)品的開發(fā)與應(yīng)用。為加強(qiáng)自主可控產(chǎn)業(yè)在各領(lǐng)域的競爭力,豐富產(chǎn)品類型的廣度 與深度,聯(lián)合高校成立技術(shù)研發(fā)中心,完成了基于全國產(chǎn)系列 的網(wǎng)絡(luò)通信產(chǎn)品、嵌入式單板計(jì)算機(jī)產(chǎn)品,同時(shí)在結(jié)合原有技 術(shù)的基礎(chǔ)上構(gòu)建起智能健康診斷平臺、智能巡檢平臺、大數(shù)據(jù) 處理平臺等。能夠?yàn)橛脩粼谛畔踩⒕W(wǎng)絡(luò)通信、特種設(shè)備、 云計(jì)算和圖像識別等領(lǐng)域提供解決方案。