19 QinQ技术(Vlan两层封装)

1 什么是QinQ?

QinQ(802.1Q-in-802.1Q),也叫做VLAN Stacking或Double VLAN,由IEEE 802.1ad标准定义,**是一项扩展VLAN空间的技术,**通过在802.1Q标签报文的基础上再增加一层802.1Q的Tag来达到扩展VLAN空间的目的。一般应用在骨干网中,通过将用户私网VLAN Tag封装在公网VLAN Tag中,使报文带着两层VLAN Tag穿越运营商的骨干网络(公网),扩充VLAN数量,实现对用户的精细化管理。

2 为什么需要QinQ?

IEEE 802.1Q中定义的VLAN ID只有12个比特,仅能表示4096个VLAN域,随着网络规模的扩大,4096个VLAN域已无法满足网络扩容的需求,为此,IEEE 802.1ad中在原有的802.1Q报文的基础上增加一层802.1Q Tag(也叫做VLAN Tag或标签),使VLAN数量增加到4094×4094,这种双层Tag的报文就叫做QinQ报文。

随着以太网的进一步发展以及运营商精细化运作的要求,QinQ的双层Tag又有了新的应用场景。它的内外层Tag可以代表不同的信息,如内层Tag代表用户,外层Tag代表业务。另外,QinQ报文带着两层Tag穿越运营商网络,内层Tag透明传送,也是一种简单、实用的VPN技术。

所以,QinQ产生的两大背景是:

一是解决日益紧缺的VLAN ID资源问题;

二是满足业务精细化管理的需求。

QinQ应用场景有哪些?

在企业网中,可以不同的业务封装不同VLAN Tag,使不同的业务按需获取不同的资源。如下图所示,PC、VOIP、IPTV由于应用场景和需求不同,在企业内部属于不同的VLAN,访问公网时,针对不同的内层VLAN Tag添加不同的外层VLAN Tag。

  • PC:内层VLAN Tag对应的VLAN ID是101,外层VLAN Tag对应的VLAN ID是1001
  • VOIP:内层VLAN Tag对应的VLAN ID是301,外层VLAN Tag对应的VLAN ID是2001
  • IPTV:内层VLAN Tag对应的VLAN ID是501,外层VLAN Tag对应的VLAN ID是3001

在运营商网络中,为节省运营商公网VLAN ID资源,用户在使用运营商网络传输报文时,内层使用不同的VLAN ID区分不同部门,外层使用相同的VLAN ID。如下图所示,不同区域部门的用户需要跨越运营商网络相互通信,为节省运营商VLAN ID,用户报文在运营商网络中转发时,统一都添加一层VLAN ID为3的Tag。

QinQ报文格式

QinQ报文有固定的格式,就是在802.1Q的标签之上再打一层802.1Q标签**,QinQ报文比802.1Q报文多四个字节。这四个字节用作外层标签**,即运营商网络的公网VLAN Tag。原802.1Q的Tag用作内层标签,即私网VLAN Tag。QinQ报文封装格式如下图所示。

如下图所示,通过对802.1Q封装和QinQ封装的报文抓包,可以明显看出QinQ报文比802.1Q多了一层802.1Q标签。

QinQ有哪些实现方式?

根据识别报文的方式和添加外层标签的位置,QinQ的实现方式可以分为下面两种。

  • 基于接口的QinQ封装

    也叫做基本QinQ或QinQ隧道(QinQ Tunnel),就是对接口收到的所有报文都添加一层VLAN** ID相同的外层Tag。**

  • 基于流的QinQ封装

    也叫做灵活QinQ,首先对进入接口的报文根据指定规则分类,然后对于不同类型的报文选择封装何种外层Tag。

    例如:当同一企业的不同业务使用不同的VLAN ID时,可以根据VLAN ID进行对报文进行分类。假设PC上网的VLAN ID范围是101~200;IPTV的VLAN ID范围是201~300;大客户的VLAN ID范围是301~400。设备收到业务报文后,可以根据VLAN ID范围对不同的业务添加不同的外层Tag。对PC上网业务封装上外层Tag 100,对IPTV封装上外层Tag 300,对大客户封装上外层Tag 500。

    常见的对报文分类的方式包括如下几种:

    • 根据报文原有的VLAN ID进行分类,即根据报文原有内层VLAN ID添加不同的外层VLAN Tag。
    • 根据报文原有的VLAN Tag中的802.1p优先级进行分类,即根据报文原有内层VLAN的802.1p优先级添加不同的外层VLAN Tag。
    • 根据流策略进行精细分类,即根据QoS策略添加不同的外层VLAN Tag。该方式能够针对业务类型提供差别服务。

