QinQ概述

  • Post author:
  • Post category:其他



QinQ – hongliang888 – 博客园 (cnblogs.com)


QinQ是什么?和VLAN什么关系?【VLAN专题】 – 腾讯云开发者社区-腾讯云 (tencent.com)


QinQ概述

QinQ(802.1Q in 802.1Q)技术是一项扩展VLAN空间的技术,通过在802.1Q标签报文的基础上再曾加一层802.1Q的Tag来达到扩展VLAN空间的功能

如图所示,用户报文在公网上传递时携带了两层Tag,内层时私网Tag,外层时公网Tag


QinQ封装结构

QinQ封装报文是在无标签的以太网数据帧的源MAC地址字段后面加上两个VLAN标签构成

字段解释:

  • TPID(Tag Protocol Identifier,标签协议标识)表示帧类型。取值为0x8100时表示802.1Q Tag帧。如果不支持802.1Q的设备收到这样的帧,会将其丢弃
  • 对于内层的802.1Q Tag,该值设置为0x8100;对于外层的802.1Q Tag,不同厂商所使用的值可能不相同

    • 0x8100:Huawei路由器使用
    • 0x88a8:802.1ad规定外层802.1Q Tag中TPID为0x88a8
0x8100  VLAN-tagged frame (IEEE 802.1Q) & Shortest Path Bridging IEEE 802.1aq
0x88A8  Provider Bridging (IEEE 802.1ad) & Shortest Path Bridging IEEE 802.1aq

长度为2字节,表示帧类型。取值为0x8100时表示802.1Q Tag帧。如果不支持802.1Q的设备收到这样的帧,会将其丢弃。对于内层VLAN tag,该值设置为0x8100;

对于外层VLAN tag,有下列几种类型0x8100:思科路由器使用0x88A8:Extreme Networks switches使用0x9100:Juniper路由器使用0x9200




0x8100




此 TPID 用于

802.1Q

– 它是您日常的平均 VLAN 标记。VLAN 的常见用途是让企业将其网络组织成功能组(如研究、财务或管理)。




0x88a8




此 TPID 用于

802.1ad

– 用于提供商桥接(也称为 QinQ、堆叠 VLAN 或双重标记)。QinQ 允许在一个以太网帧中有多个 VLAN Tag。


QinQ工作原理

在公网传输过程中,设备只根据外层VLAN Tag转发报文,并根据报文的外层VLAN Tag进行MAC地址学习,而用户的私网VLAN Tag将被当作报文的数据部分进行传输。即使私网VLAN Tag相同,也能通过公网VLAN Tag区分不同用户


QinQ实现方式

基本QinQ

  • 基本QinQ是基于端口方式实现的
  • 开启端口的基本QinQ功能后,当该端口接收到报文,设备会为该报文打上本端口缺省VLAN的VLAN Tag
  • 如果接收到的是已经带有VLAN Tag的报文,该报文就成为双Tag的报文
  • 如果接收到的是不带VLAN Tag的报文,该报文就成为带有端口缺省VLAN Tag报文

基本QinQ的报文处理过程:

  1. SW1收到VLAN iD为10和20的报文,将该报文发给SW2
  2. SW2收到该报文后,在该报文原有Tag的外侧再添加一层VLAN ID为100的外层Tag
  3. 带着两层Tag的用户数据报文在网络中按照正常的二层转发流程转发
  4. SW3收到VLAN 100的报文后,剥离报文的外层Tag(VLAN ID为100),将报文发送给SW4,此时报文只有一层Tag(VLAN ID为10或20)
  5. SW4收到该报文,根据VLAN ID和目的MAC地址进行相应的转发

灵活QinQ

  • 灵活QinQ可根据流分类的结果选择是否打外层VLAN Tag,打上何种外层VLAN Tag。
  • 灵活QinQ可根据用户的VLAN标签、优先级、MAC地址、IP协议、IP源地址、IP目的地址,或应用程序的端口号进行流分类

    • 基于VLAN ID的灵活QinQ:为具有不同内层VLAN ID的报文添加不同的外层VLAN Tag
    • 基于802.1p优先级的灵活QinQ:根据报文的原有内层VLAN的802.1p优先级添加不同的外层VLAN Tag
    • 基于流策略的灵活QinQ:根据QoS策略添加不同的外层VLAN Tag。基于流策略的灵活QinQ能够针对业务类型提供差别服务

