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