QinQ是如何工作的?

在QinQ典型组网中,有两个重要的设备角色:CE(Customer Edge)设备和PE(Provider Edge )设备。CE设备与用户相连,对用户报文封装第一层VLAN Tag,即内层VLAN Tag;PE设备是CE设备的下游设备,对CE设备转发过来的报文封装第二层VLAN Tag,即外层VLAN Tag。

如下图所示,部门A和部门B分布在不同的办公点,部门A和部门B通过运营商网络相互通信,部门A和部门B分别使用VLAN 10和VLAN 20进行通信,该企业仅申请到一个公网VLAN 3。当CE1和CE3对应的部门A的用户相互通信时,CE1用户发送到CE3用户的报文,VLAN Tag的添加和剥离流程如下。

  1. CE1收到用户报文时,对用户报文封装第一层VLAN Tag,对应的VLAN ID是10。
  2. PE1收到CE1转发的用户报文时,对用户报文再封装一层VLAN Tag,对应的VLAN ID是3。
  3. 报文携带两层VLAN Tag(内层VLAN Tag的VLAN ID是10,外层VLAN Tag的VLAN ID是3),从PE1设备传输到PE2设备。
  4. PE2收到报文从对应出接口转发报文时,会剥离掉外层VLAN ID是3的VLAN Tag。
  5. CE3收到报文时,报文仅携带一层VLAN ID为10的VLAN Tag。CE3设备转发报文时,会剥离掉这层VLAN ID为10的 VLAN Tag。

CE3用户发送到CE用户的报文,VLAN Tag的添加和剥离流程正好与上面流程相反。

QinQ相关技术

VLAN Mapping

如上描述,通过QinQ技术可以实现两个VLAN相同的二层用户网络通过骨干网络互联,但是通过QinQ技术需要增加额外的报文开销(增加一层VLAN Tag)。通过VLAN Mapping技术也可以实现两个VLAN相同的二层用户网络通过骨干网络互联。

一侧用户网络的带有VLAN Tag的二层报文进入骨干网后,骨干网边缘设备将用户网络的VLAN(称为C-VLAN)修改为骨干网中可以识别和承载的VLAN(称为S-VLAN),传输到另一侧之后,边缘设备再将S-VLAN修改为C-VLAN。这样就可以很好的实现两个用户网络二层无缝连接。

VLAN Mapping还可以应用在另一种场景中,如果由于规划的差异,导致两个直接相连的二层网络中部署的VLAN ID不一致。但是用户又希望可以把两个网络作为单个二层网络进行统一管理。此时也可以在连接两个网络的交换机上部署VLAN Mapping功能,实现两个网络之间不同VLAN ID的映射,达到二层互通和统一管理的目的。VLAN Mapping的相关信息,请参考VLAN Mapping配置(S系列交换机)。

VXLAN

VXLAN(Virtual eXtensible Local Area Network),也称为虚拟可扩展LAN,顾名思义,VXLAN是一种扩展VLAN的网络虚拟技术。VXLAN作为NVO3技术之一,本质上也属于一种VPN技术,能够在任意路由可达的网络上叠加二层虚拟网络,通过VXLAN网关实现VXLAN网络内部的互通,同时,也可以实现与传统的非VXLAN网络的互通。另外,VXLAN通过引入了类似VLAN ID的用户标识,VXLAN网络标识VNI(VXLAN Network Identifier),由24比特组成,支持多达16M的VXLAN段,解决云计算中海量租户隔离的问题。VXLAN的相关信息,请参考VXLAN配置指南(S系列交换机)。

