QinQ

article/2025/10/3 17:39:50

7.3.1 QinQ技术诞生的背景

 ——《华为交换机学习指南

   QinQ最初主要是为扩展VLAN ID空间而产生的,但随着城域以太网的发展以及运营商精细化运作的要求,QinQ的双层标签又有了进一步的使用场景。它的内、外层标签可以代表不同的信息,如内层标签代表用户,外层标签代表业务。另外,QinQ数据帧带着两层标签穿越运营商网络,内层标签透明传送,也可以看作是一种简单、实用的VPN技术。因此它又可以作为核心MPLS VPN在城域以太网VPN的延伸,最终形成端到端的VPN技术。由于QinQ方便易用的特点,现在已经在各运营商中得到了广泛的应用,如QinQ技术在城域以太网解决方案中和多种业务相结合。特别是灵活QinQ(Selective QinQ/VLAN Stacking)的出现,使得QinQ业务更加受到了运营商的推崇和青睐。

   我们知道,普通VLAN中的一个VLAN标签是用来区分用户的,但如果想要同时区分用户和业务类型,那么怎么办呢?如图7-11是一个总公司下面连接了两个分支子公司,而各分支子公司中已对不同部门的员工采用了VLAN进行区分,但两个子公司的部门VLAN ID规划是重叠的。这样如果数据帧中只采用一层VLAN标签,总公司就无法区分数据是来自哪个子公司的也就无法针对不同子公司的数据进行任何处理了。

10659021_1385944303fbLG.jpg

图7-11 QinQ典型应用示例

   为了解决这个问题,我们可以设想在总公司的交换机上为各子公司创建了不同的VLAN。这样当连接对应子公司的总公司交换机端口收到数据帧后再在数据帧外面添加一层VLAN标签(此时数据帧中就有两层VLAN标签了,原来的VLAN标签称之为内层VLAN标签,新添加的称之为外层VLAN标签),如为子公司1和子公司2的数据帧分别添加的外层VLAN标签为VLAN 10和VLAN 20,这样就可实现在总公司中对来自不同子公司的数据进行区分了,也可以对来自这两个子公司的数据提供不同的服务,即差分服务了。

   另外,在基于传统的802.1Q协议的二层局域网互联模式中,当两个用户网络需要通过服务提供商(ISP)互相访问时(如在城域以太网中),ISP必须为每个接入用户创建不同的VLAN。这种配置方法一方面使得用户的VLAN在骨干网络上可见,存在一定的安全隐患,同时因为一一对应的VLAN ID,也消耗了大量服务提供商的VLAN ID资源。这对较大的ISP来说是无法承受的,因为只有4094个VLAN ID可用),当接入的用户数目很多时可能使ISP网络的VLAN ID不够用。另外,采用这种普通VLAN部署方式下,不同的ISP接入用户就不能使用相同的VLAN ID,否则就无法实现不同接入用户间的隔离,这时用户的VLAN ID只能由ISP统一规划,导致用户没有自己规划VLAN的权利。

   通过QinQ技术可以有效地解决以上问题,因为它可以为许多不同内层VLAN标签用户使用同一个外层VLAN标签进行封装,解决了ISP的VLAN ID资源不足的问题。另外,通过外层VLAN标签对内层VLAN标签的屏蔽作用,使得用户自己的内层VLAN ID部署可以由用户自己作主,而不必由ISP来统一部署。

   这个双层VLAN标签可以当作单层VLAN标签使用,即仅使用新添加的外层公网VLAN标签,内层私网VLAN可以作为数据来传输,如在本章后面将要介绍的2 to 1的VLAN映射中;当然也可以作为双层VLAN标签来使用(如在本章后面将要介绍的2 to 2的VLAN映射中),整个数据帧中的VLAN标签由内、外双层VLAN标签共同决定,这样一来,就相当于可以使用的VLAN ID数量达到了4094×4094个了,以此来达到扩展VLAN空间的目的。通过这样的双层VLAN标签封装,可以使私网VLAN ID可以在公网上透传,既解决了用户VLAN ID的安全性问题和由用户自己规划私网VLAN ID的需求问题,又解决了ISP的VLAN ID空间不足的问题,因为在ISP中可以为需要相互访问的用户配置相同的外层VLAN,也只需为来自同一用户网络的不同VLAN提供一个VLAN ID。

