Untag 就是普通的 ethernet 報文,普通 PC 機的網卡是可以識別這樣的報文進行通訊。 Tag 報文結構的變化是在源 mac 地址和目的 mac 地址之後,加上了 4bytes 的 vlan 信息,也就是 vlan tag 頭,一般來說這樣的報文普通 PC 機的網卡是不能識別的。
帶 802.1Q 的幀是在標準以太網幀上插入了 4 個字節的標識,其中包含:
1) 2 個字節的協議標示符( TPID ),當前置 0X8100 的固定值,表明該幀帶有 802.1Q 的標記信息。
2) 2 個字節的標記控制信息( TCI ),包含了三個域:
l priority 域,佔 3bits ,表示報文的優先級,取值 0 到 7 , 7 爲最高優先級, 0 爲最低優先級,該域被 802.1Q 採用;
l 規範格式指示符域( CFI ),佔 1bits , 0 表示規範格式,應用於以太網, 1 表示非規範格式,應用於 Token Ring 。
l VLAN ID 域,佔 12bits ,用於標識 VLAN 的歸屬。
以太網端口的三種鏈路類型: access, trunk, hybrid
Access 類型的端口只能屬於 1 個 VLAN ,一般用於連接計算機的端口;
Trunk 類型的端口可以允許多個 VLAN 通過,可以接收和發送多個 VLAN 的報文,一般用於交換機之間連接的端口;
Hybrid 類型的端口可以允許多個 VLAN 通過,可以接收的發送多個 VLAN 的報文,可以用於交換機之間連接,也可以用於連接用戶的計算機。
Hybrid 端口可以允許多個 VLAN 的數據不帶 tag ,而 802.1Q 的 trunk 只能是 native vlan (即 pvid )對應的 vlan 的數據不帶 tag ,應該說 hybrid 可以實現 trunk 端口的特性。實際使用時都可以用 hybrid 端口,而不用 trunk 。
Hybrid 端口和 Trunk 端口在接收數據時,處理方法是一樣的,唯一的不同之處在於發送數據時, hybrid 端口可以允許多個 VLAN 的報文發送時不打標籤,而 trunk 端口只允許缺省 VLAN 的報文發送時不打標籤。
交換機接口出入數據處理過程:
接收:
1. Access 端口
1) 收到一個二層幀
2) 判斷是否有 VLAN 標籤,沒有轉到第 3 步,有則轉到第 4 步
3) 打上端口的 PVID ,並進行交換轉發
4) 若 VLAN 標籤和 PVID 一致,轉發 VLAN 幀,否則直接丟棄
2. Trunk 端口
1) 收到一個二層幀
2) 判斷是否有 VLAN 標籤,沒有轉到第 3 步,有則轉到第 4 步
3) 打上端口的 PVID ,並進行交換轉發
4) 判斷該 trunk 端口是否允許該 VLAN 幀進入,允許則轉發,否則直接丟棄
注意: trunk 口允許或不允許 VLAN 幀,是對進入的幀而言的,對出去的幀沒有限制
3. hybrid 端口
1) 收到一個二層幀
2) 判斷是否有 VLAN 標籤,沒有轉到第 3 步,有則轉到第 4 步
3) 打上端口的 PVID ,並進行交換轉發
4) 判斷該 hybrid 端口是否允許該 VLAN 幀進入,允許則轉發,否則直接丟棄。
可以看到, trunk 和 hybrid 口對接收到得數據幀的處理規則是一樣的。
發送:
1. Access 端口
將報文的 VLAN 信息剝離,直接發送出去
2. Trunk 端口
比較端口的 PVID 和將要發送報文的 VLAN 信息,如果兩者相等則剝離 VLAN 信息,再發送;如果不相等則直接發送
3. Hybrid 端口
判斷該 VLAN 在本端口的屬性( disp interface 即可看到該端口對哪些 VLAN 是 untag ,哪些 VLAN 是 tag ),如果是 untag 則剝離 VLAN 信息,再發送;如果是 tag 則直接發送。