灵活QinQ的报文处理过程:

  1. SW1收到VLAN ID为10和20的报文,将该报文转发给SW2
  2. SW2收到VLAN ID为10的报文后,添加一层VLAN ID为100的外层Tag;SW2收到VLAN ID为20的报文后,添加一层VLAN ID为200的外层Tag
  3. 带着两层Tag的用户数据报文在网络中按照正常的二层转发流程转发
  4. SW3收到报文后,剥离报文的外层Tag(VLAN ID为100或200),将报文发送给SW4,此时报文只有一层Tag(VLAN ID为10或20)
  5. SW4收到报文,根据VLAN ID和目的MAC地址进行相应的转发


QinQ是什么?

随着以太网技术在网络中的大量部署,利用VLAN对用户进行隔离和标识受到很大限制。因为IEEE802.1Q中定义的VLAN Tag域只有12个比特,仅能表示4096个VLAN,无法满足城域以太网中标识大量用户的需求,于是QinQ技术应运而生。QinQ(802.1Q in 802.1Q)技术是一项扩展VLAN空间的技术,通过在802.1Q标签报文的基础上再增加一层802.1Q的Tag来达到扩展VLAN空间的功能。如下图所示用户报文在公网上传递时携带了两层Tag,内层是私网Tag,外层是公网Tag。

  • QinQ封装报文是在无标签的以太网数据帧的源MAC地址字段后面加上两个VLAN标签构成。


QinQ封装结构

  • TPID(Tag Protocol Identifier,标签协议标识)表示帧类型。取值为0x8100时表示802.1Q Tag帧。如果不支持802.1Q的设备收到这样的帧,会将其丢弃。
  • 对于内层的802.1Q Tag,该值设置为0x8100;对于外层的802.1Q Tag,不同厂商所使用的值可能不相同:

    • 0x8100:Huawei路由器使用
    • 0x88A8:802.1ad规定外层802.1Q Tag中的TPID为0x88a8
  • 在华为设备上,外层802.1Q Tag缺省情况下值为0x8100,可以通过命令行调整该值。


QinQ工作原理

  • 在公网的传输过程中,设备只根据外层VLAN Tag转发报文,并根据报文的外层VLAN Tag进行MAC地址学习,而用户的私网VLAN Tag将被当作报文的数据部分进行传输。即使私网VLAN Tag相同,也能通过公网VLAN Tag区分不同用户。


QinQ实现方式 – 基本QinQ

  • 基本QinQ是基于端口方式实现的。开启端口的基本QinQ功能后,当该端口接收到报文,设备会为该报文打上本端口缺省VLAN 的VLAN Tag。如果接收到的是已经带有VLAN Tag的报文,该报文就成为双Tag的报文;如果接收到的是不带VLAN Tag的报文,该报文就成为带有端口缺省VLAN Tag的报文。
  • 基于端口的QinQ的缺点是外层VLAN Tag封装方式固定,不能根据业务种类选择外层VLAN Tag封装的方式,从而很难有效支持多业务的灵活运营。


基本QinQ的报文处理过程:

  • SW1收到VLAN ID为10和20的报文,将该报文发给SW2。
  • SW2收到该报文后,在该报文原有Tag的外侧再添加一层VLAN ID 为100的外层Tag。
  • 带着两层Tag的用户数据报文在网络中按照正常的二层转发流程转发。
  • SW3收到VLAN100的报文后,剥离报文的外层Tag(VLAN ID 为100)。将报文发送给SW4,此时报文只有一层Tag(VLAN ID 为10或20)。
  • SW4收到该报文,根据VLAN ID和目的MAC地址进行相应的转发。


QinQ实现方式 – 灵活QinQ

  • 灵活QinQ(Selective QinQ)可根据流分类的结果选择是否打外层VLAN Tag,打上何种外层VLAN Tag。灵活QinQ可根据用户的VLAN标签、优先级、MAC地址、IP协议、IP源地址、IP目的地址、或应用程序的端口号进行流分类。
  • 基于VLAN ID的灵活QinQ:为具有不同内层VLAN ID的报文添加不同的外层VLAN Tag。
  • 基于802.1p优先级的灵活QinQ:根据报文的原有内层VLAN的802.1p优先级添加不同的外层VLAN Tag。
  • 基于流策略的灵活QinQ:根据QoS策略添加不同的外层VLAN Tag。基于流策略的灵活QinQ能够针对业务类型提供差别服务。
  • 灵活QinQ功能是对基本QinQ功能的扩展,它比基本QinQ的功能更灵活。二者之间的主要区别是:

    • 基本QinQ:对进入二层QinQ接口的所有帧都加上相同的外层Tag。
    • 灵活QinQ:对进入二层QinQ接口的帧,可以根据不同的内层Tag而加上不同的外层Tag,对于用户VLAN的划分更加细致