QinQ标签添加和剥离流程

QinQ报文

QinQ封装格式

不同部门添加相同VLAN Tag

不同业务添加不同VLAN Tag

3 基本QinQ配置思路

4 基本命令解析

interface GigabitEthernet0/0/1port link-type dot1q-tunnelport default vlan 100interface GigabitEthernet0/0/3port link-type trunkport trunk allow-pass vlan 100 200 300 400qinq protocol 9100
  1. 接口 GigabitEthernet0/0/1 的配置:
    • port link-type dot1q-tunnel: 设置接口的链路类型为dot1q-tunnel,这通常意味着接口被配置为支持QinQ封装,允许在数据包上应用两个VLAN标签。
    • port default vlan 100: 设置接口的默认VLAN为100,这意味着通过这个接口发送的未标记VLAN的数据包将被分配到VLAN 100。
  2. 接口 GigabitEthernet0/0/3 的配置:
    • port link-type trunk: 设置接口的链路类型为trunk,这允许接口携带多个VLAN标签的数据包,通常用于连接交换机或路由器。
    • port trunk allow-pass vlan 100 200 300 400: 允许通过这个trunk接口传递VLAN 100、200、300和400的数据包。这意味着这些VLAN的数据包可以在这个接口上进出。
    • qinq protocol 9100: 这个命令可能用于指定QinQ封装的特定协议或服务类型。在某些设备中,protocol 9100可能是一个服务实例标识符,用于区分或识别特定的服务流量。然而,具体的9100值的含义可能依赖于设备的具体实现和配置上下文。

5 灵活的QinQ配置

6 命令解析

interface GigabitEthernet0/0/1qinq vlan-translation enableport hybrid untagged vlan 101port vlan-stacking vlan 101 stack-vlan 600
  1. qinq vlan-translation enable:
    • 此命令启用了VLAN翻译功能。VLAN翻译允许一个接口将接收到的VLAN标签映射或转换为不同的VLAN标签,然后再转发出去。这在服务提供商环境中非常有用,因为它允许服务提供商在不干扰客户VLAN设置的情况下,管理自己的VLAN标签。
  2. port hybrid untagged vlan 101:
    • port hybrid命令配置接口为混合端口,这意味着接口可以同时传输标记和未标记的VLAN数据包。
    • untagged vlan 101指定了当接口接收到未标记的VLAN数据包时,它们将被分配到VLAN 101。
  3. port vlan-stacking vlan 600 stack-vlan 101:
    • port vlan-stacking命令配置接口以支持VLAN堆叠,也就是QinQ技术。
    • vlan 600指定了内部VLAN标签,即数据包原有的VLAN标签。
    • stack-vlan 101指定了外部VLAN标签,即在内部VLAN标签之上添加的V

执行命令 port vlan-stacking vlan vlan-id1 [ to vlan-id2 ] stack-vlan vlan-id3 [ remark-8021p 8021p-value1 ] 是用于配置灵活QinQ(Flexible QinQ)的命令。灵活QinQ是一种网络技术,它允许对经过特定接口的VLAN数据包进行再封装,将原有的VLAN标签(内部标签)保留,并添加一个新的VLAN标签(外部标签)。这在服务提供商环境中非常有用,因为它可以允许多个客户的VLAN在服务提供商的网络上进行传输,同时每个客户的流量都有自己的唯一标识。

下面是命令参数的详细解释:

  • port vlan-stacking: 开始VLAN堆叠配置的命令。
  • vlan vlan-id1 [ to vlan-id2 ]: 指定一个或一系列内部VLAN ID。vlan-id1是起始的VLAN ID,如果需要指定一个范围,可以使用to vlan-id2
  • stack-vlan vlan-id3: 指定要添加到内部VLAN标签之上的外部VLAN ID。
  • [ remark-8021p 8021p-value1 ]: 这是一个可选参数,用于设置封装后的外部VLAN标签的802.1p优先级。8021p-value1是优先级值,范围通常是0到7。

