88440559_p0 1080.jpg

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 命令更改)

image.png
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,标签协议标识)


image.png

  • 是 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 子接口)
    • 当 MPLS/IP 核心网采用 PWE3/VLL/VPLS 透传业务数据时,NPE 上的路由子接口可以根据用户 VLAN ID 封装外层 VLAN ID,通过外层 VLAN ID 接入 VLL/PWE3
    • 只能和 L2VPN(PWE3/VLL/VPLS)业务结合起来才有意义
    • 不支持三层转发功能

      5. 实现方式


1)基本 QinQ

  • 当端口上配置了基本 QinQ 功能后,不论从该端口收到报文是否带有 VLAN Tag,设备都会为该报文打上本端口缺省 VLAN 的 Tag
    • 如果收到的是带有 VLAN Tag 的报文,该报文就成为带双 Tag 的报文
    • 如果收到的是不带 VLAN Tag 的报文,该报文就成为带有本端口缺省 VLAN Tag 的报文

image.png
举例:每个部门的各个办公地网络可以互通,但两个部门之间不能互通

  1. 在 PE1 上,对于进入接口 Port1 和 Port2 的用户报文都封装外层 VLAN 10,对于进入接口 Port3 中用户报文都封装外层 VLAN 20
  2. 在 PE2 上,对于进入接口 Port1 和 Port2 的用户报文都封装外层 VLAN 20
  3. PE1 上的接口 Port4 和 PE2 上的接口 Port3 允许 VLAN 20 的报文通过

    2)灵活 QinQ

    端口对接收的报文,可以通过单层 VLAN tag 转发,也可以通过双层 VLAN tag 转发

  • 对于从同一个端口收到的报文,还可以根据 VLAN 的不同进行不同的动作
    1. 基于 VLAN ID 的灵活 QinQ:为具有不同内层 VLAN ID 的报文添加不同的外层 VLAN Tag
    2. 基于802.1p 优先级的灵活QinQ:根据报文的原有内层 VLAN 的 802.1p 优先级添加不同的外层 VLAN Tag
    3. 基于流策略的灵活QinQ:根据 QoS 策略添加不同的外层 VLAN Tag。基于流策略的灵活 QinQ 能够针对业务类型提供差别服务

image.png
举例:每个部门的各个办公地网络可以互通,但两个部门之间不能互通

  1. 在 PE1 上,对于进入接口 Port1 的用户报文封装外层 VLAN 10、20,对于进入接口 Port2 中用户报文封装外层 VLAN 10
  2. 在 PE2 上,对于进入接口 Port1 和 Port2 的用户报文封装外层 VLAN 20
  3. PE1 和 PE2 的接口 Port3 允许 VLAN 20 的报文通过