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/1
 port link-type dot1q-tunnel
 port default vlan 100

interface GigabitEthernet0/0/3
 port link-type trunk
 port trunk allow-pass vlan 100 200 300 400
 qinq 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/1
 qinq vlan-translation enable
 port hybrid untagged vlan 101
 port 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。

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

1738. 找出第 K 大的异或坐标值

题目&#xff1a; 给你一个二维矩阵 matrix 和一个整数 k &#xff0c;矩阵大小为 m x n 由非负整数组成。 矩阵中坐标 (a, b) 的 值 可由对所有满足 0 < i < a < m 且 0 < j < b < n 的元素 matrix[i][j]&#xff08;下标从 0 开始计数&#xff09;执行异…

架构师必考题--软件系统质量属性

软件系统质量属性 1.质量属性2.质量属性场景描述3.系统架构评估 这个知识点是系统架构师必考的题目&#xff0c;也是案例分析题第一题&#xff0c; 有时候会出现在选择题里面&#xff0c;考的分数也是非常高的。 1.质量属性 属性说明可用性错误检测/恢复/避免性能资源需求/管理…

链游:区块链技术的游戏新纪元

随着区块链技术的快速发展&#xff0c;越来越多的行业开始探索与其结合的可能性&#xff0c;其中&#xff0c;游戏行业与区块链的结合尤为引人注目。链游&#xff0c;即基于区块链技术的游戏&#xff0c;正以其独特的优势&#xff0c;为玩家带来全新的游戏体验。本文将对链游进…

AI数据面临枯竭

Alexandr Wang&#xff1a;前沿研究领域需要大量当前不存在的数据&#xff0c;未来会受到这个限制 Alexandr Wang 强调了 AI 领域面临的数据问题。 他指出&#xff0c;前沿研究领域&#xff08;如多模态、多语言、专家链式思维和企业工作流&#xff09;需要大量当前不存在的数…

java欢迪迈手机商城设计与实现源码(springboot+vue+mysql)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的欢迪迈手机商城设计与实现。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 欢迪迈手机商城…

【Python从入门到进阶】55、使用Python轻松操作Mysql数据库

一、引言 1、MySQL数据库简介 MySQL是一个开源的关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;它使用了一种名为Structured Query Language&#xff08;SQL&#xff09;的查询语言来管理数据。MySQL因其高性能、可扩展性、易用性和稳定性而广受欢迎&#x…

<商务世界>《75 微课堂<茶叶(1)-质量分级>》

1 中国茶叶分级 中国的10级标准是按照茶叶的外观、香气、滋味、汤色、叶底五个方面进行评分&#xff0c;分别用10分制进行评分&#xff0c;总分为50分&#xff0c;得分越高&#xff0c;茶叶的品质就越高。具体的分数和等级如下表所示&#xff1a; 2 每级的特点 茶叶的质量等级…

zabbix“专家坐诊”第240期问答

问题一 Q&#xff1a;zabbix6.0版本&#xff0c;配置报警媒介里的message 消息时&#xff0c;操作数据参数EVENT.OPDATA调用的参数是哪个&#xff1f; A&#xff1a;参考 问题二 Q&#xff1a;请问告警为什么只有关闭之前的告警&#xff0c;才会生成新的告警&#xff1f; A&a…

如何用ai打一场酣畅淋漓的数学建模比赛? 给考研加加分!

文章目录 数学建模比赛1. 数学建模是什么&#xff1f;2. 数学建模分工合作2.1 第一&#xff1a;组队和分工合作2.2 第二&#xff1a;充分的准备2.3 第三&#xff1a;比赛中写论文过程 3. 数学建模基本过程4. 2023全年数学建模竞赛时间轴5. 数学建模-资料大全6. 数学建模实战 数…

C++的类和对象

C面向对象的三大特性&#xff1a;封装&#xff0c;继承&#xff0c;多态 万事万物皆可为对象&#xff0c;有其相应的属性和行为 一、封装 1.1 封装的意义 将属性和行为作为一个整体&#xff0c;表现生活中的事物 将属性和行为加以权限控制 在设计类的时候&#xff0c;属性…