7.3.2 QinQ封装和终结

    QinQ是在传统802.1Q VLAN标签头基础上再增加一层新的802.1Q VLAN标签头,如图7-12所示。由此可知,QinQ帧比传统的802.1Q帧多了四个字节,即新增的802.1Q VLAN标签。

10659021_138594376405Oe.jpg

 

7-12 传统802.1Q帧和QinQ帧格式比较

    QinQ帧封装的过程就是把单层802.1Q标签的数据帧转换成双层802.1Q标签的数据帧。封装过程主要发生在城域网侧连接用户的交换机端口上进行的。根据不同的VLAN标签封装依据,QinQ可以分为“基本QinQ”和“灵活QinQ”两种类型。具体说明如下。

1.    基本QinQ封装

    “基本QinQ封装”是将进入一个端口的所有流量全部封装一个相同的外层VLAN标签,是一种基于端口的QinQ封装方式,也称“QinQ二层隧道”。开启端口的基本QinQ功能后,当该端口接收到已经带有VLAN标签的数据帧时,则该数据帧就将封装成双层标签的帧;如果接收到的是不带VLAN标签的数据帧,则该数据帧将封装成为带有端口缺省VLAN的一层标签的帧。

     从以上介绍可以看出,基本QinQVLAN标签封装不够灵活,很难有效地区分不同的用户业务,因为它对进入同一个交换机端口的所有数据帧都封装相同的外层VLAN标签。但在需要较多的VLAN时,可以使用这个基本QinQ功能,这样可以减少对VLAN ID的需求,因为进入同一个端口的所有数据帧都封装同一个外层VLAN标签。

     如在图7-13所示的网络中,企业部门1Department1)有两个办公地,部门2Department2)有三个办公地,两个部门的各办公地分别和网络中的PE1PE2相连,部门1和部门2可以任意规划自己的VLAN。这样,可在PE1PE2上通过如下思路配置QinQ二层隧道功能,使得每个部门的各个办公地网络可以互通,但两个部门之间不能互通。

l  在PE1上,对于进入端口Port1Port2的用户(都属于部门1)数据帧都封装外层VLAN 10,对于进入端口Port3中用户(属于部门2)数据帧都封装外层VLAN 20

l  在PE2上,对于进入端口Port1Port2的用户(都属于部门2)数据帧都封装外层VLAN 20

l  PE1上的端口Port4PE2上的端口Port3允许VLAN 20的用户数据帧通过,以便实现连接在PE1Port3上部门2的用户与连接在PE2Port1Port2上部门2的用户互通。

    这种基本QinQ封装就相当于用一个外层的VLAN标签映射同类用户的多个内层VLAN标签,以减少ISP端设备VLAN ID的使用量。

10659021_13859437869feX.jpg

7-13 基本QinQ典型应用示例

2.    灵活QinQ封装

   “灵活QinQ”是对QinQ的一种更灵活的实现,是基于端口封装与基于VLAN封装的结合方式。除了能实现所有基本QinQ的功能外,灵活QinQ对于同一个端口接收的数据帧还可以根据不同的内层VLAN标签执行不同的外层标签封装。它又可分为以下三个子类:

l  基于VLAN ID的灵活QinQ:它是基于数据帧中不同的内层标签的VLAN ID来添加不同的外层标签。即具有相同内层标签的帧添加相同的外层VLAN标签,具有不同内层标签的帧添加不同的外层VLAN标签。这就要求不同用户的内层VLAN IDVLAN ID范围绝对不能重叠或交叉。华为S系列交换机中的S2700S3700S5700S6700仅支持基于VLAN ID的灵活QinQ功能

