注:本文为 “QinQ 基础知识 | 配置实例和常见问题” 相关文章合辑。
QinQ 基础知识
曹世宏的博客 于 2018-05-22 13:13:14 发布
QinQ 简介
定义:
QinQ(802.1Q-in-802.1Q)技术是一项扩展 VLAN 空间的技术,通过在 802.1Q 标签报文的基础上再增加一层 802.1Q 的 Tag 来达到扩展 VLAN 空间的功能,可以使私网 VLAN 透传公网。由于在骨干网中传递的报文有两层 802.1Q Tag(一层公网 Tag,一层私网 Tag),即 802.1Q-in-802.1Q,所以称之为 QinQ 协议。
## 目的:
随着以太网技术在网络中的大量部署,利用 802.1Q VLAN 对用户进行隔离和标识受到很大限制。因为 IEEE802.1Q 中定义的 VLAN Tag 域只有 12 个比特,仅能表示 4096 个 VLAN,无法满足以太网中标识大量用户的需求,于是 QinQ 技术应运而生。
QinQ 是通过在原有的 802.1Q 报文的基础上增加一层 802.1Q 标签来实现的,使得 VLAN 数量增加到 4094×4094,扩展了 VLAN 空间。
随着以太网的发展以及精细化运作的要求,QinQ 的双层标签又有了进一步的使用场景。它的内外层标签可以代表不同的信息,如内层标签代表用户,外层标签代表业务。另外,QinQ 报文带着两层 Tag 穿越公网时,内层 Tag 透明传送,也是一种简单、实用的 VPN 技术。因此它又可以作为核心 MPLS VPN 在以太网 VPN 的延伸,最终形成端到端的 VPN 技术。
优点:
- 扩展 VLAN,对用户进行隔离和标识不再受到限制。
- QinQ 内外层标签可以代表不同的信息,如内层标签代表用户,外层标签代表业务,更利于业务的部署。
- QinQ 封装、终结的方式很丰富,帮助运营商实现业务精细化运营。
- 解决日益紧缺的公网 VLAN ID 资源问题
- 用户可以规划自己的私网 VLNA ID
- 提供一种较为简单的二层 VPN 解决方案
- 使用户网络具有较高的独立性
原理描述
基本原理:
QinQ 是指在 802.1Q VLAN 的基础上增加一层 802.1Q VLAN 标签,从而拓展 VLAN 的使用空间。在公网的传输过程中,设备只根据外层 VLAN Tag 转发报文,并根据报文的外层 VLAN Tag 进行 MAC 地址学习,而用户的私网 VLAN Tag 将被当作报文的数据部分进行传输。
QinQ 报文:
QinQ 报文有固定的格式,就是在 802.1Q 的标签之上再打一层 802.1Q 标签,QinQ 报文比 802.1Q 报文多四个字节。
图;QinQ 帧格式
字段解释:
字段 | 长度 | 含义 |
---|---|---|
Destination address | 6 字节 | 目的 MAC 地址。 |
Source address | 6 字节 | 源 MAC 地址。 |
Type | 2 字节 | 长度为 2 字节,表示帧类型。取值为 0x8100 时表示 802.1Q Tag 帧。 如果不支持 802.1Q 的设备收到这样的帧,会将其丢弃。 对于内层 VLAN tag,该值设置为 0x8100 对于外层 VLAN tag,有下列几种类型 0x8100:思科路由器使用 0x88A8:Extreme Networks switches 使用 0x9100:Juniper 路由器使用 0x9200:Several 路由器使用 |
PRI | 3 比特 | Priority,长度为 3 比特,表示帧的优先级,取值范围为 0~7,值越大优先级越高。 用于当交换机阻塞时,优先发送优先级高的数据包。 |
CFI | 1 比特 | CFI (Canonical Format Indicator),长度为 1 比特,表示 MAC 地址是否是经典格式。 CFI 为 0 说明是经典格式,CFI 为 1 表示为非经典格式。 用于区分以太网帧、FDDI(Fiber Distributed Digital Interface)帧和令牌环网帧。 在以太网中,CFI 的值为 0。 |
VID | 12 比特 | LAN ID,长度为 12 比特,表示该帧所属的 VLAN。 在 VRP 中,可配置的 VLAN ID 取值范围为 1~4094。 |
Length/Type | 2 字节 | 指后续数据的字节长度,但不包括 CRC 检验码。 |
Data | 42~1500 字节 | 负载(可能包含填充位)。 |
CRC | 4 字节 | 用于帧内后续字节差错的循环冗余检验(也称为 FCS 或帧检验序列)。 |
报文示例:
图:QinQ 抓包示例
QinQ 封装:
QinQ 封装是指如何把单层 Q 报文转换成双层 Q 报文。
根据不同的封装数据,QinQ 可以分为几种不同类型,包括基本 QinQ 和灵活 QinQ 两大类。其中基本 QinQ 是指基于接口的 QinQ,灵活 QinQ 包括基于 VLAN ID 的 QinQ 和基于 802.1p 优先级的 QinQ,具体如下:
- 基于接口的 QinQ 封装
基于接口的封装是指进入一个接口的所有流量全部封装一个相同的外层 VLAN Tag,封装方式不够灵活,用户业务区分不够细致,这种封装方式也称作基本 QinQ。
- 基于 VLAN ID 的 QinQ 封装(灵活 QinQ)
基于 VLAN ID 的 QinQ 封装可以对不同的数据流选择是否封装外层 Tag、封装何种外层 Tag,因此这种封装方式也称作灵活 QinQ。
例如:当同一用户的不同业务使用不同的 VLAN ID 时,可以根据 VLAN ID 区间进行分流。假设 PC 上网的 VLAN ID 范围是 101~200;IPTV 的 VLAN ID 范围是 201~300;VoIP 的 VLAN ID 范围是 301~400。根据 VLAN ID 范围,对 PC 上网业务封装上外层 Tag 100,对 IPTV 封装上外层 Tag 300,对 VoIP 封装上外层 Tag 500。
- 基于 802.1p 优先级的 QinQ 封装(基于流的灵活 QinQ)
基于 802.1p 优先级的 QinQ 封装可以对不同优先级的数据流选择是否封装外层 Tag、封装何种外层 Tag,因此这种封装方式也称作灵活 QinQ。
例如:当同一用户的不同业务使用不同的优先级,如语音、视频、数据等。可以根据优先级为这些业务建立不同的数据传输通道,方便对业务进行区分。
QinQ 的实现方式:
QinQ 的实现方式可分为以下两种:
- 基本 QinQ
- 如果收到的是带有 VLAN Tag 的报文,该报文就成为带双 Tag 的报文。
- 如果收到的是不带 VLAN Tag 的报文,该报文就成为带有本端口缺省 VLAN Tag 的报文。
- 灵活 QinQ
- 为具有不同内层 VLAN ID 的报文添加不同的外层 VLAN Tag。
- 根据报文内层 VLAN 的 802.1p 优先级标记外层 VLAN 的 802.1p 优先级和添加不同的外层 VLAN Tag。
通过使用灵活 QinQ 技术,在能够隔离运营商网络和用户网络的同时,又能够提供丰富的业务特性和更加灵活的组网能力。
QinQ/Dot1q 终结子接口:
终结主要是指设备对报文的单层或者双层 Tag 进行识别,然后根据后续的转发行为对单层或者双层 Tag 进行剥离或继续传送。
终结一般在路由子接口上执行,即:终结子接口。
QinQ 技术在和 MPLS/IP 核心网连接时,根据不同的情况,会用到不同的终结方法。
- 如果路由子接口是对报文的单层 Tag 终结,那么该子接口称为 Dot1q 终结子接口。
- 如果路由子接口是对报文的双层 Tag 终结,那么该子接口称为 QinQ 终结子接口。
注意:
Dot1q 终结子接口和 QinQ 终结子接口不支持透传不带 VLAN 的报文,收到不带 VLAN 的报文会直接丢弃。
基本 QinQ:
基本 QinQ,是基于接口方式实现的。开启接口的基本 QinQ 功能后,当该接口接收到报文,设备会为该报文打上配置的外层 Tag。如果接收到的是已经带有 VLAN Tag 的报文,则为其加上外层 VLAN Tag;如果接收到的是不带 VLAN Tag 的报文,则先为其加上内层 VLAN Tag,再加上外层 Tag。
灵活 QinQ:
- 基于 VLAN ID 的灵活 QinQ:为具有不同内层 VLAN ID 的报文添加不同的外层 VLAN Tag。
- 基于 802.1p 优先级的灵活 QinQ:根据报文的原有内层 VLAN 的 802.1p 优先级添加不同的外层 VLAN Tag。
灵活 QinQ 功能是对基本 QinQ 功能的扩展,它比基本 QinQ 的功能更灵活。二者之间的主要区别是:
- 基本 QinQ:对进入二层 QinQ 接口的所有帧都加上相同的外层 Tag。
- 灵活 QinQ:对进入二层 QinQ 接口的帧,可以根据不同的内层 Tag 而加上不同的外层 Tag,对于用户 VLAN 的划分更加细致。
TPID(Tag Protocol Identifier):
标签协议标识 TPID(Tag Protocol Identifier)是 VLAN Tag 中的一个字段,表示 VLAN Tag 的协议类型,IEEE 802.1Q 协议规定该字段的取值为 0x8100。
IEEE802.1Q 协议定义的以太网帧的 VLAN Tag。802.1Q Tag 位于 SA(Source Address)和 Length/Type 之间。通过检查对应的 TPID 值,设备可确定收到的帧承载的是运营商 VLAN 标记还是用户 VLAN 标记。接收到帧之后,设备将配置的 TPID 值与帧中 TPID 字段的值进行比较。如果二者匹配,则该帧承载的是对应的 VLAN 标记。例如,如果帧承载 TPID 值为 0x8100 的 VLAN 标记,而用户网络 VLAN 标记的 TPID 值配置为 0x8200,设备将认为该帧没有用户 VLAN 标记。也就是说,设备认为该帧是 Untagged 报文。
另外,不同运营商的系统可能将 QinQ 帧外层 VLAN 标记的 TPID 设置为不同值。为实现与这些系统的兼容性,可以修改 TPID 值,使 QinQ 帧发送到公网时,承载与特定运营商相同的 TPID 值,从而实现与该运营商设备之间的互操作性。以太网帧的 TPID 与不带 VLAN 标记的帧的协议类型字段位置相同。为避免在网络中转发和处理数据包时出现问题,不可将 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 |
QinQ 配置
配置基本 QinQ (二层):
如下图,通过配置基本 QinQ,实现客户网络在运营商网络中的传输。
图:基本 QinQ 配置拓扑
配置文件:
LSW1 和 LSW4 配置相同:
<SW1>dis current-configuration
#
sysname SW1
#
vlan batch 10 20
#
interface GigabitEthernet0/0/1
port link-type access
port default vlan 10
#
interface GigabitEthernet0/0/2
port link-type access
port default vlan 20
#
interface GigabitEthernet0/0/3
port link-type trunk
port trunk allow-pass vlan 10 20
#
LSW3 和 LSW4 配置相同:
[SW2] dis current-configuration
#
sysname SW2
#
vlan batch 100
#
interface GigabitEthernet0/0/1
port link-type dot1q-tunnel // 使能二层 QinQ 功能
port default vlan 100 // 划分接口到 VLAN100
#
interface GigabitEthernet0/0/2
port link-type trunk
port trunk allow-pass vlan 100
#
配置灵活 QinQ(二层):
拓扑如上,LSW1 和 LSW4 配置同上。
LSW2 和 LSW3 配置如下:
[SW2] dis current-configuration
#
sysname SW2
#
vlan batch 100 200
#
interface GigabitEthernet0/0/1
qinq vlan-translation enable
// 开启 QinQ 的 VLAN 转换功能
port hybrid untagged vlan 100 200
// 定义接口出方向剥离 VLAN100 和 VLAN200 的标签
port vlan-stacking vlan 10 stack-vlan 100
// 接口收到来自 VLAN10 的数据帧后叠加一层 VLAN100 的外层标签
port vlan-stacking vlan 20 stack-vlan 200
// 接口收到来自 VLAN20 的数据帧后叠加一层 VLAN200 的外层标签
#
interface GigabitEthernet0/0/2
port link-type trunk
port trunk allow-pass vlan 100 200
#
注:
- 灵活 QinQ 只能用在 hybrid 接口,trunk 口无法实现。
- qing protocol 9100 \ 只会修改针对内层 VLAN TAG 的以太类型的改写,用于不同厂商的设备互通。华为默认为 8100,可配置范围为 0x0600~0xFFFF。
3.基本 QinQ 可配置多层,而灵活 QinQ 只能配置两层,想要配多层,第三层开始得结合配置基本 QinQ。
华为灵活 QinQ 简单配置
许多 123 于 2017-02-16 16:36:45 发布
SW01:
vlan batch 100 200
\#
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 100 200
\#
interface GigabitEthernet0/0/2
qinq vlan-translation enable
port hybrid untagged vlan 100 200
port vlan-stacking vlan 10 stack-vlan 100
port vlan-stacking vlan 20 stack-vlan 200
\#
SW02:
vlan batch 100 200
\#
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 100 200
\#
interface GigabitEthernet0/0/2
qinq vlan-translation enable
port hybrid untagged vlan 100 200
port vlan-stacking vlan 10 stack-vlan 100
port vlan-stacking vlan 20 stack-vlan 200
\#
SW03:
vlan batch 10 20
\#
interface Ethernet0/0/1
port link-type trunk
port trunk allow-pass vlan 10 20
\#
interface Ethernet0/0/2
port link-type access
port default vlan 10
\#
interface Ethernet0/0/3
port link-type access
port default vlan 20
\#
SW04:
vlan batch 10 20
\#
interface Ethernet0/0/1
port link-type trunk
port trunk allow-pass vlan 10 20
\#
interface Ethernet0/0/2
port link-type access
port default vlan 10
\#
interface Ethernet0/0/3
port link-type access
port default vlan 20
\#
在 SW01 的 Gi0/0/1 和 GI0/0/2 抓包:
端口 Gi0/0/2 抓包,只有单层 VLAN10;
在 SW01 的 Gi0/0/1 抓包,VLAN 信息为双层,即内层 10,外层 100;
当用户 VLAN 内的报文需要穿越运营商网络时,可以通过配置 port vlan stacking 在用户 VLAN 的数据帧上再加上一个 VLAN Tag,实现双层 VLAN。
配置灵活 QinQ 功能时,需要注意以下几点:
- 配置灵活 QinQ 功能的当前接口类型必须为 Hybrid,且只在入方向生效。
- 叠加后的外层 VLAN 必须存在,且当前接口必须以 Untagged 方式加入叠加后的 stack vlan 中。
华为 Qinq 介绍及配置实例和常用问题
满地找牙哟 已于 2024-06-30 13:27:19 修改
一、华为 QinQ 的介绍:
华为 QinQ(802.1Q-in-802.1Q
)是一种扩展 VLAN(虚拟局域网)空间的技术,它遵循 IEEE 802.1ad 标准。QinQ 技术通过在原有的 802.1Q 标签报文基础上再嵌套一层 802.1Q 标签,从而实现两层 VLAN 标签的封装,使得每个数据包携带两个 VLAN 标识,以此来扩展 VLAN 的可用数量并提供更多的网络分段和隔离能力。
QinQ 的主要特点和用途:
1.VLAN 扩展:对于大型网络或者服务提供商来说,QinQ 能够解决 VLAN ID 数量限制的问题(基本 VLAN ID 范围为 1-4094)。通过添加第二层标签,理论上可以创建多达 4094 x 4094 个独立的 VLAN 段,极大地扩展了 VLAN 的管理范围。
2. 私网 VLAN 透传:服务提供商可以利用 QinQ 技术为每个客户分配一个唯一的外层 VLAN Tag(公网 Tag),而客户在其内部可以自由使用自己的 VLAN ID(私网 Tag)。这样,客户的私有 VLAN 可以在服务提供商的公网中透明传输,实现了不同客户 VLAN 的隔离,同时也便于服务提供商进行统一管理和维护。
3. 二层隔离和多租户环境:在数据中心或多租户环境中,QinQ 有助于实现不同用户或业务之间的逻辑隔离,每个租户可以有自己的 VLAN 体系,而外层标签则用于区分不同的租户,增强了网络安全性。
4. 简化网络配置和管理:对于服务提供商而言,不需要为每个客户的每个 VLAN 配置单独的物理接口或 VLAN,只需在边缘设备上设置 QinQ,即可处理多个客户的 VLAN 流量,降低了配置复杂度和运营成本。
5. 灵活 QinQ**:华为还提供了灵活 QinQ 技术,这是一种更灵活的实现方式,可以根据接口接收到的报文中的 VLAN 信息,动态添加不同的外层标签。这意味着可以根据内层 VLAN 的不同,实施不同的外层标签策略,增加了网络配置的灵活性和适应性。
应用场景:
- 服务提供商网络:为不同客户提供 VLAN 服务,同时保持他们的网络隔离。
- 数据中心网络:实现租户之间的网络隔离,同时简化网络架构。
- 企业网络:在大型企业中,用于实现不同部门或业务单元的网络分隔和高效管理。
QinQ 技术在现代网络设计中扮演着关键角色,特别是对于需要高级别隔离和大规模 VLAN 管理的场景。
二、华为 QinQ 的配置实例:
以下是华为设备上配置 QinQ 的一个基本实例。此示例假设我们有一个简单的网络环境,需要通过 QinQ 技术实现两个不同企业的业务隔离,同时这两个企业都通过同一个服务提供商的网络进行通信。我们将使用两个 VLAN(VLAN100 和 VLAN200
)作为外层标签(也称为 “服务提供商 VLAN
” 或 “S-VLAN
”),来区分不同企业的流量,而企业内部使用各自的内层 VLAN(例如,企业 1 使用 VLAN2
,企业 2 使用 VLAN3
)。
配置步骤:
1. 登录交换机并进入系统视图
system-view
2. 创建内外层 VLAN
vlan batch 2 to 3 # 创建企业内部使用的 VLAN
vlan batch 100 200 # 创建服务提供商使用的外层 VLAN
3. 配置 QinQ 接口
假设接口 GE0/0/1 连接到企业 1,接口 GE0/0/2 连接到企业 2,我们需要将这些接口配置为 QinQ 类型,实现内外层 VLAN 的封装。
对于接口 GE0/0/1(企业 1):
interface GigabitEthernet0/0/1
port link-type dot1q-tunnel # 配置接口为 QinQ 模式
port default vlan 100 # 设置外层 VLAN 为 100
port vlan-stacking vlan 2 to 3 stack-vlan 100 # 将内层 VLAN2 和 VLAN3 映射到外层 VLAN100
对于接口 GE0/0/2(企业 2):
interface GigabitEthernet0/0/2
port link-type dot1q-tunnel
port default vlan 200
port vlan-stacking vlan 2 to 3 stack-vlan 200
4. (可选)配置上行接口
如果存在上行接口连接到其他网络或服务提供商,可能需要进行相应的 QinQ 或 VLAN 透传配置,具体取决于上行链路的要求。
5. 保存配置
commit
注意事项:
- 确保所有涉及的设备支持 QinQ 功能。
- 根据实际网络需求,可能需要调整 VLAN ID 和接口配置。
- 考虑到网络的整体规划,可能还需配置路由、ACL 等其他网络策略以确保业务的正常运行。
- 在实际操作前,建议在模拟环境或非生产时段进行配置测试,以避免影响现有业务。
以上配置示例展示了如何在华为交换机上设置基本的 QinQ 功能,以实现不同企业或业务间的逻辑隔离和 VLAN 扩展。
三、华为 QinQ 的常见问题:
华为 QinQ 配置和使用过程中,可能会遇到一些常见问题,以下是一些典型问题及其解答:
1.QinQ 流量不通:
- 原因:可能是没有正确创建内外层 VLAN,或者接口配置错误,没有启用 QinQ 功能。
- 解决:检查并确认所有涉及的 VLAN 已正确创建,接口已配置为 QinQ 模式,并设置了正确的默认 VLAN 或 VLAN 映射关系。
2.VLAN ID 资源耗尽:
- 原因:尽管 QinQ 扩展了 VLAN 数量,但不当的 VLAN 规划仍可能导致 ID 资源紧张。
- 解决:合理规划 VLAN 分配策略,复用外层 VLAN 给多个内层 VLAN,或考虑其他网络分段技术如
VxLAN
。
3. 接口模式不匹配:
- 原因:接入设备接口配置为 Access 模式,而期望的是 Trunk 或 QinQ 模式。
- 解决:根据需要修改接口模式为 Trunk 或正确配置为 QinQ 模式。
4.QinQ 报文不被上层设备识别:
- 原因:上行链路设备不支持 QinQ 或未正确配置。
- 解决:确保整个路径上的设备都支持并正确配置了 QinQ,或在边界处做 VLAN 翻译。
5. 配置冲突或覆盖:
- 原因:错误地在同一路由器或交换机接口上配置了相互冲突的 QinQ 或 VLAN 策略。
- 解决:仔细审查配置,确保每项配置都是清晰且不冲突的,必要时重置接口配置重新开始。
6. 灵活 QinQ 配置不当:
- 原因:未能正确配置灵活 QinQ 的规则,导致特定内层 VLAN 的外层标签添加错误。
- 解决:明确内外层 VLAN 映射关系,使用正确的命令配置
VLAN Stacking
规则。
7.STP/RSTP/MSTP 配置问题:
- 原因:在启用 QinQ 的网络中,没有适当调整生成树协议的配置,可能导致环路或阻塞问题。
- 解决:根据 QinQ 配置调整 STP 参数,如确保 BPDU 能够正确传递,并正确处理 VLAN 范围。
8.QoS 策略未适配:
- 原因:QinQ 引入额外的标签可能影响原有的 QoS 标记和策略。
- 解决:重新评估并调整 QoS 配置,确保内外层标签不影响业务优先级。
9. 监控和故障排查困难:
- 原因:QinQ 增加了网络复杂性,使得故障定位和流量监控变得复杂。
- 解决:使用网络分析工具,如
Wireshark
,查看带标签的流量,同时在设备上启用必要的日志和调试信息。
10. 安全配置问题:
原因:QinQ 配置可能与现有的安全策略(如 ACL、端口安全)不兼容。
解决:调整安全策略以适应 QinQ 环境,确保内外层 VLAN 的流量得到正确的控制和保护。
一个简单的三层交换网络,由 ISP、Switch A 和 Switch B 组成。ISP 位于顶部,并与 Switch A 和 Switch B 连接。Switch A 和 Switch B 分别连接到四个企业:企业 1 和企业 2 各有两个分支文字拓扑:
由于我无法直接绘制图像,我可以提供一种不同风格的描述来帮助您理解这个网络拓扑。
这是一个简单的三层交换网络,由 ISP、Switch A 和 Switch B 组成。ISP 位于顶部,并与 Switch A 和 Switch B 连接。Switch A 和 Switch B 分别连接到四个企业:企业 1 和企业 2 各有两个分支。
以下是另一种风格的描述:
ISP (VLAN 100,200; TPID=0x9100)
|
Switch A (GE1/0/3) <--- (GE1/0/3) --> Switch B
| |
+-----+------+ +----+-----+
| | | | | |
V V V V V V
企业 1 (VLAN 10 to 50) 企业 2 (VLAN 20 to 60)
| | | | | |
V V V V V V
S S S S S S
| | | | | |
V V V V V V
S S S S S S
| | | | | |
V V V V V V
S S S S S S
| | | | | |
V V V V V V
S S S S S S
via:
-
QinQ 基础知识 - CSDN 博客 曹世宏的博客 于 2018-05-22 13:13:14 发布
-
华为灵活 qinq 简单配置_灵活 qinq 配置 - CSDN 博客 许多 123 于 2017-02-16 16:36:45 发布
-
华为 Qinq 介绍及配置实例和常用问题 -CSDN 博客 满地找牙哟 已于 2024-06-30 13:27:19 修改