預備知識:html
tag, untag以及交換機的各類端口模式是網絡工程技術人員調試交換機時接觸最多的概念了,然而筆者發如今實際工做中技術人員每每對這些概念似懂非懂,筆者根據本身的理解再結合一個案例,試圖向你們闡明這些概念。網絡
untag就是普通的Ethernet報文,普通PC機的網卡是能夠識別這樣的報文進行通信;ide
tag報文結構的變化是在源mac地址和目的mac地址後,加上了4bytes的vlan信息,也就是vlan tag頭,通常來講這樣的報文普通PC機的網卡是不能識別的;spa
帶802.1Q的幀是在標準以太網幀上插入了4個字節的標識。其中包含:.net
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的歸屬。orm
以太網端口的三種鏈路類型:Access、Hybrid和Trunk:htm
Access類型的端口只能屬於1個VLAN, 通常用於鏈接計算機的端口;blog
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」。
交換機接口出入數據處理過程:
Access端口收報文:
收到電腦或者其餘設備的一個報文,判斷是否有VLAN信息:若是沒有則打上端口的PVID, 並進行交換轉發;若是有則直接丟棄(缺省);重要
Access端口發報文:
將報文的VLAN信息剝離, 直接發送出去;
Trunk端口收報文
收到一個報文,判斷是否有VLAN信息:若是沒有則打上端口的PVID,並進行交換轉發;若是有則判斷該Trunk端口是否容許該VLAN的數據進入:若是能夠則轉發,不然丟棄;
Trunk端口發報文:
比較端口的PVID和將要發送報文的VLAN信息,若是二者相等則剝離VLAN信息,再發送,若是不相等則直接發送;
Hybrid端口收報文:
收到一個報文,判斷是否有VLAN信息:若是沒有則打上端口的PVID, 並進行交換轉發;若是有則判斷該Hybrid端口是否容許該VLAN的數據進入,若是能夠則轉發,不然丟棄(此時端口上的untag配置是不用考慮的,untag配置只是對發送報文時起做用)。
Hybrid端口發報文
一、判斷該VLAN在本端口的屬性(disp interface便可看到該端口對哪些VLAN是untag,哪些VLAN是tag);
二、若是是untag則剝離VLAN信息,再發送,若是是tag則直接發送;
如下案例能夠幫助你們深刻理解華爲交換機的Hybrid端口模式:
[html] view plain copy [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封裝vlan 10的標記後送入交換機,交換機發送inter e0/2容許vlan 10的數據經過,因而數據被轉發到inter e0/2上,因爲inter e0/2上的vlan 10是untagged的,因而交換機此時去除數據包上的vlan 10的標記,以普通包的形式發給pc2,此時pc1->pc2走的是vlan 10。
再來分析pc2給pc1回包的過程:
pc2所發出的數據,由inter0/2所在的pvid vlan 20封裝vlan 20的標記後送入交換機,交換機發送inter e0/1容許vlan 20的數據經過,因而數據被轉發到inter e0/1上,因爲inter e0/1上的vlan 20是untagged的,因而交換機此時去除數據包上的vlan 20的標記,以普通包的形式發給pc1,此時pc2->pc1走的是vlan 20。
ps:來源http://blog.csdn.net/ixidof/article/details/7851774