QinQ知識全攻略,QinQ的基礎知識你了解多少?
定義
QinQ(802.1Q-in-802.1Q)技術是一項擴展VLAN空間的技術,通過在802.1Q標簽報文的基礎上再增加一層802.1Q的Tag來達到擴展VLAN空間的功能,可以使私網VLAN透傳公網。由于在骨干網中傳遞的報文有兩層802.1Q Tag(一層公網Tag,一層私網Tag),即802.1Q-in-802.1Q,所以稱之為QinQ協議。
如下圖所示用戶報文在公網上傳遞時攜帶了兩層Tag,內層是私網Tag,外層是公網Tag。
目的
隨著以太網技術在網絡中的大量部署,利用802.1Q VLAN對用戶進行隔離和標識受到很大限制。因為IEEE802.1Q中定義的VLAN Tag域只有12個比特,僅能表示4096個VLAN,無法滿足以太網中標識大量用戶的需求,于是QinQ技術應運而生。
QinQ是通過在原有的802.1Q報文的基礎上增加一層802.1Q標簽來實現的,使得VLAN數量增加到4094×4094,擴展了VLAN空間。
隨著以太網的發展以及精細化運作的要求,QinQ的雙層標簽又有了進一步的使用場景。它的內外層標簽可以代表不同的信息,如內層標簽代表用戶,外層標簽代表業務。另外,QinQ報文帶著兩層Tag穿越公網時,內層Tag透明傳送,也是一種簡單、實用的VPN技術。因此它又可以作為核心MPLS VPN在以太網VPN的延伸,最終形成端到端的VPN技術。
優點
- 擴展VLAN,對用戶進行隔離和標識不再受到限制。
- QinQ內外層標簽可以代表不同的信息,如內層標簽代表用戶,外層標簽代表業務,更利于業務的部署。
- QinQ封裝、終結的方式很豐富,幫助運營商實現業務精細化運營。
- 解決日益緊缺的公網VLAN ID 資源問題
- 用戶可以規劃自己的私網VLNA ID
- 提供一種較為簡單的二層VPN解決方案
- 使用戶網絡具有較高的獨立性
QinQ封裝結構
QinQ封裝報文是在無標簽的以太網數據幀的源MAC地址字段后面加上兩個VLAN標簽構成。
字段解釋
QinQ抓包示例
QinQ工作原理
在公網的傳輸過程中,設備只根據外層VLAN Tag轉發報文,并根據報文的外層VLAN Tag進行MAC地址學習,而用戶的私網VLAN Tag將被當作報文的數據部分進行傳輸。即使私網VLAN Tag相同,也能通過公網VLAN Tag區分不同用戶。
企業A和企業B的私網VLAN分別為VLAN 1~10和VLAN 1~20。公網為企業A和企業B分配的公網VLAN分別為VLAN 3和VLAN 4。當企業A和企業B中帶VLAN Tag的報文進入公網時,報文外面就會被分別封裝上VLAN 3和VLAN 4的VLAN標簽。這樣,來自不同企業網絡的報文在公網中傳輸時被完全分開,即使這些企業網絡各自的VLAN范圍存在重疊,在公網中傳輸時也不會產生沖突。當報文穿過公網,到達公網另一側PE設備后,報文會被剝離公網為其添加的公網VLAN標簽,然后再傳送給用戶網絡的CE設備。
1.QinQ封裝
QinQ封裝是指如何把單層Q報文轉換成雙層Q報文。根據不同的封裝數據,QinQ可以分為幾種不同類型,包括基本QinQ和靈活QinQ兩大類。其中基本QinQ是指基于接口的QinQ,靈活QinQ包括基于VLAN ID的QinQ和基于802.1p優先級的QinQ,具體如下:
(1) 基于接口的QinQ封裝
基于接口的封裝是指進入一個接口的所有流量全部封裝一個相同的外層VLAN Tag,封裝方式不夠靈活,用戶業務區分不夠細致,這種封裝方式也稱作基本QinQ。
(2) 基于VLAN ID的QinQ封裝(靈活QinQ)
基于VLAN ID的QinQ封裝可以對不同的數據流選擇是否封裝外層Tag、封裝何種外層Tag,因此這種封裝方式也稱作靈活QinQ。
例如:當同一用戶的不同業務使用不同的VLAN ID時,可以根據VLAN ID區間進行分流。假設PC上網的VLAN ID范圍是101~200;IPTV的VLAN ID范圍是201~300;VoIP的VLAN ID范圍是301~400。根據VLAN ID范圍,對PC上網業務封裝上外層Tag 100,對IPTV封裝上外層Tag 300,對VoIP封裝上外層Tag 500。
(3) 基于802.1p優先級的QinQ封裝(基于流的靈活QinQ)
基于802.1p優先級的QinQ封裝可以對不同優先級的數據流選擇是否封裝外層Tag、封裝何種外層Tag,因此這種封裝方式也稱作靈活QinQ。
例如:當同一用戶的不同業務使用不同的優先級,如語音、視頻、數據等。可以根據優先級為這些業務建立不同的數據傳輸通道,方便對業務進行區分。
2.TPID(Tag Protocol Identifier)
標簽協議標識TPID(Tag Protocol Identifier)是VLAN Tag中的一個字段,表示VLAN Tag的協議類型,IEEE 802.1Q協議規定該字段的取值為0x8100。
IEEE802.1Q協議定義的以太網幀的VLAN Tag。802.1Q Tag位于SA(Source Address)和Length/Type之間。通過檢查對應的TPID值,設備可確定收到的幀承載的是運營商VLAN標記還是用戶VLAN標記。接收到幀之后,設備將配置的TPID值與幀中TPID字段的值進行比較。如果二者匹配,則該幀承載的是對應的VLAN標記。例如,如果幀承載TPID值為0x8100的VLAN標記,而用戶網絡VLAN標記的TPID值配置為0x8200,設備將認為該幀沒有用戶VLAN標記。也就是說,設備認為該幀是Untagged報文。
另外,不同運營商的系統可能將QinQ幀外層VLAN標記的TPID設置為不同值。為實現與這些系統的兼容性,可以修改TPID值,使QinQ幀發送到公網時,承載與特定運營商相同的TPID值,從而實現與該運營商設備之間的互操作性。以太網幀的TPID與不帶VLAN標記的幀的協議類型字段位置相同。為避免在網絡中轉發和處理數據包時出現問題,不可將TPID值設置為下表中的任意值:
**QinQ實現方式 **
1.基本QinQ
基本QinQ是基于端口方式實現的。開啟端口的基本QinQ功能后,當該端口接收到報文,設備會為該報文打上本端口缺省VLAN 的VLAN Tag。如果接收到的是已經帶有VLAN Tag的報文,該報文就成為雙Tag的報文;如果接收到的是不帶VLAN Tag的報文,該報文就成為帶有端口缺省VLAN Tag的報文。
基于端口的QinQ的缺點是外層VLAN Tag封裝方式固定,不能根據業務種類選擇外層VLAN Tag封裝的方式,從而很難有效支持多業務的靈活運營。
基本QinQ的報文處理過程:
- SW1收到VLAN ID為10和20的報文,將該報文發給SW2。
- SW2收到該報文后,在該報文原有Tag的外側再添加一層VLAN ID 為100的外層Tag。
- 帶著兩層Tag的用戶數據報文在網絡中按照正常的二層轉發流程轉發。
- SW3收到VLAN100的報文后,剝離報文的外層Tag(VLAN ID 為100)。將報文發送給SW4,此時報文只有一層Tag(VLAN ID 為10或20)。
- SW4收到該報文,根據VLAN ID和目的MAC地址進行相應的轉發。
基本QinQ的報文處理過程
2.靈活QinQ
靈活QinQ(Selective QinQ)可根據流分類的結果選擇是否打外層VLAN Tag,打上何種外層VLAN Tag。靈活QinQ可根據用戶的VLAN標簽、優先級、MAC地址、IP協議、IP源地址、IP目的地址、或應用程序的端口號進行流分類。
- 基于VLAN ID的靈活QinQ:為具有不同內層VLAN ID的報文添加不同的外層VLAN Tag。
- 基于802.1p優先級的靈活QinQ:根據報文的原有內層VLAN的802.1p優先級添加不同的外層VLAN Tag。
- 基于流策略的靈活QinQ:根據QoS策略添加不同的外層VLAN Tag。基于流策略的靈活QinQ能夠針對業務類型提供差別服務。
靈活QinQ功能是對基本QinQ功能的擴展,它比基本QinQ的功能更靈活。二者之間的主要區別是:
- 基本QinQ:對進入二層QinQ接口的所有幀都加上相同的外層Tag。
- 靈活QinQ:對進入二層QinQ接口的幀,可以根據不同的內層Tag而加上不同的外層Tag,對于用戶VLAN的劃分更加細致
QinQ配置命令介紹
(1) 配置接口類型為dot1q-tunnel
[Huawei-GigabitEthernet0/0/1] port link-type dot1q-tunnel
(2) 配置接口類型為dot1q-tunnel,該接口可以是物理接口,也可以是Eth-Trunk接口。
使能接口VLAN轉換功能;
Huawei-GigabitEthernet0/0/1] qinq vlan-translation enable
(3) 配置配置靈活QinQ
[Huawei-GigabitEthernet0/0/1] port vlan-stacking vlan vlan-id1 [ to vlan-id2 ] stack-vlan vlan-id3 [ remark-8021p 8021p-value ]
配置不同的內層VLAN疊加不同的外層VLAN,缺省情況下,外層VLAN優先級與內層VLAN優先級保持一致。
QinQ配置舉例
1.基本QinQ
實驗要求:
- 企業1與企業2接入同一個ISP網絡,并使用了重疊的VLAN空間。
- ISP通過QinQ技術,實現同一個企業的不同站點之間的數據交互。
- 為企業1規劃的VLAN ID為100,為企業2規劃的VLAN ID為200。
SW1配置如下:
[SW1] vlan batch 100 200
[SW1] interface GigabitEthernet 0/0/1
#配置GE0/0/1外層TAG為100
[SW1-GigabitEthernet0/0/1] port link-type dot1q-tunnel
[SW1 -GigabitEthernet0/0/1] port default vlan 100
[SW1] interface GigabitEthernet 0/0/2
#配置GE0/0/2外層TAG為200
[SW1-GigabitEthernet0/0/2] port link-type dot1q-tunnel
[SW1-GigabitEthernet0/0/2] port default vlan 200
[SW1] interface GigabitEthernet 0/0/3
[SW1-GigabitEthernet0/0/3] port link-type trunk
[SW1-GigabitEthernet0/0/3] port trunk allow-pass vlan 100 200
#配置外層VLAN tag的TPID值
[SW1-GigabitEthernet0/0/3] qinq protocol 9100
SW2配置與SW1類似,此處省略
2.靈活QinQ
靈活QinQ拓撲
實驗要求:
- 上網用戶和VoIP用戶通過SW1和SW2接入ISP網絡,通過ISP的網絡互相通信;企業為PC分配的內部VLAN為100,為VoIP電話分配的內部VLAN為300。
- 上網用戶和VoIP用戶分別以VLAN2和VLAN3通過ISP網絡。
SW1配置如下:
[SW1] vlan batch 2 3
[SW1] interface GigabitEthernet 0/0/1
[SW1-GigabitEthernet0/0/1] port link-type hybrid
[SW1-GigabitEthernet0/0/1] port hybrid untagged vlan 2 3
[SW1-GigabitEthernet0/0/1] qinq vlan-translation enable
[SW1-GigabitEthernet0/0/1] port vlan-stacking vlan 100 stack-vlan 2
[SW1-GigabitEthernet0/0/1] port vlan-stacking vlan 300 stack-vlan 3
[SW1-GigabitEthernet0/0/1] quit
[SW1] interface GigabitEthernet 0/0/2
[SW1-GigabitEthernet0/0/2] port link-type trunk
[SW1-GigabitEthernet0/0/2] port trunk allow-pass vlan 2 3
[SW1-GigabitEthernet0/0/2] quit
SW2配置與SW1類似,此處省略。