仅配置灵活QinQ意味着在接口上仅启用了VLAN堆叠功能,而没有启用VLAN翻译或其他类型的VLAN操作。灵活QinQ允许对匹配特定内部VLAN ID的数据包进行操作,将它们封装在指定的外部VLAN ID中,同时保留原始的内部VLAN标签。

例如,如果有一个命令如下:

port vlan-stacking vlan 10 to 20 stack-vlan 100 remark-8021p 5

这个命令的含义是:

  • 对于内部VLAN ID在10到20范围内的所有数据包,
  • 在这些数据包上添加一个外部VLAN ID为100的标签,
  • 并将这个新标签的802.1p优先级设置为5。

请注意,具体的命令语法和功能可能会根据不同的网络设备和操作系统版本有所不同。在实际应用中,应参考具体的设备手册或命令参考文档来确保正确配置。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/841802.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

工具使用-网络性能测试工具(iperf)-TCP 和 UDP 的吞吐量-包转发率参数的理解

时间戳:2024年5月26日15:18:39 iperf 和 netperf 都是最常用的网络性能测试工具,测试 TCP 和 UDP 的吞吐量。它们都以客户端和服务器通信的方式,测试一段时间内的平均吞吐量。 接下来,我们就以 iperf 为例,看一下 TC…

9.2 Go语言入门(包和导入)

Go语言入门(包和导入) 目录一、包和导入1. 包(Package)1.1 包的定义1.2 包的作用1.3 main 包1.4 非 main 包 2. 导入(Import)2.1 导入标准库2.2 导入第三方包2.3 导入本地包2.4 导入别名2.5 导入并调用初始…

国内最受欢迎的7大API供应平台对比和介绍||电商API数据采集接口简要说明

