文章目录
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