QinQ 是 802.1Q in 802.1Q 的简称,是基于 IEEE 802.1Q 技术的一种比较简单的二层 VPN 协议。
IEEE 802.1Q 定义的 VLAN ID 域有 12 个比特,最多可以提供 4094 个 VLAN。但在实际应用中,尤其是在城域网中,需要大量的 VLAN 来隔离用户,4094 个 VLAN 远远不能满足需求。
QinQ 使整个网络最多可以提供 4094×4094 个 VLAN,满足了城域网对 VLAN 数量的需求。
它通过将一层 VLAN Tag 封装到私网报文上,使其携带两层 VLAN Tag 穿越运营商的骨干网络(又称公网),从而使运营商能够利用一个 VLAN 为包含多个 VLAN 的用户网络提供服务。
QinQ 具备以下优点:
缓解公网 VLAN 资源日益紧缺的问题 用户可以规划自己的私网 VLAN,不会导致与公网 VLAN 冲突 为用户提供了一种简单、灵活的二层 VPN 解决方案 当运营商进行 VLAN 规划时,用户网络不必更改原有配置,使用户网络具有了较强的独立性
QinQ报文在运营商网络中传输时带有双层VLAN Tag:
内层 VLAN Tag:为用户的私网 VLAN Tag,Customer VLAN Tag (简称 CVLAN)。设备依靠该 Tag 在私网中传送报文。
外层 VLAN Tag:为运营商分配给用户的公网 VLAN Tag, Service VLAN Tag(简称 SVLAN)。设备依靠该 Tag 在公网中传送 QinQ 报文。
在公网的传输过程中,设备只根据外层 VLAN Tag 转发报文,而内层 VLAN Tag 将被当作报文的数据部分进行传输。
QinQ 封装是指如何把单层 Q 报文转换成双层 Q 报文,封装主要发生在城域网面向用户的 UPE 接口上进行。
根据不同的封装数据, QinQ 可以分为几种不同类型,包括基于接口的 QinQ 和基于流的 QinQ 两大类,另外,还可以在路由子接口上进行特殊的 QinQ 封装,具体如下:
01 基于接口的 QinQ 封装
基于接口的封装是指进入一个接口的所有流量全部封装一个相同的外层 VLAN Tag,封装方式不够灵活,用户业务区分不够细致,这种封装方式也称作 QinQ 二层隧道。
02 基于流的 QinQ 封装
基于流的 QinQ 封装可以对进入接口的数据首先进行流分类,然后对于不同的数据流选择是否封装外层 Tag、封装何种外层 Tag,因此这种封装方式也称作二层灵活 QinQ。
例如:当同一用户的不同业务使用不同的 VLAN ID 时,可以根据 VLAN ID 区间进行分流。
假设 PC 上网的 VLAN ID 范围是 101~200;IPTV 的 VLAN ID 范围是 201~300;大客户的VLAN ID 范围是 301~400。面向用户的 UPE 收到业务数据后,根据 VLAN ID 范围,对 PC上网业务封装上外层 Tag 100,对 IPTV 封装上外层 Tag 300,对大客户封装上外层 Tag 500。
03 在路由子接口上进行 QinQ 封装
QinQ 封装一般在交换式接口上进行,但有一种特殊情况, QinQ 也可以在路由子接口上进行封装。
当 MPLS/IP 核心网采用 PWE3/VLL/VPLS 透传业务数据时, NPE 上的路由子接口可以根据用户 VLAN ID 封装外层 VLAN ID,通过外层 VLAN ID 接入 VLL/PWE3。此种方法可以通过一个子接口来透传多个标识用户的 VLAN ID,这种子接口也叫 QinQ Stacking 子接口。
这种封装方式也是基于流的 QinQ 封装方式,但 QinQ Stacking 子接口只能和L2VPN(PWE3/VLL/VPLS)业务结合起来才有意义,不支持三层转发功能。
终结主要是指设备对报文的单层或者双层 Tag 进行识别,然后根据后续的转发行为对单层或者双层 Tag 进行剥离或继续传送。
QinQ 技术在和 MPLS/IP 核心网连接时,根据不同的情况,会用到不同的终结方法。
终结一般在路由子接口上执行,即:终结子接口。
如果路由子接口是对报文的单层 Tag 终结,那么该子接口称为 Dot1q 终结子接口。
如果路由子接口是对报文的双层 Tag 终结,那么该子接口称为 QinQ 终结子接口。
QinQ 终结子接口根据终结的用户 VLAN Tag 的类型,通常分为两种子接口:
明确的 QinQ 终结子接口:两层 VLAN Tag 为固定的值。
模糊的 QinQ 终结子接口:两层 VLAN Tag 为范围值,即:终结的内、外层 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 Tag。
来自不同用户网络的报文在运营商网络中传输时被隔离,即使这些用户网络各自的 VLAN 范围存在重叠,因为分配到的公网 VLAN 不同,在运营商网络中传输时也不会产生冲突。
当报文穿过运营商网络,到达运营商网络另一侧 PE(Provider Edge,服务提供商网络边缘)设备后,报文被剥离公网 VLAN Tag,然后再传送给用户网络的 CE(Customer Edge,用户网络边缘)设备。
当端口上配置了 QinQ 功能后,不论从该端口收到的报文是否带有 VLAN Tag,设备都会为该报文添加本端口缺省 VLAN 的 Tag:
如果收到的是带有 VLAN Tag 的报文,该报文就成为带两层 Tag 的报文;
如果收到的是不带 VLAN Tag 的报文,该报文就成为带有本端口缺省 VLAN Tag 的报文。
通过上面的介绍可以看出, QinQ 技术的发展过程如下:
QinQ 二层隧道(基于接口的 QinQ)
—>灵活 QinQ(Selective QinQ/VLAN Stacking)
—> QinQ 增强
(QinQ Termination&Dot1q Termination&QinQ Stacking),并根据特定应用场景引入动态 QinQ。
QinQ 技术的主要作用为扩展 VLAN 数量及对用户业务进行分流,外层 Tag 可以代表个人业务的DSLAM+业务类型,以及企业业务的不同 VPN Site,或者批发业务的不同 ISP 等。
根据网络业务规划的需要, QinQ 技术可以部署在不同的网络层次,可以是接入层、汇聚层、承载层、核心层。
QinQ 技术主要与其它技术相结合,来帮助运营商精细化管理个人业务、企业业务和批发业务。