一、背景
在基于传统802.1q协议的二层局域网中,当两个用户网络需要通过ISP服务提供商(如城域以太网)互相访问时,ISP需要为每个接入用户分配一个VLAN,12比特的VLAN ID可用VLAN只有4094个,当接入用户变多,就会导致VLAN资源不足的问题。
为了扩展VLAN ID空间,就出现了QinQ技术,即802.1q in 802.1q 。
二、QinQ 即802.1q in 802.1q
在普通的VLAN部署方式下,在数据帧中只有一个802.1q标签头,只有单层VLAN标签;
QinQ在数据帧的原802.1q标签头基础上再增加一层802.1q标签头,实现两层VLAN标签目的;
这样,VLAN ID空间就由4094扩展到了4094*4094个,同时不再需要ISP对VLAN资源进行统一规划,ISP只需规划外层标签的VLAN资源,内层标签的VLAN资源用户可以自己规划;
通过在城域网的PE交换机上部署QinQ技术,PE交换机连接用户的接口具有添加和剥离外层VLAN标签的双重能力,即上行传输时对帧添加外层标签,而下行传输时又可以剥离帧中的外层标签来实现流量的正常转发;
ISP只需为有互访需求的用户配置相同的外层VLAN;
QinQ帧的封装过程发生在城域网侧连接用户的交换机端口上;
根据VLAN标签封装依据的不同可以分为:
1、基本QinQ封装
基本QinQ封装是基于端口的QinQ封装方式,会将进入一个端口的所有流量全部封装一个相同的外层VLAN标签;
基本QinQ封装相当于用一个外层VLAN标签映射同类用户的多个内层VLAN标签;
2、灵活QinQ封装
灵活QinQ封装是基于端口和VLAN结合的封装方式,对于同一个端口收到的数据帧可以根据不同的内层VLAN标签执行不同的外层标签封装;
灵活QinQ比基本QinQ的外层标签封装更加灵活,可以根据用户数据帧中原来的不同VLAN ID范围封装不同的外层VLAN标签;
灵活QinQ封装的实现方式:
1、基于VLAN ID的灵活QinQ
2、基于QoS策略的灵活QinQ
另外,基于802.1p优先级的灵活QinQ可以实现为不同802.1p优先级的数据帧添加不同的外层标签;
QinQ/Dot1q终结子接口:
QinQ/Dot1q终结指对数据帧的两层或者单层VLAN标签进行剥离,后面的数据传输和处理不再依据帧中的这些VLAN标签;
Dot1q终结子接口,路由子接口对数据帧的单层VLAN标签终结;
QinQ终结子接口,路由子接口对数据帧的两层VLAN标签终结;
为实现不同厂商设备的互通,需要调整QinQ外层VLAN标签的TPID值。
TPID Tag Protocol Identifier 标签协议标识是802.1q标签头的一个字段,用来表示VLAN标签的协议类型,缺省值0x8100,表示IEEE802.1q数据帧;
某些厂商可能会把外层标签的TPID值设为0x9100,设备在接收到帧后,将设备自身配置的TPID值与外层VLAN标签中的TPID值进行比较,如果TPID值相同,则该帧承载的是运营商标签,即外层标签,所以设备认为该帧仅承载了运营上VLAN标签,而把用户VLAN标签作为数据部分。
QinQ映射:
子接口在向外发送本地VLAN帧时,将帧的本地VLAN标签替换成外部VLAN标签;
在接收外部VLAN帧时,又将帧的外部VLAN标签替换成本地VLAN标签;
1to1的映射方式: 直接标签替换
部署QinQ映射功能的子接口收到单层VLAN标签的数据帧,将帧的单层标签映射为用户指定的单层标签,发送帧的过程相反;
2to1的映射方式:部署QinQ映射功能的子接口收到两层VLAN标签的数据帧,将帧两层标签的外层标签映射为用户指定的一层标签,发送帧的过程相反;
QinQ映射和VLAN映射的本质区别是QinQ映射是在路由子接口上应用的,而VLAN映射是在物理端口上应用的。
三、QinQ配置
1、基本QinQ配置:
PE交换机
vlan 100
interface gigabitether 0/0/1
port link-type dot1q-tunnel
port default vlan 100
2、调整QinQ外层VLAN标签的TPID值
interface gigabitether 0/0/2
qinq protocol 9100
3、配置对Untagged数据帧添加两层VLAN标签
vlan 100
interface gigabitether 0/0/1
port link-type hybrid
port untagged vlan 100
port vlan-stacking untagged stack-vlan 100 stack-inner-vlan 20
4、基于VLAN ID的灵活QinQ配置
interface gigabitether 0/0/1
port link-type hybrid
port untagged vlan 100
qing vlan-translation enable
port vlan-stacking vlan 10 to 50 stack-vlan 100
5、基于QoS策略的灵活QinQ配置
traffic classifier c1
if-match vlan-id 100 to 200
traffic behavior b1
nest top-most vlan-id 2
traffic policy p1
classifier c1 behavior b1
interface gigabitethernet 0/0/1
port link-type hybrid
port hybrid untagged vlan 2
traffic-policy p1 inbound
6、配置QinQ 1to1映射
interface gigabitethernet 0/0/1.1
qinq mapping vid 100 map-vlan vid 2
7、配置QinQ 2to1映射
interface gigabitethernet 0/0/1.1
qinq mapping pe-vid 2 ce-vid 100 map-vlan vid 20