灵活QinQ的报文处理过程:

  • SW1收到VLAN ID为10和20的报文,将该报文转发给SW2。
  • SW2收到VLAN ID为10的报文后,添加一层VLAN ID 为100 的外层Tag;SW2收到VLAN ID为20的报文后,添加一层VLAN ID为200的外层Tag。
  • 带着两层Tag的用户数据报文在网络中按照正常的二层转发流程转发。
  • SW3收到报文后,剥离报文的外层Tag(VLAN ID 为100或200)。将报文发送给SW4,此时报文只有一层Tag(VLAN ID 为10或20)。
  • SW4收到报文,根据VLAN ID和目的MAC地址进行相应的转发。


QinQ在园区网络中的应用


场景需求

单个终端用户可溯源。每个终端一个独立的二层广播域,最大限度地限制BUM流量对网络造成的影响。终端用户到BRAS设备之间二层互通,匹配PPPoE等认证需求。

  • BRAS:Broadband Remote Access Server,宽带远程接入

    服务器

    。BRAS提供宽带接入服务、实现多种业务的汇聚与转发,能满足不同用户对传输容量和带宽利用率的要求,因此RRAS是宽带用户接入的核心设备。
  • BUM:Broadcast、Unknown unicast、Multicast,广播,未知单播、组播。交换机以泛洪的方式处理以上类型的数据帧。


解决方案

  • 接入交换机为每个下行端口划分一个独立的VLAN。
  • 接入交换机将用户的原始数据转发给汇聚交换机时打上一层802.1Q标记。
  • 汇聚交换机部署QinQ,为每个下行接口分配一个独立的VLAN(每台接入交换机都对应一个唯一的VLAN),将数据打上第二层标记,然后将流量送往核心交换机。
  • 核心交换机将流量透传给BRAS设备,由其执行QinQ解封装。
  • BRAS:Broadband Remote Access Server,宽带远程接入服务器。BRAS提供宽带接入服务、实现多种业务的汇聚与转发,能满足不同用户对传输容量和带宽利用率的要求,因此RRAS是宽带用户接入的核心设备。
  • BUM:Broadcast、Unknown unicast、Multicast,广播,未知单播、组播。交换机以泛洪的方式处理以上类型的数据帧。


QinQ配置举例 – 基本QinQ


实验要求:

  • 企业1与企业2接入同一个ISP网络,并使用了重叠的VLAN空间。
  • ISP通过QinQ技术,实现同一个企业的不同站点之间的数据交互。
  • 为企业1规划的VLAN ID为100,为企业2规划的VLAN ID为200。
  • SW1配置如下:
[SW1] vlan batch 100 200
[SW1] interface GigabitEthernet 0/0/1
#配置GE0/0/1外层TAG为100
[SW1-GigabitEthernet0/0/1] port link-type dot1q-tunnel
[SW1 -GigabitEthernet0/0/1] port default vlan 100
[SW1] interface GigabitEthernet 0/0/2
#配置GE0/0/2外层TAG为200
[SW1-GigabitEthernet0/0/2] port link-type dot1q-tunnel
[SW1-GigabitEthernet0/0/2] port default vlan 200
[SW1] interface GigabitEthernet 0/0/3
[SW1-GigabitEthernet0/0/3] port link-type trunk
[SW1-GigabitEthernet0/0/3] port trunk allow-pass vlan 100 200
#配置外层VLAN tag的TPID值
[SW1-GigabitEthernet0/0/3] qinq protocol 9100

复制

  • SW2配置与SW1类似,此处省略


QinQ配置举例 – 灵活QinQ


实验要求:

  • 上网用户和VoIP用户通过SW1和SW2接入ISP网络,通过ISP的网络互相通信;企业为PC分配的内部VLAN为100,为VoIP电话分配的内部VLAN为300。
  • 上网用户和VoIP用户分别以VLAN2和VLAN3通过ISP网络。
  • SW1配置如下:
[SW1] vlan batch 2 3
[SW1] interface GigabitEthernet 0/0/1
[SW1-GigabitEthernet0/0/1] port link-type hybrid
[SW1-GigabitEthernet0/0/1] port hybrid untagged vlan 2 3
[SW1-GigabitEthernet0/0/1] qinq vlan-translation enable
[SW1-GigabitEthernet0/0/1] port vlan-stacking vlan 100 stack-vlan 2
[SW1-GigabitEthernet0/0/1] port vlan-stacking vlan 300 stack-vlan 3
[SW1-GigabitEthernet0/0/1] quit 
[SW1] interface GigabitEthernet 0/0/2
[SW1-GigabitEthernet0/0/2] port link-type trunk
[SW1-GigabitEthernet0/0/2] port trunk allow-pass vlan 2 3
[SW1-GigabitEthernet0/0/2] quit



复制

  • SW2配置与SW1类似