基本原理
QinQ是指在802.1Q VLAN的基础上增加一层802.1Q VLAN标签,从而拓展VLAN的使用空间。在公网的传输过程中,设备只根据外层VLAN Tag转发报文,并根据报文的外层VLAN Tag进行MAC地址学习,而用户的私网VLAN Tag将被当作报文的数据部分进行传输。
QinQ封装
QinQ封装是指如何把单层Q报文转换成双层Q报文。
根据不同的封装数据,QinQ可以分为几种不同类型,包括基本QinQ和灵活QinQ两大类。其中基本QinQ是指基于接口的QinQ,灵活QinQ包括基于VLAN ID的QinQ和基于802.1p优先级的QinQ,具体如下:
基于接口的QinQ封装
基于接口的封装是指进入一个接口的所有流量全部封装一个相同的外层VLAN Tag,封装方式不够灵活,用户业务区分不够细致,这种封装方式也称作基本QinQ。
基于VLAN ID的QinQ封装
基于VLAN ID的QinQ封装可以对不同的数据流选择是否封装外层Tag、封装何种外层Tag,因此这种封装方式也称作灵活QinQ。
例如:当同一用户的不同业务使用不同的VLAN ID时,可以根据VLAN ID区间进行分流。假设PC上网的VLAN ID范围是101~200;IPTV的VLAN ID范围是201~300;VoIP的VLAN ID范围是301~400。根据VLAN ID范围,对PC上网业务封装上外层Tag 100,对IPTV封装上外层Tag 300,对VoIP封装上外层Tag 500。
基于802.1p优先级的QinQ封装
基于802.1p优先级的QinQ封装可以对不同优先级的数据流选择是否封装外层Tag、封装何种外层Tag,因此这种封装方式也称作灵活QinQ。
例如:当同一用户的不同业务使用不同的优先级,如语音、视频、数据等。可以根据优先级为这些业务建立不同的数据传输通道,方便对业务进行区分。
QinQ的实现方式
QinQ的实现方式可分为以下两种:
- 基本QinQ基本QinQ是基于端口方式实现的。当端口上配置了基本QinQ功能后,不论从该端口收到报文是否带有VLAN Tag,设备都会为该报文打上本端口缺省VLAN的Tag。
- 如果收到的是带有VLAN Tag的报文,该报文就成为带双Tag的报文。
- 如果收到的是不带VLAN Tag的报文,该报文就成为带有本端口缺省VLAN Tag的报文。
- 灵活QinQ灵活QinQ是基于端口与VLAN相结合的方式实现的,即端口对接收的报文,可以通过单层VLAN tag转发,也可以通过双层VLAN tag转发。另外对于从同一个端口收到的报文,还可以根据VLAN的不同进行不同的操作,包括:
- 为具有不同内层VLAN ID的报文添加不同的外层VLAN Tag。
- 根据报文内层VLAN的802.1p优先级标记外层VLAN的802.1p优先级和添加不同的外层VLAN Tag。
通过使用灵活QinQ技术,在能够隔离运营商网络和用户网络的同时,又能够提供丰富的业务特性和更加灵活的组网能力。
QinQ/Dot1q终结子接口
终结主要是指设备对报文的单层或者双层Tag进行识别,然后根据后续的转发行为对单层或者双层Tag进行剥离或继续传送。
终结一般在路由子接口上执行,即:终结子接口。
如果路由子接口是对报文的单层Tag终结,那么该子接口称为Dot1q终结子接口。
如果路由子接口是对报文的双层Tag终结,那么该子接口称为QinQ终结子接口。
Dot1q终结子接口和QinQ终结子接口不支持透传不带VLAN的报文,收到不带VLAN的报文会直接丢弃。
QinQ终结子接口具体的实现方法、功能和具体的应用场景有一定关系,下文根据不同的场景进行说明。