本文将介绍7款API供应平台:聚合数据、百度APIStore、Apix、数说聚合、通联数据、HaoService、datasift 。排名不分先后! 免费实用的API接口 第一部分 1、聚合数据(API数据接口_开发者数据定制) 2、百度API Store(API集市_APIStore…

数据库系统原理实验报告6 | 视图

整理自博主本科《数据库系统原理》专业课自己完成的实验报告,以便各位学习数据库系统概论的小伙伴们参考、学习。 专业课本: ​ ———— 本次实验使用到的图形化工具:Heidisql ​ 目录 一、实验目的 二、实验内容 1.根据EDUC数…

揭秘C++ String容器:字符串操作的艺术

目录 ​编辑 引言 一、初识std::string:构造与初始化 二、字符串的操纵艺术:拼接、查找与替换 三、访问与遍历:字符的细腻触感 四、大小与容量:动态调整的智慧 五、进阶功能:探索更多可能 结语 引言 在C标准库…

Java 8

这次我学习了第八次Java课程 这次课在假期,包含了两天的一大波内容 对于编写项目过程中有许多的 辅助类 System System.out.println() 打印 Scanner Scanner sc new Scanner(System.in) 赋值 Random 随机数 Math 数学运算 日期 要想使用日期方法就要引入包Date 1…

人工智能为犯罪地下世界带来了巨大的生产力提升

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

详解 Scala 的集合类型

一、集合简介 1. 类型 序列 Seq:类似于 Java 中的 List 接口集 Set:类似于 Java 中的 Set 接口映射 Map:类似于 Java 中的 Map 接口所有的集合都扩展自 Iterable 特质 2. 不可变集合 位于 scala.collection.immutable 包,指该集…

ISSCC论文详解 2023 16.1 MulTCIM 存内计算在多模态领域的应用前沿论文

多模态模型,是指具备理解来自不同模态(如视觉、自然语言、语音等)的混合信号能力的神经网络模型,是当今人工智能模型发展的重要方向之一。本文将要介绍的文献题目为《16.1 MulTCIM: A 28nm 2.24μJ/Token Attention-Token-Bit Hyb…

一些常见的程序设计问题

秒杀 redis缓存库存 1.判断库存名额是否充足,2.进行扣减 为了防止超卖,必须保证这两部的原子性 库存扣减后发送mq消息,去异步执行创建订单流程,创建订单失败会造成少卖。可加重试机制,对多次重试依旧失败的&#xff…

[论文阅读笔记31]Mamba (Selective Structured State Space Model) 及其应用

最近想学一下Mamba模型,奈何看了很多视频还是感觉一知半解,因此做一篇笔记,顺便介绍一下Mamba结构作为CV backbone和时间序列预测领域的应用。 论文1. Mamba: Linear-Time Sequence Modeling with Selective State Spaces 0. Abstract 现有…

VLAN高级特性

1.VLAN聚合 (1)VLAN聚合产生的技术背景 (2)VLAN聚合概述 (3)VLAN聚合的原理 多个Sub-VLAN共享一个网关地址,节约了子网网络地址、子网定向广播地址、子网缺省网关地址,且各Sub-VLAN…

微信小程序--微信开发者工具使用小技巧(3)

一、微信开发者工具使用小技巧 1、快速创建小程序页面 在app.json中的pages配置项,把需要创建的页面填写上去 2、快捷键使用 进入方式 1: 文件–>首选项–> keyboard shortcuts 进入快捷键查看与设置 进入方式 2: 设置–>快捷键…

JVM学习-方法区(元空间)

运行时数据区结构图 从线程共享与否角度来看 栈、堆、方法区的交互关系 方法区 《Java虚拟机规范》中明确说明:“尽管所有的方法区在逻辑上属于堆的一部分,但一些简单的实现可能不会选择去进行垃圾收集或者进行压缩”,但对于HotSpotJVM而…

布鲁可冲刺上市:极其依赖第三方,多个授权将到期,朱伟松突击“套现”

“奥特曼”概念股来了。 近日,布鲁可集团有限公司(下称“布鲁可”)递交招股书,准备在港交所主板上市,高盛和华泰国际为其联席保荐人。据贝多财经了解,布鲁可的经营主体为上海布鲁可科技集团有限公司。 天眼…

轻量级 C Logger

目录 一、描述 二、实现效果 三、使用案例 四、内存检测 一、描述 最近实现一个 WS 服务器,内部需要一个日志打印记录服务器程序的运行过程,故自己实现了一个轻量级的 logger,主要包含如下特征: 可输出 debug、info、warn、er…

历年高校招生计划数据 API 数据接口

历年高校招生计划数据 API 数据接口 基础数据 / 高校招生,各高校历年招生计划数据,高校招生数据 / 历年计划。 1. 产品功能 支持历年高校招生计划数据查询;包含各高校招生计划详细数据;多维度查询条件支持;毫秒级查询…

安全分析[2]之计算机系统安全分析

文章目录 计算机系统结构计算机系统安全风险软件安全漏洞 计算机系统结构 计算机系统安全风险 计算机硬件安全:因设计不当、器件的质量及使用寿命的限制、外界因素等导致的计算机系统硬件出现故障,进而影响到整个系统的安全。特别是如果是CPU出现安全漏…

【Go专家编程——协程】

1 协程的概念 1.1 基本概念 进程是应用程序的启动实例,每个进程都有独立的内存空间,不同进程通过进程间的通信方式来通信线程从属于进程,每个进程至少包含一个线程,线程是CPU调度的基本单元,多个线程之间可以共享进程…

PCIe总线-事物层之TLP请求和完成报文格式介绍(六)

1.概述 TLP报文按照类型,可以大致分为4中类型,分别是IO请求报文、存储器请求报文、配置请求报文、完成报文和消息请求报文。IO请求报文可分为IO读请求(不携带数据)和IO写请求(携带数据)。存储器请求报文可…