VLAN中tagged与untagged的处理
請教一個問題
一個數(shù)據(jù)包從PC機發(fā)出經(jīng)過ACCESS端口->TRUNK端口->TRunk->ACCESS->PC
數(shù)據(jù)包發(fā)生了怎么樣的變化,很是迷惑,賜教!
Tag 為IEEE802.1Q協(xié)議定義的VLAN的標記在數(shù)據(jù)幀中的標示;
ACCESS端口,TRUNK端口是廠家對某一種端口的叫法,并非IEEE802.1Q協(xié)議的標準定義;
這個數(shù)據(jù)交換的過程比較復(fù)雜,如果想解釋的話,首先要了解一下?幾個IEEE802.1Q協(xié)議的定理?;
1?、下面是定義的各種端口類型對各種數(shù)據(jù)幀的處理方法?;
in=進交換機? ? out=出交換機
| Tagged 數(shù)據(jù)幀 ? ? ? ?in | Tagged數(shù)據(jù)幀 ? ? ? ? out | Untagged數(shù)據(jù)幀 ? ? ? ? ? ? in | Untagged數(shù)據(jù)幀 ? ? ? ? ? out | |
| Tagged端口 | 原樣接收 | 原樣發(fā)送 | 按端口PVID打TAG標記 | 按照PVID打TAG標記 |
| Untagged端口 | 丟棄 | 去掉TAG標記 | 按端口PVID打TAG標記 | 原樣發(fā)送 |
?
2?、所謂的Untagged Port和tagged Port不是講述物理端口的狀態(tài),而是將是物理端口所擁有的某一個VID的狀態(tài),所以一個物理端口可以在某一個VID上是Untagged Port,在另一個VID上是tagged Port;?
3?、一個物理端口只能擁有一個PVID,當一個物理端口擁有了一個PVID的時候,必定會擁有和PVID的TAG等同的VID,而且在這個VID上,這個物理端口必定是Untagged Port;
4?、PVID的作用只是在交換機從外部接受到可以接受Untagged 數(shù)據(jù)幀的時候給數(shù)據(jù)幀添加TAG標記用的,在交換機內(nèi)部轉(zhuǎn)發(fā)數(shù)據(jù)的時候PVID不起任何作用;?
5?、擁有和TAG標記一致的VID的物理端口,不論是否在這個VID上是Untagged Port或者tagged Port,都可以接受來自交換機內(nèi)部的標記了這個TAG標記的tagged 數(shù)據(jù)幀;
6、擁有和TAG標記一致的VID的物理端口,只有在這個VID上是tagged Port,才可以接受來自交換機外部的標記了這個TAG標記的tagged 數(shù)據(jù)幀;?
以下是神州數(shù)碼對命令的定義(各個廠家對命令的定義可能不一定一致,但是都必須遵循上面的定理):
1、Trunk端口就是在一個物理端口上增加這個交換機所有VLAN的VID標示,并且除了和這個物理端口PVID標示一致的VID標示為Untagged Port外,在其他的VID上都是Tagged Port;
2、Access端口就是指擁有一個和PVID標記相同的VID的物理端口,在這個VID上,遵循定理一定為untagged Port;
在了解了以上的基礎(chǔ)理論之后,我們在來看一下樓主的問題:
一個數(shù)據(jù)包從PC機發(fā)出經(jīng)過ACCESS端口->TRUNK端口->TRunk->ACCESS->PC數(shù)據(jù)包發(fā)生了怎么樣的變化?
我們先把上述的描述變換為IEEE802.1Q的標準描述:
一個數(shù)據(jù)包從PC機發(fā)出經(jīng)過(Untagged 數(shù)據(jù)幀)
ACCESS端口(PVID定義為100,VID=100=Untagged Port)->
TRUNK端口(PVID定義為1〈出廠配置,沒有更改〉,VID=1=Untagged Port,VID=100=tagged Port)->
另一個交換機的TRunk端口(PVID定義為1〈出廠配置,沒有更改〉,VID=1=Untagged Port,VID=100=tagged Port)->
另一個交換機的ACCESS端口(PVID定義為100,VID=100=Untagged Port)->
PC數(shù)據(jù)包發(fā)生了怎么樣的變化?(Untagged 數(shù)據(jù)幀)
首先假設(shè)兩臺交換機剛剛開機(MAC地址表為空)從PC機發(fā)出的數(shù)據(jù)幀進入交換機的ACCESS端口以后,會按照這個端口的PVID打100的Tag標記,根據(jù)交換機的轉(zhuǎn)發(fā)原理,交換機會把這個數(shù)據(jù)幀轉(zhuǎn)發(fā)給VID=100的所有端口(除了進口以外),這個過程叫做VLAN Flood;參照上面的定理1;
由于Trunk端口擁有VID=100,所以才可接受這個標記Tag為100的tagged數(shù)據(jù)幀;參照上面的定理5;
由于Trunk端口在VID=100上為tagged Port,所以在發(fā)送數(shù)據(jù)幀出交換機的時候,不改變Tagged數(shù)據(jù)幀的結(jié)構(gòu);參照上面的定理1;
到了另一個交換機的Trunk端口的時候,由于Trunk端口擁有VID=100,所以才可接受這個標記Tag為100的tagged數(shù)據(jù)幀;參照上面的定理6;
另一個交換機的Trunk端口,接收到標記tag為100的tagged數(shù)據(jù)幀,并不作任何的更改;參照上面的定理1;
另一個交換機收到到標記tag為100的tagged數(shù)據(jù)幀,根據(jù)交換機的轉(zhuǎn)發(fā)原理,交換機會把這個數(shù)據(jù)幀轉(zhuǎn)發(fā)給VID=100的所有端口(除了進口以外);參照交換機交換原理(受到一個未知目的MAC數(shù)據(jù)幀);
這樣另一個交換機的ACCESS端口就可以收到標記tag為100的tagged數(shù)據(jù)幀;參照上面的定理5;
另一個交換機的ACCESS端口在發(fā)出標記tag為100的tagged數(shù)據(jù)幀的時候,會去掉TAG標記,轉(zhuǎn)發(fā)untagged數(shù)據(jù)幀給PC;參照上面的定理1;
這樣PC機就收到了這個數(shù)據(jù);
************************************************************************************************
Access、Hybrid和Trunk三種模式的理解
Tag,untag以及交換機的各種端口模式是網(wǎng)絡(luò)工程技術(shù)人員調(diào)試交換機時接觸最多的概念了,然而筆者發(fā)現(xiàn)在實際工作中技術(shù)人員往往對這些概念似懂非懂,筆者根據(jù)自己的理解再結(jié)合一個案例,試圖向大家闡明這些概念
untag就是普通的ethernet報文,普通PC機的網(wǎng)卡是可以識別這樣的報文進行通訊;
tag報文結(jié)構(gòu)的變化是在源mac地址和目的mac地址之后,加上了4bytes的vlan信息,也就是vlan tag頭;一般來說這樣的報文普通PC機的網(wǎng)卡是不能識別的
下圖說明了802.1Q封裝tag報文幀結(jié)構(gòu)
帶802.1Q的幀是在標準以太網(wǎng)幀上插入了4個字節(jié)的標識。其中包含:
2個字節(jié)的協(xié)議標識符(TPID),當前置0x8100的固定值,表明該幀帶有802.1Q的標記信息。
2個字節(jié)的標記控制信息(TCI),包含了三個域。
Priority域,占3bits,表示報文的優(yōu)先級,取值0到7,7為最高優(yōu)先級,0為最低優(yōu)先級。該域被802.1p采用。
規(guī)范格式指示符(CFI)域,占1bit,0表示規(guī)范格式,應(yīng)用于以太網(wǎng);1表示非規(guī)范格式,應(yīng)用于Token Ring。
VLAN ID域,占12bit,用于標示VLAN的歸屬。
以太網(wǎng)端口有三種鏈路類型:Access、Hybrid和Trunk。
Access類型的端口只能屬于1個VLAN,一般用于連接計算機的端口;
Trunk類型的端口可以允許多個VLAN通過,可以接收和發(fā)送多個VLAN的報文,一般用于交換機之間連接的端口;
Hybrid類型的端口可以允許多個VLAN通過,可以接收和發(fā)送多個VLAN的報文,可以用于交換機之間連接,也可以用于連接用戶的計算機。
Hybrid端口和Trunk端口在接收數(shù)據(jù)時,處理方法是一樣的,唯一不同之處在于發(fā)送數(shù)據(jù)時:Hybrid端口可以允許多個VLAN的報文發(fā)送時不打標簽,而Trunk端口只允許缺省VLAN的報文發(fā)送時不打標簽。
在這里先要向大家闡明端口的缺省VLAN這個概念
Access端口只屬于1個VLAN,所以它的缺省VLAN就是它所在的VLAN,不用設(shè)置;
Hybrid端口和Trunk端口屬于多個VLAN,所以需要設(shè)置缺省VLAN ID。缺省情況下,Hybrid端口和Trunk端口的缺省VLAN為VLAN 1
如果設(shè)置了端口的缺省VLAN ID,當端口接收到不帶VLAN Tag的報文后,則將報文轉(zhuǎn)發(fā)到屬于缺省VLAN的端口;當端口發(fā)送帶有VLAN Tag的報文時,如果該報文的VLAN ID與端口缺省的VLAN ID相同,則系統(tǒng)將去掉報文的VLAN Tag,然后再發(fā)送該報文。
注:對于華為交換機缺省VLAN被稱為“Pvid Vlan”, 對于思科交換機缺省VLAN被稱為“Native Vlan”
交換機接口出入數(shù)據(jù)處理過程如下:??
Acess端口收報文:
收到一個報文,判斷是否有VLAN信息:如果沒有則打上端口的PVID,并進行交換轉(zhuǎn)發(fā),如果有則直接丟棄(缺省)
Acess端口發(fā)報文:
將報文的VLAN信息剝離,直接發(fā)送出去?
trunk端口收報文:?
收到一個報文,判斷是否有VLAN信息:如果沒有則打上端口的PVID,并進行交換轉(zhuǎn)發(fā),如果有判斷該trunk端口是否允許該 VLAN的數(shù)據(jù)進入:如果可以則轉(zhuǎn)發(fā),否則丟棄
trunk端口發(fā)報文:
比較端口的PVID和將要發(fā)送報文的VLAN信息,如果兩者相等則剝離VLAN信息,再發(fā)送,如果不相等則直接發(fā)送
hybrid端口收報文:?
收到一個報文,判斷是否有VLAN信息:如果沒有則打上端口的PVID,并進行交換轉(zhuǎn)發(fā),如果有則判斷該hybrid端口是否允許該VLAN的數(shù)據(jù)進入:如果可以則轉(zhuǎn)發(fā),否則丟棄(此時端口上的untag配置是不用考慮的,untag配置只對發(fā)送報文時起作用)
hybrid端口發(fā)報文:
1、判斷該VLAN在本端口的屬性(disp interface 即可看到該端口對哪些VLAN是untag, 哪些VLAN是tag)
2、如果是untag則剝離VLAN信息,再發(fā)送,如果是tag則直接發(fā)送
以下案例可以幫助大家深入理解華為交換機的hybrid端口模式
[Switch-Ethernet0/1]int e0/1
[Switch-Ethernet0/1]port link-type hybrid
[Switch-Ethernet0/1]port hybrid pvid vlan 10
[Switch-Ethernet0/1]port hybrid vlan 10 20 untagged
[Switch-Ethernet0/1] int e0/2
[Switch-Ethernet0/2]port link-type hybrid
[Switch-Ethernet0/2]port hybrid pvid vlan 20
[Switch-Ethernet0/2]port hybrid vlan 10 20 untagged
此時inter e0/1和inter e0/2下的所接的PC是可以互通的,但互通時數(shù)據(jù)所走的往返vlan是不同的。
以下以inter e0/1下的所接的pc1訪問inter e0/2下的所接的pc2為例進行說明
pc1所發(fā)出的數(shù)據(jù),由inter0/1所在的pvid vlan10封裝vlan10的標記后送入交換機,交換機發(fā)現(xiàn)inter e0/2允許vlan 10的數(shù)據(jù)通過,于是數(shù)據(jù)被轉(zhuǎn)發(fā)到inter e0/2上,由于inter e0/2上vlan 10是untagged的,于是交換機此時去除數(shù)據(jù)包上vlan10的標記,以普通包的形式發(fā)給pc2,此時pc1->p2走的是vlan10
再來分析pc2給pc1回包的過程,pc2所發(fā)出的數(shù)據(jù),由inter0/2所在的pvid vlan20封裝vlan20的標記后送入交換機,交換機發(fā)現(xiàn)inter e0/1允許vlan 20的數(shù)據(jù)通過,于是數(shù)據(jù)被轉(zhuǎn)發(fā)到inter e0/1上,由于inter e0/1上vlan 20是untagged的,于是交換機此時去除數(shù)據(jù)包上vlan20的標記,以普通包的形式發(fā)給pc1,此時pc2->pc1走的是vlan20
總結(jié)
以上是生活随笔為你收集整理的VLAN中tagged与untagged的处理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Hibernate3 jar包的作用[转
- 下一篇: [算法][算法复杂度]常用算法复杂度速查