ROS参数服务器

一、介绍 参数服务器是用于存储和检索参数的分布式多机器人配置系统&#xff0c;它允许节点动态地获取参数值。 在ROS中&#xff0c;参数服务器是一种用于存储和检索参数的分布式多机器人配置系统。它允许节点动态地获取参数值&#xff0c;并提供了一种方便的方式来管理和共享配…

【智能算法应用】模拟退火算法求解多车型车辆路径问题HFVRP

目录 1.算法原理2.多车型车辆路径HFVRP数学模型3.结果展示4.参考文献5.代码获取 1.算法原理 模拟退火算法&#xff08;Simulated Annealing, SA&#xff09;是一种通用概率算法&#xff0c;用于在给定一个大的搜索空间内寻找问题的近似最优解。这种算法受到物理中退火过程的启…

Jenkins + github 自动化部署配置

1 Jenkins安装 AWS EC2安装Jenkins&#xff1a;AWS EC2 JDK11 Jenkins-CSDN博客 AWS EC2上Docker安装Jenkins&#xff1a;https://blog.csdn.net/hhujjj2005/article/details/139078402 2 登录jenkins http://192.168.1.128:8080/ $ docker exec -it d1851d9e3386 /bin/ba…

【MySQL】库的基础操作

&#x1f30e;库的操作 文章目录&#xff1a; 库的操作 创建删除数据库 数据库编码集和校验集 数据库的增删查改       数据库查找       数据库修改 备份和恢复 查看数据库连接情况 总结 前言&#xff1a;   数据库操作是软件开发中不可或缺的一部分&#xff0…

labelme语义分割标注

参考&#xff1a;同济子豪兄 https://github.com/TommyZihao/MMSegmentation_Tutorials GitHub - TommyZihao/Train_Custom_Dataset: 标注自己的数据集&#xff0c;训练、评估、测试、部署自己的人工智能算法 下载安装Labelme Labelme主页&#xff1a;https://github.com/wke…

linux开放某一个端口具体步骤

场景&#xff1a;当服务器防火墙不能直接关闭&#xff0c;但是客户端必须要访问服务器某一个端口时。 处理&#xff1a;对服务器端进行处理&#xff0c;只将该端口开放出来让客户端访问 本地使用vm安装了一个centos服务器&#xff0c;ip地址是 192.168.200.130。在这里充当服…

考研数学|线代跟谁好,李永乐,汤家凤还是张宇?

如果线代基础不好&#xff0c;那建议开刚开始的时候听汤家凤老师的线代课程 汤家凤教授的线性代数课程常被忽视&#xff0c;多数人倾向于去听李永乐。然而&#xff0c;在我考研的过程中&#xff0c;我曾尝试听李永乐教老师的课&#xff0c;可能是由于我自身基础薄弱&#xff0…

vscode远程连接Ubuntu mysql服务器

注意&#xff1a;刚开始使用root用户死活连接不上&#xff0c;可能就是root用户没有权限的问题&#xff0c;可以尝试创建一个新的数据库用户&#xff0c;授予权限进行连接 ubuntu安装mysql 创建新用户 执行&#xff1a;sudo apt-get install mysql-server安装服务器(yum) 执…

Intel HDSLB 高性能四层负载均衡器 — 基本原理和部署配置

目录 文章目录 目录前言HDSLB-DPVS 的基本原理LVSDPDKDPVSHDSLB-DPVS HDSLB 的部署配置硬件要求软件要求编译安装 DPDK编译安装 HDSLB-DPVS配置大页内存配置网卡配置 HDSLB-DPVS启动 HDSLB-DPVS 测试 HDSLB-DPVS Two-arm Full-NAT 模式问题分析最后 前言 在上一篇《Intel HDSL…

TCP/IP协议(一)

一.报文和协议 协议有什么作用&#xff1f;协议定义通信实体间所交换报文的格式和次序&#xff0c;以及在报文发送和/或接收或者其他事件方面所采取的行动(响应)。 什么是报文&#xff1f;指在网络中传输的数据单元&#xff0c;网络通讯的基本单位。&#xff08;HTTP报文、TCP报…