配置 Q-in-Q
本主题介绍如何将您的本地网络设备连接到使用 Q-in-Q802.1Q 隧道(也称为 Q-in-Q 或 802.1ad)是一种 OSI 第 2 层服务提供商在为客户提供服务时使用的技术。802.1ad 支持 内层 和 外层 两种标签,其中 外层(有时称为面向服务提供商的 S-tag)可以被移除,以显露 内层(C-tag 或客户)标签,用于对数据进行分段。
的云服务提供商 (CSP),例如 Azure ExpressRoute。另一些 CSP 需要 Q-in-Q,但并非所有网络设备都支持 Q-in-Q,或在单个物理接口上混合使用单标签与多标签(“选择性 Q-in-Q”)。因此,本主题还包含在不原生支持 Q-in-Q 的网络设备上,配置多层 VLAN 标签处理的方法。
Q-in-Q 概述
Q-in-Q,也称为 802.1ad,是网络服务提供商 (NSP) 常用的一种协议,用于提供更高的二层灵活性。Q-in-Q 允许在单个以太网帧中插入多个 VLAN 标签。在一个帧中堆叠多个 VLAN 标签可以实现路由域隔离,因为附加的标签能够标识并分离客户流量。通过为每个客户使用不同的 VLAN 标签,可以在帧内识别该客户的流量,并在服务提供商网络中传输。
重要
为了在 802.1ad 标准下区分 VLAN 标签,内层通常使用 EtherType 0x8100,外层使用 0x88a8。大多数网络厂商的 Q-in-Q 默认配置是内外层 EtherType 均为 0x8100。Megaport 对双标签帧的规范是内外层标签均为 0x8100。
使用 Q-in-Q 时,当数据包从 NSP 或运营商网络前往云(或其他)服务提供商的 VLAN,标识客户流量的内层 VLAN 标签(C-Tag)会被插入到服务提供商提供的外层 VLAN 标签(S-Tag)之内。S-Tag 提供一个单一 VLAN,用于封装其中的多个 VLAN。在此配置中,单个 VXC 可以在两个网络端点之间承载多个 VLAN 标签。
有关 Q-in-Q 的更多信息,请参见 连接 VXC 和 Megaport blog post Q & A for Q-in-Q: Part 1。 有关为 Azure 配置 Q-in-Q 的更多信息,请参见 Megaport blog post Q & A for Q-in-Q: Part 2。
通过 Megaport VXC 了解 Q-in-Q
Virtual Cross Connect(VXC)是在两个端点之间的点到点二层电路,每一端都映射一个 VLAN ID,并且可选地将 A 端与 B 端 VLAN 标签在 Megaport 网络中独立映射。
下图展示了启用了 private peering 和 Microsoft Peering 的 Azure ExpressRoute。一个 VXC 在 VLAN 1000(S-Tag)上将客户边缘连接到 Microsoft 边缘。客户边缘支持 Q-in-Q。private peering 运行在 VLAN 100(C-Tag)上,Microsoft Peering 运行在 VLAN 200(C-Tag)上,以与 Azure 建立三层连接和 BGP peering。
如果我的路由器或交换机不支持 Q-in-Q 怎么办?
本节介绍即使承载并终接您的 Megaport 连接的网络设备不原生支持 Q-in-Q,也可以连接到需要 Q-in-Q 的 B 端服务的方法。
| Q-in-Q Alternatives | Method | Drawbacks | ||
|---|---|---|---|---|
| Single Azure peering VLAN | 您可以配置 VXC,使 Megaport 通过将 Private Peering 或 Microsoft Peering 的某个 B 端 VLAN ID 重映射到面向客户的 Megaport VLAN(A 端),从而移除对 Q-in-Q 的要求。 | 每个 VXC 只能使用一种 Microsoft peering 类型。 | ||
| Untag the VXC attached to the customer Port | 您可以将 VXC 配置为未打标签(untagged),以自动去除 S-Tag。 | 将 VLAN 设为未打标签会将 Port 限制为单个 VXC 连接。采用此方法意味着您的 Port 只能配置一个 B 端目标,尽管它会从该对端以单标签/dot1q 方式接收所有内层/C-Tag。 | ||
| Deploy a Megaport Cloud Router | 您可以部署 Megaport Cloud Router(MCR),以自动管理一个或两种 peering 类型的 Q-in-Q 要求。 | 需要额外的 MCR 成本以及连接到 MCR 的额外 VXC。 |
连接到 Microsoft ExpressRoute 的 VXC 可能包含一个或两个内层 VLAN 标签。这些是您在 Microsoft Azure 控制台中为指定 peering 类型配置的 C-Tag。请注意,在此场景中,即使只使用单个 Microsoft 边缘设备(主用或备用)或一种 peering 类型(private 或 Microsoft),Q-in-Q 也是必需的。支持 Q-in-Q 的网络设备可以通过剥离外层 VLAN 标签(S-Tag)来访问这些内层标签。如果您的网络设备不支持 Q-in-Q,则无法访问内层标签。
注意
还存在其他 Q-in-Q 变通方案,例如在客户侧通过多台设备对 Q-in-Q 帧进行去封装,或在单台设备内使用回环线缆,通过多个端口的不同内外层 VLAN 配置级联来处理。然而,通常不建议在生产网络中采用这些方法。
单个 Azure Peering VLAN
对于 Microsoft Azure ExpressRoute 连接,Megaport 使用 Microsoft Service Key(以及关联的主用与备用目标端点选择),并提供按指定 Azure peering 类型“拆分”封装 C-Tag 的能力。 在选择主用或备用目标 B 端端口后,您可以在新建 ExpressRoute 连接的 Connection Details 面板中启用 Configure Single Azure Peering VLAN,以启用此功能。
提示
我们建议使用 Single Azure Peering VLAN 选项。该选项提供完整功能且实现最简单。使用 Single Azure VLAN,您可以在单个 ER 电路上使用 private 或 Microsoft peering,而无需支持 Q-in-Q 的设备、MCR 或未打标签的端口。注意,使用此选项时,每个 VXC 仅能使用一种 peering 类型(private 或 Microsoft),因此要同时使用两种 peering 类型需要两个 VXC。
启用 Single Azure Peering VLAN 功能后,您可以指定一个 Azure peering VLAN,与您随后在 Azure ExpressRoute 中为所选 Peering 类型配置的值(通过 Microsoft Azure portal 或其他配置方法)相匹配。有关更多信息,请参见 Tutorial: Create and modify peering for an ExpressRoute circuit using the Azure portal。
如果您将 Preferred A-End VLAN (首选 A 端 VLAN) 字段留空,则在您下单时会为 VXC 随机分配一个 VLAN;否则请输入一个 VLAN,系统会执行校验以确保该 VLAN 可用。
此示例显示,Azure 的 C-Tag 值 200(在关联的 ExpressRoute 电路上对应 Private 或 Microsoft 任一 peering 类型)被透明映射为单标签 VXC 的 VLAN 值 3001。也就是说,连接到物理 Megaport 接口的客户设备无需配置任何 Q-in-Q 设置,因为 dot1q VLAN 3001 会以正确的标签传递给对应的面向 Microsoft 的 B 端边缘设备。
在此配置中,可以在给定的 ExpressRoute 电路上同时使用主用与备用 Microsoft ExpressRoute 端点,并在单个客户侧端口上映射到不同的 VLAN 标签。这在 Azure ExpressRoute 服务级别协议 (SLA) 的要求范围内是合规的。不过,我们建议您采用单站点端口与设备(zonal)多样性,或将主用/备用 ExpressRoute 连接分散到两个启用 Megaport 的位置,以确保不存在任何单点故障。
有关 Azure ExpressRoute SLA 的更多信息,请参见 SLA for Azure ExpressRoute。
采用此方法时,无法在面向主用或备用 ExpressRoute 的任一 VXC 上使用多于一种 peering 类型,因为这种标签转换在每条 VXC 电路路径上只能发生一次。进一步的变通方法详见以下各节;但是请注意,Microsoft 目前不支持在单个 ExpressRoute 电路对上按多种 peering 类型拆分带宽。在大多数情况下,建议部署两对 ExpressRoute 来实现这一配置目标。
注意
以下各节继续以 Microsoft ExpressRoute 为示例来说明变通方法。请注意,这些变通方法并非 Azure 端点所独有,也可用于 Megaport 上的其他连接,其中 B 端可能会指定或要求使用 Q-in-Q,在单个 S-Tag/外层 VXC VLAN 中承载多个 C-Tag/内层 VLAN。之所以沿用 Microsoft ExpressRoute 示例,是为了保持客户场景的一致性。
将 VXC 配置为未打标签以自动处理 S-Tag
注意
采用此方法意味着客户 Port 只能配置一个 B 端目标,但会从该对端以单标签/dot1q 的方式接收所有内层/C-Tag。
您可以配置 VXC,使 Megaport 去除外层 VLAN(S-Tag),并将 Private Peering、Microsoft Peering 或两者之一/两者的内层 VLAN(C-Tag)呈现给客户 Port。
目前,此流程在每个 ExpressRoute 电路连接上仅允许一个 VXC(可选择主用或备用端口呈递),尽管可以在该 VXC 上同时承载两种 peering 类型,因为它们会以一个或两个 dot1q VLAN(Private、Microsoft Peering 或二者)呈现给客户端口。
重要
客户端口将按照 Azure portal 中在指定 peering 类型下所定义的内层 VLAN 标签在 A 端客户端口接收它们。有关更多信息,请参见 连接 Microsoft Azure ExpressRoute。
注意
- 每个 ExpressRoute 订阅在所选的 Microsoft 边缘位置包含两个端口目标。若要同时接收主用和备用 ExpressRoute 电路,在此配置中您需要从 Megaport 获取两个端口。Azure VNET VLAN 标签在两个端口上是相同的。Megaport 无法更改主用和备用电路的 VLAN 标签,也无法在同一个物理接口上交付同一个 VLAN 两次。
- 如果您仅在 Azure ExpressRoute 配置中设置了 private 或 public peering,则在已配置的 VXC 上,仅与 ExpressRoute service key 关联的 VLAN 可用,并与客户端口一一映射。
部署 Megaport Cloud Router
Megaport Cloud Router(MCR)支持多云、多区域使能,包括支持通过 Q-in-Q 连接到多个云目的地。S-Tag(外层标签)属于与您的 MCR 关联的 A 端 VLAN,并会透明承载您的 C-Tag。在 Megaport Portal 中为 Azure 云配置 private 和 public peering 时,S-Tag 会自动配置。下图展示了一个示例配置:
当 MCR 上的多个 Azure VXC 使用相同的 VLAN 100 标签(private peering)和相同的 VLAN 200 标签(public peering)时,MCR 会为终止在该 MCR 上的每个 Azure VXC 管理 Q-in-Q 隧道。每个 Azure VLAN 仍然是一个独立的逻辑接口。