说明:本文介绍部分是我在网络收集整理并添加提供。
Qinq技术介绍与实战
Qinq介绍
Qinq就是为用户提供一种较为简单的二层***隧道。最核心的思想就是将用户私网VLAN tag封装到公网VLANtag上,报文带着两层tag穿越服务商的骨干网络。在用户端口上使QinQ功能时,都会为每个用户分配一个Customer-ID。其中报文中的两层tag标签包括内层ce-vid--VLAN标签和外层pe-vid-Qint标签。
那么问题来了,为什么要带两层标签呢?
我们知道,普通VLAN中的一个VLAN标签是用来区分用户的,但如果想要同时区分用户又区分业务类型,那该怎么办呢?下图是一个总公司下面连接了两个分支子公司,而各分支子公司中已对不同部门的员工采用了VLAN进行区分,但两个子公司中相同部门VLAN ID规划是重叠的。这样如果数据帧中只采用一层VLAN标签,总公司就无法区分数据是来自哪个子公司的也就无法针对不同子公司的数据进行任何处理了。
为了解决这个问题,我们可以设想在总公司的交换机上为各子公司创建了不同的VLAN。这样当连接对应子公司的总公司交换机端口收到数据帧后再在数据帧外面添加一层VLAN标签(此时数据帧中就有两层VLAN标签了,原来的VLAN标签称之为内层VLAN标签,新添加的称之为外层VLAN标签),如为子公司1和子公司2的数据帧分别添加的外层VLAN标签为VLAN 10和VLAN 20,这样就可实现在总公司中对来自不同子公司的数据进行区分了,也可以对来自这两个子公司的数据提供不同的服务,即差分服务了。
如上文问题中所说,VLAN是用来区别用户用的,即每个用户都会有一个自己的VLAN区域,可是实际中,服务提供商所提供的vlan ID资源不仅只有4094个,而且还需要服务提供商来管理用户的VLAN号,用户是没有权利来规划VLAN的。那么VLAN ID紧缺的的问题该怎么解决呢?
QinQ协议就很好的解决了这个问题,它向用户提供一个唯一的公网VLAN ID,这个特殊的VLANID被称作Customer-ID,将用户私网VLAN tag封装在这个新的Customer-ID中,依靠它在公网中传播,用户私网VLAN ID在公网中被屏蔽,从而大大地节省了服务提供商紧缺的VLAN ID资源。如下图。
双层VLAN标签可以当作单层VLAN标签使用,即仅使用新添加的外层公网VLAN标签,内层私网VLAN可以作为数据来传输,整个数据帧中的VLAN标签由内、外双层VLAN标签共同决定,这样一来,就相当于可以使用的VLAN ID数量达到了4094×4094个了。以此来达到扩展VLAN空间的目的。通过这样的双层VLAN标签封装,可以使私网VLAN ID可以在公网上透传,既解决了用户VLAN ID的安全性问题和由用户自己规划私网VLAN ID的需求问题,又解决了ISP的VLAN ID空间不足的问题,因为在ISP中可以为需要相互访问的用户配置相同的外层VLAN,也只需为来自同一用户网络的不同VLAN提供一个VLAN ID。
QinQ小经典拓扑实战
一:实验拓扑图:
分析:
PC1属于VLAN 10,此时的数据帧中被打入一层标签,是属于内层标签。数据帧在经过公司总部交换机时,再次被打伤VLAN 100 标签,此标签属于外部标签。经过路由器时, 会脱掉标签,终结掉tag,路由器会根据数据包中的源ip地址和目标ip地址与自己的ARP缓存表中进行匹配。从路由器出来之后会再次打上标签。
二:实验目标
1:实现解决VLAN ID 不够用的问题
2:理解数据帧的脱包过程(两层标签终结VLAN)
3:实现不同地域相同部门的通信
三:实验代码
Sw2
[Huawei]vlan bat 10 20
[Huawei-Vlanif10]int e0/0/1
[Huawei-Ethernet0/0/1]port link-type access
[Huawei-Ethernet0/0/1]port default vlan 10
[Huawei-Ethernet0/0/2]int e0/0/2
[Huawei-Ethernet0/0/2]port link-type access
[Huawei-Ethernet0/0/2]port default vlan 20
[Huawei-Ethernet0/0/2]int e0/0/3
[Huawei-Ethernet0/0/5]port link-type trunk
[Huawei-Ethernet0/0/5]port trunk allow-pass vlan 10 20
Sw3
[Huawei]vlan 10
[Huawei-vlan10]int e0/0/3
[Huawei-Ethernet0/0/3]port link-type access
[Huawei-Ethernet0/0/3]port default vlan 10
[Huawei-Ethernet0/0/3]int e0/0/2
[Huawei-Ethernet0/0/5]port link-type trunk
[Huawei-Ethernet0/0/2]port trunk allow-pass vlan 10
Sw1
[Huawei]vlan bat 100 200
[Huawei]int e0/0/1
[Huawei-Ethernet0/0/1]port link-type dot1q-tunnel
[Huawei-Ethernet0/0/1]port default vlan 100
[Huawei-Ethernet0/0/1]int e0/0/2
[Huawei-Ethernet0/0/2]port link-type dot1q-tunnel
[Huawei-Ethernet0/0/2]port default vlan 200
[Huawei-Ethernet0/0/2]int g0/0/1
[Huawei-GigabitEthernet0/0/1]port link-type trunk
[Huawei-GigabitEthernet0/0/1]port trunk allow-pass vlan 100 200
R1
[Huawei]dhcp enable
[Huawei]int g0/0/0.100
[Huawei-GigabitEthernet0/0/0.100]qinq termination pe-vid 100 ce-vid 10 to 20
[Huawei-GigabitEthernet0/0/0.100]ip add 192.168.10.1 24
[Huawei-GigabitEthernet0/0/0.100]dhcp select interface
[Huawei-GigabitEthernet0/0/0.100]int g0/0/0.200
[Huawei-GigabitEthernet0/0/0.200]qinq termination pe-vid 200 ce-vid 10
[Huawei-GigabitEthernet0/0/0.200]ip add 192.168.20.1 24
[Huawei-GigabitEthernet0/0/0.200]dhcp select interface
测试
Pc1
#在同一公司分部上不同部门的员工不能通行
Pc3
#在不同抵御相同部门下的公司是可以通信的。
抓包分析
#在路由器上抓reply包。如图外层为LAN 200,内层为VLAN 10,并且说明QinQ配置已经生效,
思考:
在PC 1 ping PC 3的回包过程中,数据帧到达路由器的时候,数据帧是否带有tag以及路由器是怎么区分回包走的是内层10的还是内层20的?
#由上图得知,回包是带有两层tag的,在路由器的路由表中是记录的回包的路径的,所以数据帧是可以找到回包路的。