l  基于802.1p优先级的灵活QinQ:它是基于数据帧中不同的内层标签的802.1p优先级来添加不同的外层标签。即具有相同内层VLAN 802.1p优先级的帧添加相同的外层标签,具有不同内层VLAN 802.1p优先级的帧添加不同的外层标签。这就要求不同用户的内层VLAN802.1p优先级或802.1p优先级范围绝对不能重叠或交叉。基于802.1p优先级的灵活QinQ在华为S系列交换机中S7700S9300S9700系列支持

l  基于流策略的灵活QinQ:它是根据所定义的QoS策略为不同的数据帧添加不同的外层标签。基于流策略的灵活QinQ是基于端口与VLAN相结合的方式实现的,能够针对业务类型提供差别服务。基于流策略的灵活QinQ在华为S系列交换机中S7700S9300S9700系列支持

     以上三种灵活QinQ的配置方法将在本章后面具体介绍。

     当同一用户的不同业务需要使用不同的VLAN ID时,可以根据VLAN ID区间进行分流。现假设PC上网的VLAN ID范围是101~200IPTVVLAN ID范围是201~300;大客户的VLAN ID范围是301~400。面向用户的端口在收到用户数据后根据用户VLAN ID范围,对PC上网业务封装上外层标签100,对IPTV封装上外层标签300,对大客户封装上外层标签500

 【说明】QinQ封装一般在交换式端口上进行,但也可以在路由子接口上进行(QinQ终结只能在路由子接口上进行)。此种方法可以通过一个子接口来透传多个标识用户的VLAN ID,这种子接口也叫QinQ Stacking子接口。这种封装方式也是基于流的QinQ封装方式,但QinQ Stacking子接口只能和L2VPN业务结合起来才有意义,不支持三层转发功能。

     在如图7-14所示的网络中,企业的部门1有多个办公地,部门2也有多个办公地。部门1的网络中使用VLAN 2~VLAN 500;部门2的网络中使用VLAN 500~VLAN 4094PE1Port1端口会同时收到两个部门不同VLAN区间的用户数据帧。

10659021_13859438026yaC.jpg

图7-14 灵活QinQ典型应用示例

此时可根据图中标识的各办公地的用户VLAN ID范围在PE1PE2上通过如下思路配置基于VLAN的灵活QinQ功能,使得每个部门的各个办公地网络可以互通,但两个部门之间不能互通。具体配置思路如下:

l  对于进入PE1Port1端口的用户数据帧,依据其VLAN ID的不同添加对应的外层VLAN标签。如VLAN ID2~500之间,则封装VLAN ID10的外层标签;如VLAN ID1000~2000之间,则封装VLAN ID20的外层标签;

l  对于进入PE1Port2端口的用户数据帧,如果VLAN ID100~500之间,则封装VLAN ID10的外层标签;

l  对于进入PE2Port1端口的用户数据帧,如VLAN ID1000~4094之间,则封装VLAN ID20的外层标签;

l  对于进入PE2Port2端口的用户数据帧,如果VLAN ID500~2500之间,则封装VLAN ID20的外层标签;

l  在PE1PE2Port3端口上允许VLAN 20的帧通过,以便实现连接在PE1Port1端口下连接的部门2用户与连接在PE2Port1Port2的部门2的用户互通。

     从以上可以看出,灵活QinQ比基本QinQ的外层标签封装更加灵活,可可以根据用户数据帧中的原来的VLAN ID范围来确定封装不同的外层标签,这样更有方便了对相同网络中不同业务的用户数据流提供差分服务。

3.    QinQ/Dot1q终结子接口

     QinQ/Dot1q终结是指设备对数据帧的双层或者单层VLAN标签进行识别,根据后续的转发行为对帧中的双层或者单层VLAN标签进行剥离,然后继续传送。也就是这些VLAN标签仅在此之前生效,后面的数据传输和处理不再依据帧中的这些VLAN标签。
 【经验之谈】VLAN终结的实质包括两个方面:
      l  对接口收到的VLAN报文,去除VLAN标签后进行三层转发或其他处理。从设备其它接口转发出去的报文是否带有VLAN标签由对应的端口类型及其数据发送规则决定。
      l  对接发送的报文,又将相应的VLAN标签信息添加到报文中后再发送。

     终结一般在路由子接口上执行,即终结子接口,如我们在单臂路由中就要配置路由子接口的802.1Q的VLAN终结。如果路由子接口是对数据帧的单层VLAN标签终结,那么该子接口称为Dot1q 终结子接口;如果路由子接口是对数据帧的双层VLAN标签终结,那么该子接口称为QinQ终结子接口。QinQ终结子接口根据终结的用户VLAN标签的类型,通常分为两种子接口:

l  明确的QinQ终结子接口:两层VLAN标签为固定的值。

l  模糊的QinQ终结子接口:两层VLAN标签为范围值,即:终结的内、外层标签都为一个VLAN ID范围值。

转载于:https://www.cnblogs.com/sddai/p/6204481.html


http://chatgpt.dhexx.cn/article/KxS9SCW3.shtml

相关文章

QinQ技术

简要介绍 QinQ技术(也称Stacked VLAN 或Double VLAN)是指将用户私网VLAN标签封装在公网VLAN标签中,使报文带着两层VLAN标签穿越运营商的骨干网络,在公网中只根据外层VLAN标签传播,私网VLAN标签被屏蔽,这样…

什么是QinQ, QinQ基础,VLAN双层TAG

一、QinQ简介 IEEE 802.1Q 定义的 VLAN ID 域有 12 个比特,最多可以提供 4094 个 VLAN。但在实际应用中, 尤其是在城域网中,需要大量的 VLAN 来隔离用户,4094 个 VLAN 远远不能满足需求。QinQ 使整 个网络最多可以提供 4094409…

计算机网络——华为QINQ详解及其实验配置

创作不易,记得点赞哦 QinQ协议在用户私网VLAN Tag之外封装公网VLAN Tag,在公网中报文只根据公网VLAN Tag传播。QinQ为用户提供一种较为简单的二层VPN隧道。 目录 一. QINQ简述: 1.2 QinQ封装结构图 1.3 QinQ的分类 二 各QINQ的实验 2…

QinQ基础知识

QinQ简介 定义: QinQ(802.1Q-in-802.1Q)技术是一项扩展VLAN空间的技术,通过在802.1Q标签报文的基础上再增加一层802.1Q的Tag来达到扩展VLAN空间的功能,可以使私网VLAN透传公网。由于在骨干网中传递的报文有两层802.1…

10 个有用的 Python 字符串函数你必须知道

💂 个人网站:【 海拥】【保卫机器人】【骑士冒险】🤟 风趣幽默的前端学习课程:👉28个案例趣学前端💅 想寻找共同学习交流、摸鱼划水的小伙伴,请点击【摸鱼家族】💬 免费且实用的计算机相关知识题…

Python字符串函数使用详解

Python的友好在于提供了非常好强大的功能函数模块,对于字符串的使用,同样提供许多简单便捷的字符串函数。Python 字符串自带了很多有用的函数,在字符串函数之前先介绍一个非常实用的dir()内置函数,因为对每一个初学者还是大佬级别…

MySQL 十大常用字符串函数

