IEEE802.1Q中定義的VLAN Tag域中隻有12個比特位用於表示VLAN ID,所以設備最多可以支持4094個VLAN。在實際應用中,尤其是在城域網中,需要大量的VLAN來隔離用戶,4094個VLAN遠遠不能滿足需求。
設備提供的端口QinQ特性是一種簡單、靈活的二層VPN技術,它通過在運營商網絡邊緣設備上為用戶的私網報文封裝外層VLAN Tag,使報文攜帶兩層VLAN Tag穿越運營商的骨幹網絡(公網)。
在公網中,設備隻根據外層VLAN Tag對報文進行轉發,並將報文的源MAC地址表項學習到外層Tag所在VLAN的MAC地址表中,而用戶的私網VLAN Tag在傳輸過程中將被當作報文中的數據部分來進行傳輸。
QinQ特性使得運營商可以用一個VLAN為含有多個VLAN的用戶網絡服務。如圖1所示,用戶網絡A的私網VLAN為VLAN 1~10,用戶網絡B的私網VLAN為VLAN 1~20。運營商為用戶網絡A分配的VLAN為VLAN 3,為用戶網絡B分配的VLAN為VLAN 4。當用戶網絡A的帶VLAN Tag的報文進入運營商網絡時,報文外麵會被封裝上一層VLAN ID為3的VLAN Tag;當用戶網絡B的帶VLAN Tag的報文進入運營商網絡時,報文外麵會被封裝上一層VLAN ID為4的VLAN Tag。這樣,不同用戶網絡的報文在公網傳輸時被完全分開,即使兩個用戶網絡的VLAN範圍存在重疊,在公網傳輸時也不會產生混淆。
圖1 QinQ功能示意圖
QinQ特性使網絡最多可以提供4094X4094個VLAN,滿足城域網對VLAN數量的需求,它主要解決了如下幾個問題:
l 緩解日益緊缺的公網VLAN ID資源問題。
l 用戶可以規劃自己的私網VLAN ID,不會導致和公網VLAN ID衝突。
l 為小型城域網或企業網提供一種較為簡單的二層VPN解決方案。
QinQ報文在公網傳輸時帶有雙層VLAN Tag,內層VLAN Tag為用戶私網VLAN Tag,外層VLAN Tag為運營商分配給用戶的VLAN Tag,報文結構如圖2所示。
圖2 QinQ的報文結構
& 說明:
接口的MTU值默認為1500字節。當為報文加上外層VLAN Tag後,報文的長度會增加4個字節,建議用戶適當增加運營商網絡中各接口的MTU(Maximum Transmission Unit,最大傳輸單元)值,至少為1504字節。
QinQ可分為兩種:基本QinQ和靈活QinQ。
(1) 基本QinQ
基本QinQ是基於端口方式實現的。開啟端口的基本QinQ功能後,當該端口接收到報文,設備會為該報文打上本端口缺省VLAN的VLAN Tag。如果接收到的是已經帶有VLAN Tag的報文,該報文就成為雙Tag的報文;如果接收到的是不帶VLAN Tag的報文,該報文就成為帶有端口缺省VLAN Tag的報文。
(2) 靈活QinQ
靈活QinQ是對QinQ的一種更靈活的實現,它是基於端口與VLAN相結合的方式實現的。除了能實現所有基本QinQ的功能外,對於同一個端口接收的報文還可以根據不同的VLAN做不同的動作,可以實現以下功能:
l 為具有不同內層VLAN ID的報文添加不同的外層VLAN Tag。
l 根據報文的原有內層VLAN的802.1p優先級標記外層VLAN報文的802.1p優先級。
l 可以在添加外層VLAN Tag的同時對內層用戶VLAN ID進行修改。
TPID(Tag Protocol Identifier,標簽協議標識)是VLAN Tag中的一個字段,用於表示VLAN Tag的協議類型,IEEE 802.1Q協議規定該字段的取值為0x8100。
IEEE802.1Q協議定義的以太網幀的VLAN Tag結構如圖3所示。
設備可以根據TPID值來識別報文中是否攜帶對應的VLAN Tag:當端口收到報文時,根據配置的TPID值與報文中相應的字段進行比較,如果二者一致,則表示報文中攜帶相應的VLAN Tag。
另外,不同廠商的設備可能將QinQ報文外層VLAN Tag的TPID字段設為不同的值。為了和這些設備兼容,用戶可以自行配置該TPID的值,使得發送到公網中的QinQ報文攜帶的TPID值與其他廠商相同,就可以實現與其他廠商的設備互通。
由於TPID字段在以太網報文中所處位置與不帶VLAN Tag的報文中協議類型字段所處位置相同,為避免網絡中報文轉發和接收造成混亂,不允許用戶將TPID值配置為表1中列舉的常用協議類型值。
協議類型 | 對應值 |
ARP | 0x0806 |
PUP | 0x0200 |
RARP | 0x8035 |
IP | 0x0800 |
IPv6 | 0x86DD |
PPPoE | 0x8863/0x8864 |
MPLS | 0x8847/0x8848 |
IPX/SPX | 0x8137 |
IS-IS | 0x8000 |
LACP | 0x8809 |
802.1x | 0x888E |
集群 | 0x88A7 |
設備保留 | 0xFFFD/0xFFFE/0xFFFF |