1.介紹
首先要知道QinQ的字面意思,大家都知道數據幀在二層傳輸中一般是用802.1q協議在源MAC地址後面加一個vlan 標籤(內層標籤),而QinQ就在數據幀源MAC地址和內層標籤之間再加一個vlan標籤(外層標籤)。
其次爲什麼要用QinQ,兩個原因:1用戶規模太大,4094個vlan不夠用,qinq可以用4094*4094個vlan組合。2.其他技術相對QinQ來說,需要換設備啊或替換板卡啊等操作,所以比較貴。
2.華爲
華爲的QinQ一般用基本QinQ和靈活QinQ,所用拓撲圖如下。
通用配置介紹:
1.LSW1和LSW2的gi0/0/1上配置QinQ。外層VLAN是100或300。
2.PC的IP地址是192.168.10.x/24,X是PC編號。
2.1 基本QinQ
LSW1和LSW2配置一致,LSW3和LSW4配置一致,所以LSW2和LSW4的配置步驟不在寫出。
1.1 LSW1創建vlan
[SW1]vlan batch 100
1.2 LSW1配置qinq端口
[SW1]int gi 0/0/1
[SW1-GigabitEthernet0/0/1]port link-type dot1q-tunnel
[SW1-GigabitEthernet0/0/1]port default vlan 100
[SW1-GigabitEthernet0/0/1]q
1.3 LSW1配置trunk端口
[SW1]int GigabitEthernet 0/0/2
[SW1-GigabitEthernet0/0/2]port link-type trunk
[SW1-GigabitEthernet0/0/2]port trunk allow vlan 100
2.1 LSW3創建vlan
[SW3]vlan batch 10 30
2.2 LSW3配置上聯端口
[SW3]int gi 0/0/1
[SW3-GigabitEthernet0/0/1]port link-type trunk
[SW3-GigabitEthernet0/0/1]port trunk all vlan 10 30 ---->hybrid就用tag vlan
[SW3-GigabitEthernet0/0/1]q
2.3 LSW3配置下聯端口
[SW3]int gi0/0/2
[SW3-GigabitEthernet0/0/2]port link-type acc
[SW3-GigabitEthernet0/0/2]port def vlan 10
[SW3-GigabitEthernet0/0/2]q
[SW3]int gi 0/0/3
[SW3-GigabitEthernet0/0/3]port link-type access
[SW3-GigabitEthernet0/0/3]port default vlan 30
[SW3-GigabitEthernet0/0/3]q
3.測試
在LSW1的gi0/0/2端口抓包,設備之前相互ping操作,查看設備是否互通,並且數據幀的內外層VLAN與預先設置的一致。抓包可以看到192.168.10.1的外層vlan是100,內層是10;192.168.10.5的外層vlan是100,內層是30,全部通過。
2.2 靈活QinQ
基本QinQ外層vlan標籤只能由tunnel端口的default vlan唯一指定,而靈活QinQ可以定製外層標籤,比如指定拓撲中vlan 10的外層標籤是100,vlan 30的外層標籤是300。
LSW1和LSW2配置一致,LSW3和LSW4配置一致,所以LSW2和LSW4的配置步驟不在寫出。
1.1 LSW1創建vlan
[SW1]vlan batch 100 300
1.2 LSW1配置qinq端口
[SW1]int gi 0/0/1
[SW1-GigabitEthernet0/0/1]port link-type hybrid
[SW1-GigabitEthernet0/0/1]port hybrid untag 100 300
[SW1-GigabitEthernet0/0/1]qinq vlan-translation enable
[SW1-GigabitEthernet0/0/1]port vlan-stacking vlan 10 stack-vlan 100
[SW1-GigabitEthernet0/0/1]port vlan-stacking vlan 30 stack-vlan 300
[SW1-GigabitEthernet0/0/1]q
1.3 LSW1配置trunk端口
[SW1]int GigabitEthernet 0/0/2
[SW1-GigabitEthernet0/0/2]port link-type trunk
[SW1-GigabitEthernet0/0/2]port trunk allow vlan 100 300
2.1 LSW3創建vlan
[SW3]vlan batch 10 30
2.2 LSW3配置上聯端口
[SW3]int gi 0/0/1
[SW3-GigabitEthernet0/0/1]port link-type trunk
[SW3-GigabitEthernet0/0/1]port trunk all vlan 10 30 ---->hybrid就用tag vlan
[SW3-GigabitEthernet0/0/1]q
2.3 LSW3配置下聯端口
[SW3]int gi0/0/2
[SW3-GigabitEthernet0/0/2]port link-type acc
[SW3-GigabitEthernet0/0/2]port def vlan 10
[SW3-GigabitEthernet0/0/2]q
[SW3]int gi 0/0/3
[SW3-GigabitEthernet0/0/3]port link-type access
[SW3-GigabitEthernet0/0/3]port default vlan 30
[SW3-GigabitEthernet0/0/3]q
3.測試
在LSW1的gi0/0/2端口抓包,設備之前相互ping操作,查看設備是否互通,並且數據幀的內外層VLAN與預先設置的一致。192.168.10.1的外層vlan是100,內層是10;192.168.10.5的外層vlan是300,內層是30,全部符合要求。
3.思科
我在eve-ng虛擬機上選擇了cisco IOL文件所有L2交換機,但很遺憾抓包看不到外層VLAN,所以模擬qinq失敗了。下面有兩個不同的命令,一個是CCIE第5版書裏面給的命令,一個是思科官網ME3400E給的命令,大家有真機的話可以都試試。
1.CCIE書的命令
Switch(config)# interface gigabiethernet0/1------>選擇要配置qinq的端口
Switch(config-if)# switchport mode dot1q-tunnel
Switch(config-if)# switchport access vlan 100------>100就是外層vlan ID
Switch(config-if)# l2protocol-tunnel stp------->可以選VTP,CDP,STP,LLDP等2層協議
2.ME3400E的命令
Switch(config)# interface gigabiethernet0/1
Switch(config-if)# switchport mode trunk
Switch(config-if)# switchport vlan mapping 1-5 dot1q-tunnel 100
Switch(config-if)# switchport vlan mapping default drop
Switch(config-if)# exit