1. 802.1Q-in-802.1Q(扩展 VLAN)特征
- 通过在 802.1Q 标签报文的基础上再增加一层 802.1Q 的 Tag 来达到扩展 VLAN 空间的功能
- 基于 802.1Q 封装的隧道协议
- 报文封装双层 VLAN Tag
- 可以使私网 VLAN 透传公网,在骨干网中传递的报文有两层 802.1Q Tag(一层公网 Tag,一层私网 Tag)
- QinQ 内外层标签可以代表不同的信息(如内层标签代表用户,外层标签代表业务,更利于业务的部署)
- QinQ 封装、终结的方式很丰富,帮助运营商实现业务精细化运营
- 解决紧缺的公网 VLAN ID 资源问题
- 用户可以自定义规划 VLAN ID
- 提供较为简单的二层 VPN 解决方案
- 使用户网络有较高的独立性
- 基本QinQ:对进入二层 QinQ 接口的所有帧都加上相同的外层 Tag
- 灵活QinQ:对进入二层 QinQ 接口的帧,可以根据不同的内层 Tag 而加上不同的外层 Tag,对于用户 VLAN 的划分更加细致
2. QinQ 帧格式
QinQ 报文比 802.1Q 报文多四个字节
- 在组网时适当增加运营商网络中各接口的最大帧长(至少为 1504 字节)
- 交换机缺省支持的最大帧长超过 1504 字节(可通过接口下 jumboframe 命令更改)
QinQ 帧格式解析
- Destination address:目的 MAC 地址
- Source address:源 MAC 地址
- Type(TPID):帧类型。取值为 0x8100 时表示 802.1Q Tag 帧,对于内层 VLAN tag,该值设置为 0x8100;对于外层 VLAN tag,有下列几种类型:
- 0x8100:思科路由器使用
- 0x88A8:Extreme Networks switches使用
- 0x9100:Juniper路由器使用
- 0x9200:Several路由器使用
- PRI:帧的优先级,取值范围为 0~7,值越大优先级越高
- CFI:表示 MAC 地址是否是经典格式
- 0 = 经典格式
- 1 = 非经典格式
- VID:该帧所属的VLAN
- Length/Type:后续数据的字节长度,但不包括CRC检验码
- Data:负载
- CRC:校验和
3. TPID(Tag Protocol Identifier,标签协议标识)
- 是 VLAN Tag 中的一个字段,表示 VLAN Tag 的协议类型,IEEE 802.1Q 协议规定该字段的取值为 0x8100
- 通过检查对应的 TPID 值,设备可确定收到的帧承载的是运营商 VLAN 标记还是用户 VLAN 标记(设备可以根据TPID值来识别报文中是否携带对应的VLAN Tag)
- 接收到帧之后,设备将配置的 TPID 值与帧中 TPID 字段的值进行比较,如果二者匹配,则该帧承载的是对应的 VLAN 标记(则设备设备认为该帧是 Untagged 报文)
- 通过修改 TPID 值可以使 QinQ 帧发送到公网时,实现不同运营商的系统的兼容性。承载与特定运营商相同的 TPID 值,从而实现与该运营商设备之间的互操作性
- 以太网帧的 TPID 与不带 VLAN 标记帧的协议的类型字段位置相同,避免在网络中转发和处理数据包时出现问题(不可设置的 TPID 值)
1)TPID 与对应值
| 协议类型 | 对应值 | | :—-: | :—-: | | ARP | 0x0806 | | RARP | 0x8035 | | IP | 0x0800 | | IPv6 | 0x86DD | | PPPoE | 0x8863/0x8864 | | MPLS | 0x8847/0x8848 | | IPX/SPX | 0x8137 | | LACP | 0x8809 | | 802.1x | 0x888E | | HGMP | 0x88A7 | | 设备保留 | 0xFFFD/0xFFFE/0xFFFF |
4. 封装方式
把单层 802.1Q 报文转换成双层 802.1Q 报文,封装主要发生在城域网面向用户的 UPE 接口上进行
- 基于接口的 QinQ 封装(QinQ 二层隧道**):**基于端口方式实现,进入一个接口的所有流量全部封装一个相同的外层 VLAN Tag
- 不够灵活
- 业务区分不够细致
- 基于流的 QinQ 封装(二层灵活 QinQ):基于端口与 VLAN 相结合的方式实现的(是对基本 QinQ 功能的扩展)
- 对进入端口的数据首先进行流分类
- 然后对于不同的数据流选择是否封装外层 Tag 或封装何种外层 Tag
- 在路由子接口上进行 QinQ 封装(QinQ Stacking 子接口)
1)基本 QinQ
- 当端口上配置了基本 QinQ 功能后,不论从该端口收到报文是否带有 VLAN Tag,设备都会为该报文打上本端口缺省 VLAN 的 Tag
- 如果收到的是带有 VLAN Tag 的报文,该报文就成为带双 Tag 的报文
- 如果收到的是不带 VLAN Tag 的报文,该报文就成为带有本端口缺省 VLAN Tag 的报文
举例:每个部门的各个办公地网络可以互通,但两个部门之间不能互通
- 在 PE1 上,对于进入接口 Port1 和 Port2 的用户报文都封装外层 VLAN 10,对于进入接口 Port3 中用户报文都封装外层 VLAN 20
- 在 PE2 上,对于进入接口 Port1 和 Port2 的用户报文都封装外层 VLAN 20
- PE1 上的接口 Port4 和 PE2 上的接口 Port3 允许 VLAN 20 的报文通过
2)灵活 QinQ
端口对接收的报文,可以通过单层 VLAN tag 转发,也可以通过双层 VLAN tag 转发
- 对于从同一个端口收到的报文,还可以根据 VLAN 的不同进行不同的动作
- 基于 VLAN ID 的灵活 QinQ:为具有不同内层 VLAN ID 的报文添加不同的外层 VLAN Tag
- 基于802.1p 优先级的灵活QinQ:根据报文的原有内层 VLAN 的 802.1p 优先级添加不同的外层 VLAN Tag
- 基于流策略的灵活QinQ:根据 QoS 策略添加不同的外层 VLAN Tag。基于流策略的灵活 QinQ 能够针对业务类型提供差别服务
举例:每个部门的各个办公地网络可以互通,但两个部门之间不能互通
- 在 PE1 上,对于进入接口 Port1 的用户报文封装外层 VLAN 10、20,对于进入接口 Port2 中用户报文封装外层 VLAN 10
- 在 PE2 上,对于进入接口 Port1 和 Port2 的用户报文封装外层 VLAN 20
- PE1 和 PE2 的接口 Port3 允许 VLAN 20 的报文通过