数据库函数是一种具有某种功能的模块,可以接收零个或多个输入值,并且返回一个输出值。MySQL 为我们提供了许多用于处理和分析数据的系统函数,本文给大家介绍 10 个常用的字符串函数,以及相关的其他函数。 1 CONCAT() CONCAT(str1,…

Oracle 中常用的字符串函数总结

一、substr 函数 —— 字符串截取 格式1: substr(string,start_pos,length) 格式2: substr(string,start_pos) 说明: 从指定位置start_pos截取字符串string的length位,如果不指定length(格式2)则从指…

MySQL --- 常用函数 - 字符串函数

函数 MySQL 函数会对传递进来的参数进行处理,并返回一个处理结果,也就是返回一个值。 MySQL 包含了大量并且丰富的函数,咱们讲解几十个常用的,剩下的比较罕见的函数我们可以到「MySQL 参考手册」查询。 字符串函数 函数作用UP…

常用字符串函数的使用

目录 一.求字符串长度 1.strlen用来计算字符串的长度(该长度不包括\0) 二.长度不受限制的字符串函数 1.strcpy字符串拷贝 2.strcat附加一个字符串 3.strcmp字符串大小比较 三.长度受限制的字符串函数介绍 1.strncpy字符串拷贝(能设置要拷贝的字符个…

字符串操作常用函数

字符串常用函数有如下 puts() //输出字符串 gets() //获取字符串 strlen() //计算字符串长度 memset() //初始化 strcpy() strncpy() //字符串的拷贝 strcat() //字符串的拼接 strcmp() //字符串的比较 strchr() strstr() //字符串的查找 strtok…

字符串函数

本文重点 重点介绍处理字符串内存的库函数的使用和注意事项 求字符串长度 ——strlen长度不受限制的字符串函数 ——strcpy、strcat、strcmp长度受限制的字符串函数介绍——strncpy、strncat、strncmp字符串查找——strstr、strtok错误信息报告——strerror字符操作 前言 C语…

java 使用 jep3.5 解析公式自动计算(包含BigDecimal模式 浮点数精准计算)

下载地址: jep3.5 jar包与文档.rar 由于3.X并未上传maven所有只能下载jar包使用maven本地导入 <dependency><groupId>com.singularsys</groupId><artifactId>jep</artifactId><version>3.5</version><scope>system</scope…

【译】Jep 文档(1)——介绍(Introction)

原文连接&#xff08;http://www.singularsys.com/jep/doc/html/index.html&#xff09; 介绍 综述 Jep 是一个用于分析和计算数学表达式的java库。有了这个包&#xff0c;您就可以把数学公式当作是字符串&#xff0c;并且立即求出它们的值。许多常见的数学函数和常量都是内…

Java RMI反序列化/JEP290相关

RMI 远程过程调用 (Remote Procedure Call)是一种服务器-客户端模式&#xff0c; Java的RMI&#xff08;Remote Method Invocation&#xff09;是一种RPC实现。 其基本思想是程序员可以像本地那样&#xff0c;与远程对象进行交互。 步骤&#xff1a; 1、创建一个接口IRemote…

Java第三方库——Jep数学公式计算

Java第三方库——Jep数学公式计算 官网简介&#xff1a;JEP JAVA仅用几行代码解析和计算数学表达式。这个包允许用户以字符串的形式输入公式&#xff0c;并立即对其求值。JEP支持用户定义的变量、常量和函数。包括一些常用的数学函数和常量。 1.下载3.x版本依赖并引入 官方网站…

你知道Java中的JCP, JEP, JLS, JSR是什么意思吗?

目录 一、JCP 二、JSR 三、JLS 四、JEP 公众号&#xff1a;MCNU云原生&#xff0c;欢迎微信搜索关注&#xff0c;更多干货&#xff0c;及时掌握。 JCP, JEP, JLS, JSR这些概念是Java社区中的一些概念&#xff0c;但是没有没有经常关注社区的童鞋们未必知道这些缩写所代表的…

Java中JCP, JEP, JLS, JSR是什么

JCP Java Community Process JCP&#xff08;Java Community Process&#xff09;是一个开放的国际组织&#xff0c;主要由Java开发者以及被授权者组成&#xff0c;职能是发展和更新。 JCP维护的规范包括J2ME、J2SE、J2EE&#xff0c;XML&#xff0c;OSS&#xff0c;JAIN等。组…

java 使用JEP解析字符串计算公式 求值(附带自定义函数编写)

2.X 存在精确度问题 推荐使用3.X 参考文章: java 使用 jep3.5 解析公式自动计算(包含BigDecimal模式 浮点数精准计算) 1.增加jep依赖 <dependency><groupId>org.scijava</groupId><artifactId>jep</artifactId><version>2.4.2</versio…

使用Jep在Java中执行Python代码

接上次用Eclipse编写Python代码&#xff1a;使用Eclipse编写Python代码_Cc_Sonia的博客-CSDN博客_eclipse写python程序 为了把深度学习模型部署到Java App上&#xff0c;需要用Java调用Python。试过Jython&#xff0c;但它只对python2有效。。。最后supervisor建议使用Jep&…