配置 Q-in-Q 隧道和 VLAN Q-in-Q 隧道以及 VLAN 转换
了解 Q-in-Q 隧道和 VLAN 转换
服务提供商可通过 Q-in-Q 隧道和 VLAN 转换在两个客户站点之间创建第 2 层以太网连接。提供商可以在链路上隔离不同客户的 VLAN 流量(例如,如果客户使用重叠的 VLAN ID),或将不同的客户 VLAN 捆绑到单个服务 VLAN 中。数据中心可以使用 Q-in-Q 隧道和 VLAN 转换将客户流量隔离到单个站点内,或者在不同地理位置的云数据中心之间实现客户流量传输。
通过使用 Q-in-Q 隧道,提供商可以通过添加另一层 802.1 Q 标记,从而将客户流量隔离或捆绑到更少或不同的 VLAN 中。当客户具有重叠的 VLAN ID 时,Q-in-Q 隧道非常有用,因为客户的 802.1Q (dot1Q) VLAN 标记前面会附加服务 VLAN (S-VLAN) 标记。由瞻博网络 Junos 操作系统 (Junos OS) 实施的 Q-in-Q 隧道可支持 IEEE 802.1 ad 标准。
本主题将介绍如下内容:
- Q-in-Q 隧道的工作原理
- VLAN 转换的工作原理
- 使用双 VLAN 标记转换
- 发送和接收未标记数据包
- 禁用 MAC 地址学习
- 将 C-VLAN 映射到 S-VLAN
- Q-in-Q VLAN 上的路由 VLAN 接口
- Q-in-Q 隧道和 VLAN 转换的限制
Q-in-Q 隧道的工作原理
在 Q-in-Q 隧道中,当数据包从客户 VLAN (C-VLAN) 传输到服务提供商的 VLAN 时,会将客户特定的 802.1Q 标记添加到数据包中。此附加标记用于将流量隔离到服务提供商定义的服务 VLAN (S-VLAN) 中。数据包的原始客户 802.1Q 标记将被保留,并以透明传输的方式,通过服务提供商的网络。数据包向下行方向离开 S-VLAN 时,附加的 802.1Q 标记将被删除。
实施中的所有 VLAN 都可以是服务 VLAN。也就是说,如果受支持的 VLAN 总数为 4090,所有 VLAN 均可以充当服务 VLAN。
在瞻博网络 EX 系列以太网交换机上启用 Q-in-Q 隧道后,中继接口就会被视为服务提供商网络的一部分,而接入接口则会被视为面向客户的接口。在这种情况下,接入接口可以同时接收带标记的帧和不带标记的帧。
从 Junos OS 14.1X53-D30 开始,您可以将同一个接口同时配置为 S-VLAN/NNI 接口和 C-VLAN/UNI 接口。这意味着,同一物理接口可以同时传输带有单标记的帧和带有双标记的帧。凭借该功能,您可以在网络拓扑中实现最大灵活性,并能够充分利用接口。
一个接口可以是多个 S-VLAN 的成员。您可以将一个 C-VLAN 映射到一个 S-VLAN (1:1),也可以将多个 C-VLAN 映射到一个 S-VLAN (N:1)。这将对数据包进行双标记,用于隔离和捆绑 C-VLAN 的附加层。C-VLAN 和 S-VLAN 标记均具有唯一性;因此,您可以同时拥有两个 ID 相同的 VLAN(C-VLAN 和 S-VLAN),例如 C-VLAN 101 和 S-VLAN 101。您可以将接收到的客户标记集合限制为一系列的标记或离散值。在下行方向上,C-VLAN 的服务等级 (CoS) 值不变。您可以选择将入口优先级和 CoS 设置复制到 S-VLAN。在非 ELS 交换机上,您可以使用专用 VLAN 隔离用户,以防止其在用户接口之间转发流量,即使这些接口在同一 VLAN 中也可实现。
启用 Q-in-Q 隧道时,中继接口将被视为服务提供商或数据中心网络的一部分。接入接口会被视为面向客户的接口,并接受已标记和未标记的帧。使用多对一捆绑或映射特定接口时,如果要接受这些数据包,必须使用 native
选项为未标记和优先级标记的数据包指定 S-VLAN。(可将优先级标记数据包的 VLAN ID 设置为 0,其优先级代码点位可采用 CoS 值进行配置。)
QFX5100 和 EX4600 交换机上的 Q-in-Q 隧道不支持优先级标记的数据包。
如果没有为其指定 S-VLAN,则未标记的数据包会被丢弃。native
选项无法用于一体化捆绑,因为当所有数据包均映射到一个 S-VLAN 时,无需为其指定未标记和优先级标记的数据包。
使用多对一捆绑和特定接口映射方法将 C-VLAN 映射到 S-VLAN 时,您可以使用 native
选项为未标记和优先级标记的数据包指定 S-VLAN。(该方法不适用于支持 ELS 的交换机。)否则,数据包将被丢弃。native
选项无法用于一体化捆绑,因为当所有数据包均映射到一个 S-VLAN 时,无需为其指定未标记和优先级标记的数据包。有关将 C-VLAN 映射到 S-VLAN 的方法,请参阅本文档的“将 C-VLAN 映射到 S-VLAN”部分。
只有在 QFabric 系统上,您才可以使用 native
选项将指定的内部标记应用于通过接入接口进入的未标记数据包。如果您的 QFabric 系统连接到托管发送未标记流量的客户虚拟机的服务器,并且每个客户的流量在通过 QFabric 传输时都需要自己的 VLAN,则此功能非常有用。您可以为每个客户的流量应用一个唯一的内部 (C-VLAN) 标记,然后应用一个外部标记 (S-VLAN) 标记,以便通过 QFabric 进行传输,而不是为每个客户使用单独的 VLAN(这可能会很快导致 VLAN 耗尽)。这样,您就可以隔离客户的流量,同时仅使用一个 QFabric VLAN。使用映射语句的 inner-tag
选项实现此功能。
在非 ELS 交换机上,您可以根据相关策略使用防火墙过滤器将接口映射到 VLAN。当您希望将端口的流量子集映射到您选定的 VLAN,而非系统已指定的 VLAN 中时,使用防火墙过滤器将接口映射到 VLAN 会非常有用。要配置防火墙过滤器将接口映射到 VLAN,则必须将 vlan
选项配置为防火墙过滤器的一部分,并在接口配置中为每个使用过滤器的逻辑接口指定选项 mapping policy
。
在 EX4300 交换机上,您可以在同一以太网端口上配置多个逻辑接口,但每个逻辑接口仅支持单标记数据包,并且该标记包含的 VLAN ID 必须与其他逻辑接口支持的 VLAN ID 不同。在此情况下,您无法在带有多个逻辑子接口的以太网端口上启用 Q-in-Q 隧道。
Q-in-Q 隧道不会影响在 C-VLAN 上配置的任何服务等级 (CoS) 值。这些设置被保留在 C-VLAN 标记中,可在数据包离开 S-VLAN 后使用。无法将 CoS 值从 C-VLAN 标记复制到 S-VLAN 标记。
根据您的接口配置,您可能需要调整中继或访问端口的 MTU 值,以容纳 Q-in-Q 隧道添加标记所用的 4 个字节。例如,如果您在接入和中继端口上使用默认的 1514 字节 MTU 值,则需要进行以下任一调整:
将接入链路上的 MTU 减少至少 4 个字节,以便在添加 S-VLAN 标记时,帧不会超过中继链路的 MTU。
增加中继链路上的 MTU,以便链路可以处理更大的帧。
您只能在接入端口(非中继端口)上配置 Q-in-Q 隧道。
VLAN 转换的工作原理
VLAN 转换会将传入的 C-VLAN 标记替换为 S-VLAN 标记,而不是添加附加标记。C-VLAN 标记会因此丢失,所以单标记数据包在离开 S-VLAN (链路的另一端)时通常不带标记。如果传入数据包预先应用了 Q-in-Q 隧道,VLAN 转换将替换外部标记,当数据包离开链路另一端的 S-VLAN 时将保留内部标记。传入数据包的标记与 C-VLAN 标记不匹配时,此数据包将被丢弃,除非存在为这些标记附加的 VLAN 转换配置。
要配置 VLAN 转换,请在 [edit vlans interface]
层级使用映射 swap
语句。只要 C-VLAN 和 S-VLAN 标记具有唯一性,您就可以在访问端口上配置多个从 C-VLAN 到 S-VLAN 的转换。如果仅在接口上转换一个 VLAN,则无需将 dot1q-tunneling
语句包含在 S-VLAN 配置中。如果要转换多个 VLAN,则必须使用dot1q-tunneling
语句。
您只能在接入端口上配置 VLAN 转换。您不能在中继端口上配置该功能,也不能在同一接入端口上配置 Q-in-Q 隧道。对于给定的 VLAN 和接口,您只能配置一个 VLAN 转换。例如,您仅可在接口 xe-0/0/0 上为 VLAN 100 创建一个转换。
QFabric 系统不支持 VLAN 转换。
使用双 VLAN 标记转换
从 Junos OS (14.1X53-D40) 开始,您可以使用双 VLAN 标记转换(也称为双 VLAN 标记重写)功能将交换机部署到服务提供商的网域中,从而允许将双标记、单标记和未标记的 VLAN 数据包引入或退出交换机。表 1显示了为双 VLAN 标记转换添加的操作。
操作 |
功能 |
---|---|
交换-推送 |
交换 VLAN 标记并推送新的 VLAN 标记 |
弹出-交换 |
弹出外部 VLAN 标记并交换内部 VLAN 标记 |
交换-交换 |
同时交换外部和内部 VLAN 标记 |
双 VLAN 标记转换支持以下功能:
在同一物理接口上进行 S-VLAN (NNI) 和 C-VLAN (UNI) 配置
控制 VSTP、OSPF 和 LACP 等协议
IGMP 侦听
在单标记接口上进行专用 VLAN (PVLAN) 和 VLAN 配置
在内部和外部 VLAN 标记上使用 TPID 0x8100
发送和接收未标记数据包
要使接口能够发送和接收未标记的数据包,必须为物理接口指定本征 VLAN。当接口收到未标记的数据包时,它会将本机 VLAN 的 VLAN ID 添加到 C-VLAN 字段的数据包中,并同时添加 S-VLAN 标记(因此数据包具有双标记),并将新标记的数据包发送到映射的接口。
以上段落中的说明不适用于:
非 ELS 交换机。
运行的 Junos 版本低于 Junos OS 19.3R1 版的 EX4300 交换机。
当上文简表中的交换机接收到未标记的数据包时,它们会将 S-VLAN 标记添加至数据包(因此数据包为单标记数据包),并将新标记的数据包发送到映射接口。
确保在 Q-in-Q 设置中配置的所有交换机均使用单标记方法或双标记方法运行。如果交换机使用的方法不同,则设置将失效。
从 Junos OS 19.3R1 版开始,您可以将 EX4300 交换机配置为使用双标记方法。将配置语句 input-native-vlan-push 设置为enable
,并确保将 input-vlan-map 配置语句设置为push
,如以下示例中所示:
[edit interfaces ge-1/0/45] flexible-vlan-tagging; native-vlan-id 20; input-native-vlan-push enable; encapsulation extended-vlan-bridge; unit 10 { vlan-id-list 10-100; input-vlan-map push; output-vlan-map pop; }
在支持此功能的交换机上(EX4300 交换机除外),默认情况下会将 input-native-vlan-push 语句设置为enable
。(在 EX4300 交换机上,默认情况下会将语句input-native-vlan-push
disable
设置为。)但是,我们建议您检查配置以确保将 input-vlan-map 设置为 push
—如果未进行该设置,该功能将不起作用。
要指定本机 VLAN,请在 [edit interfaces interface-name]
层级使用 native-vlan-id
语句。本机 VLAN ID 必须与 C-VLAN 或 S-VLAN 匹配,或者包含在逻辑接口上指定的 VLAN ID 列表中。
例如,在 C-VLAN 接口的逻辑接口上,您可以指定一个 100-200 的 C-VLAN ID 列表。然后,在 C-VLAN 物理接口上,您可以指定 150 作为本征 VLAN ID。此配置能够正常运行,因为 ID 为 150 的本征 VLAN 包含在 100-200 的 C-VLAN ID 列表中。
瞻博网络建议,在使用任何一种方法将 C-VLAN 映射到 S-VLAN 时,配置一个本征 VLAN。要了解将 C-VLAN 映射到 S-VLAN 的方法,请参阅本主题下的“将 C-VLAN 映射到 S-VLAN”部分。
禁用 MAC 地址学习
在 Q-in-Q 部署中,来自下行接口的客户数据包在传输时,不会更改 MAC 源地址和目的地址。您可以在全局、接口和 VLAN 层级禁用 MAC 地址学习:
要对全局禁用地址学习,请禁用交换机 MAC 地址学习。
要在接口层级禁用地址学习,请禁用包含特定接口的所有 VLAN 的 MAC 地址学习。
要对 VLAN 禁用地址学习,请禁用指定 VLAN 的 MAC 地址学习。
对某个接口禁用 MAC 地址学习也会禁用包含该接口的所有 VLAN 的地址学习。禁用 VLAN 的 MAC 地址学习后,已学习的 MAC 地址将被清除。
如果禁用某个接口或 VLAN 的 MAC 地址学习,则不能在该 VLAN 配置中包含 802.1X 身份验证。
当路由 VLAN 接口 (RVI) 与禁用 MAC 地址学习的接口或 VLAN 相关联时,在该 VLAN 或该接口上解析的第 3 层路由无法通过第 2 层组件解析。这会导致路由的数据包在与 VLAN 关联的所有接口上泛滥。
将 C-VLAN 映射到 S-VLAN
将 C-VLAN 映射到 S-VLAN 有多种方式:
如果配置了多种映射方法,交换机将优先处理特定端口的映射,之后是多对多捆绑,最后是一体化捆绑。但是,对于每种特定的映射方法,不支持为同一 C-VLAN 设置重叠规则。
一体化捆绑 — 使用语句时
edit vlans s-vlan-name dot1q-tunneling
不指定客户 VLAN。所有访问接口接收到的所有数据包(包括未标记数据包)均映射到 S-VLAN。多对一捆绑 — 使用该语句指定
edit vlans s-vlan-name dot1q-tunneling customer-vlans
将哪些 C-VLAN 映射到 S-VLAN。如果您希望将 C-VLAN 的一个子集变为 S-VLAN 的一部分,请使用此方法。如果希望将未标记或带有优先级标记的数据包映射到 S-VLAN,请通过customer-vlans
语句使用native
选项。(可将优先级标记数据包的 VLAN ID 设置为 0,其优先级代码点位可采用 CoS 值进行配置。)多对多捆绑 — 如果您希望接入交换机上的 C-VLAN 子集成为多个 S-VLAN 的一部分,请使用多对多捆绑。
映射特定接口 — 使用该
edit vlans s-vlan-name interface interface-name mapping
语句为给定的 S-VLAN 指定 C-VLAN。此配置仅适用于一个接口,不像一体化和多对一捆绑那样适用于所有接入接口。如果希望将未标记或带有优先级标记的数据包映射到 S-VLAN,请通过customer-vlans
语句使用native
选项。此方法有两个选项:交换和推送。使用推送选项时,数据包将保留其标记,还会添加一个附加的 VLAN 标记。使用交换选项时,则可将传入标记替换为 S-VLAN 标记。(即 VLAN 转换。)
您可以为给定的 S-VLAN 和接口配置多个推送规则。也就是说,您可以配置一个接口,以便将同一个 S-VLAN 标记添加到从多个 C-VLAN 传入的数据包中。
您只能为给定的 S-VLAN 和接口配置一个交换规则。
此功能通常用于对不同客户的流量进行分离,或对特定接口上的流量进行个性化处理。
如果配置多种映射方法,交换机将优先处理特定端口的映射,之后是多对多捆绑,最后是一体化捆绑。但对于给定的方法,不能对同一个 C-VLAN 使用重叠的规则。例如,您不能使用多对一捆绑将 C-VLAN 100 映射到两个不同的 S-VLAN 。
一体化捆绑
一体化捆绑可以将所有来自 C-VLAN 接口的全部数据包映射到一个 S-VLAN。
C-VLAN 接口可以接受未标记和单标记数据包。然后,系统会将一个 S-VLAN 802.1Q 标记添加到这些数据包中,并将这些数据包发送至可以接受未标记、单标记和双标记数据包的 S-VLAN 接口。
如果在这些接口上配置了native-vlan-id
语句,则 C-VLAN 和 S-VLAN 接口就可以接受未标记的数据包。
多对一捆绑
多对一捆绑用于指定将哪些 C-VLAN 映射到一个 S-VLAN。多对一捆绑通过 customer-vlans
选项进行配置。
如果希望接入交换机上的 C-VLAN 子集成为 S-VLAN 的一部分,则使用多对一捆绑。使用多对一捆绑时,如果同时指定了 native
选项和 customer-vlans
选项,即可将未标记和优先级标记的数据包映射至 S-VLAN。
多对多捆绑
多对多捆绑用于指定将哪些 C-VLAN 映射到多个 S-VLAN。
如果希望接入交换机上的 C-VLAN 子集成为多个 S-VLAN 的一部分,则使用多对多捆绑。C-VLAN 接口可以通过多对多捆绑接受未标记和单标记的数据包。然后,系统会将 S-VLAN 802.1Q 标记添加到这些数据包中,并将这些数据包发送至可以接受未标记、单标记和双标记数据包的 S-VLAN 接口。
如果在这些接口上配置了 native-vlan-id
语句,则 C-VLAN 和 S-VLAN 接口就可以接受未标记的数据包。
映射特定接口
如果您希望将 S-VLAN 分配到某个接口上的特定 C-VLAN,请使用特定接口映射。此配置仅适用于特定接口,并非所有接入接口。
特定接口映射具有两个子选项:push
和 swap
。对映射到特定接口的流量进行推送时,数据包将保留其原始标记,同时从 C-VLAN 移动到 S-VLAN,并且系统会将一个附加的 S-VLAN 标记添加到数据包中。对映射到特定接口的流量进行交换时,传入标记将替换为新的 VLAN 标记。这一过程有时被称为 VLAN 重写或 VLAN 转换。
一般情况下,此功能用于对不同客户的数据进行分离,或对特定接口上的数据包进行个性化处理。您还可以使用此方法将来自不同客户的 VLAN 流量映射到单个 S-VLAN。
使用特定接口映射时,C-VLAN 接口可接受未标记和单标记数据包,而 S-VLAN 接口可以接受未标记、单标记和双标记数据包。
如果在这些接口上配置了 native-vlan-id
语句,则 C-VLAN 和 S-VLAN 接口可接受未标记的数据包。
组合方法和配置限制
如果配置多种映射方法,交换机将优先处理特定端口的映射,之后是多对多捆绑,最后是一体化捆绑。使用一体化捆绑配置的访问接口不能是多对一捆绑的一部分。但是,可以为其定义附加映射。
为确保取得确定的结果,应注意以下配置限制:
不能为未标记的 VLAN 定义映射。
-
一个接入接口可以有多个客户 VLAN 范围,但一个接口不能有跨 VLAN 的重叠性标记。
接入接口只有一个规则,即用于将未标记数据包映射到 VLAN。
每个接口最多只能有一个对应 VLAN 的映射交换规则。
只能在 Q-in-Q VLAN 的接入端口上推送 VLAN 标记。此限制适用于所有三种 VLAN 标记推送方法:也就是一体化捆绑、多对一捆绑以及使用推送映射特定接口。
您可以为不同接口上的给定 S-VLAN 推送不同的 C-VLAN 标记。但这可能会导致 VLAN 之间出现流量泄露,具体取决于您的配置。
Q-in-Q VLAN 上的路由 VLAN 接口
Q-in-Q VLAN 提供对路由 VLAN 接口 (RVI) 的支持。
无论是单标记数据包还是双标记数据包,通过 Q-in-Q VLAN 到达 RVI 的数据包都将得到路由。传出路由的数据包仅在退出中继接口时才会包含 S-VLAN 标记;退出接入接口时,数据包为未标记状态。
Q-in-Q 隧道和 VLAN 转换的限制
配置 Q-in-Q 隧道和 VLAN 转换时,请注意以下限制:
-
Q-in-Q 隧道仅支持两层 VLAN 标记。
-
Q-in-Q 隧道不支持大多数接入端口安全功能。除非您使用防火墙过滤器配置这些安全功能,否则无法通过 Q-in-Q 隧道进行基于 VLAN(客户)的监管或基于 VLAN(传出)的整形和限制。
-
当使用 Junos OS 13.2X51-D20 版本之前的 13.2X51 版本时,如果您在该接口上创建了用于 Q-in-Q 隧道的 S-VLAN 或 C-VLAN,则无法在接口上创建常规 VLAN。这意味着,您无法在该接口上创建集成路由和桥接 (IRB) 接口,因为常规 VLAN 是 IRB 配置所需的一部分。当使用 Junos OS 13.2X51-D25 版本时,您可以在带有 S-VLAN 的中继接口上创建常规 VLAN,这意味着您还可以在中继接口上创建 IRB 接口。在这种情况下,同一中继接口上的常规 VLAN 和 S-VLAN 不能共享同一个 VLAN ID。使用 Junos OS 13.2X51-D25 版本时,您无法在具有 C-VLAN 的接入接口上创建常规 VLAN。
-
从 Junos OS 14.1X53-D40 版开始,Q-in-Q VLAN 支持集成路由和桥接 (IRB) 接口 — 您可以在与 S-VLAN 使用的接口相同的接口上配置 IRB 接口,并且可以对 IRB 接口使用的 VLAN 和用作 S-VLAN 的 VLAN 使用相同的 VLAN ID。
无论是单标记数据包还是双标记数据包,通过 Q-in-Q VLAN 到达 IRB 接口的数据包都将得到路由。传出路由的数据包仅在退出中继接口时才会包含 S-VLAN 标记;退出接入接口时,数据包为未标记状态。
注:只能在 S-VLAN (NNI) 接口上配置 IRB 接口,而在 C-VLAN (UNI) 接口上无法配置此接口。
-
使用该语句支持
vlan-tags
具有 Q-in-Q 接口的 QFX5K 交换机仅限于第 2 层接口。使用 Q-iQvlan-tags
语句配置的第 3 层接口可能无法按预期运行。 -
Q-in-Q 隧道和 VLAN 转换技术不支持大多数接入端口的安全功能。
-
不支持在同一端口上配置 Q-in-Q 隧道和 VLAN 重写/VLAN 转换。
-
对于给定的 VLAN 和接口,最多只能配置一个 VLAN 重写/VLAN 转换。例如,您仅可在接口 xe-0/0/0 上为 VLAN 100 创建一个转换。
-
用于 Q-in-Q 隧道和 VLAN 转换的 VLAN 数量与其规则数量之和不能超过 6000。例如,可以为 Q-in-Q 隧道和 VLAN 转换功能配置并提交 4000 个 VLAN 和 2000 个规则。但无法为它们配置 4000 个 VLAN 和 2500 个规则。如果尝试提交超出上述限制的配置数量,则 CLI 和系统日志将显示错误,以通知用户出现问题。
-
您无法使用本征 VLAN ID。
-
从 S-VLAN(而非 C-VLAN)中学习 MAC 地址。
-
广播、未知单播和组播流量将被转发至 S-VLAN 中的所有成员。
-
Q-in-Q 隧道不支持以下功能:
-
DHCP 中继
-
以太网光纤通道
-
IP 源保护
-
-
VLAN 重写/VLAN 转换不支持以下功能:
-
以太网光纤通道
-
将防火墙过滤器应用于输出方向上的端口或 VLAN
-
专用 VLAN
-
VLAN 生成树协议
-
反射中继
-
在 QFX 系列交换机上配置 Q-in-Q 隧道
服务提供商可通过 Q-in-Q 隧道和 VLAN 转换在两个客户站点之间创建第 2 层以太网连接。提供商可以在链路上隔离不同客户的 VLAN 流量(例如,如果客户使用重叠的 VLAN ID),或将不同的客户 VLAN 捆绑到单个服务 VLAN 中。数据中心可以使用 Q-in-Q 隧道隔离单个站点内的客户流量,或者当客户流量在不同地理位置的云数据中心之间流动时隔离。
从 Junos OS 19.4R1 版开始,QFX10000 系列交换机支持将第三和第四个 Q-in-Q 标记作为有效负载(也称为直通标记)以及现有的两个标记(用于 VLAN 匹配和操作)。对于第 2 层桥接和 EVPN-VXLAN 情况,QFX10000交换机支持多个 Q-in-Q 标记。第 2 层接入接口接受带有三个或四个标签的数据包(所有标签的 TPID 值均为 0x8100)。超出第四个标记(即从第五个标记开始)的所有标记都被视为第 3 层有效负载的一部分,并以透明方式转发。
在一个或两个标记的数据包中,标记、标记 1 和标记 2 可以携带任何 TPID 值,例如 0x8100、0x88a8、0x9100 和 0x9200。
在开始设置 Q-in-Q 隧道之前,请确保已在相邻交换机上创建并配置了必要的客户 VLAN。请参阅 在交换机上配置 VLAN。
要配置 Q-in-Q 隧道:
根据您的接口配置,您可能需要调整中继或访问端口的 MTU 值,以容纳 Q-in-Q 隧道添加标记所用的 4 个字节。例如,如果您在接入和中继端口上使用默认的 1514 字节 MTU 值,则需要进行以下任一调整:
将接入链路上的 MTU 减少至少 4 个字节,以便在添加 S-VLAN 标记时,帧不会超过中继链路的 MTU。
增加中继链路上的 MTU,以便链路可以处理更大的帧。
在支持 ELS 的 EX 系列交换机上配置 Q-in-Q 隧道
此任务可使用支持增强型第 2 层软件 (ELS) 配置样式的 EX 系列交换机的 Junos OS 来完成。如果您的交换机运行的软件不支持 ELS,请参阅 在 EX 系列交换机上配置 Q-in-Q 隧道。有关 ELS 的详细信息,请参阅使用增强型第 2 层软件 CLI。
Q-in-Q 隧道使以太网接入网络上的服务提供商能够通过添加另一层 802.1Q 标记,将客户流量隔离或捆绑到不同的 VLAN 中。您可以在 EX 系列交换机上配置 Q-in-Q 隧道。
您无法在已启用 Q-in-Q 隧道的接口上配置 802.1X 用户身份验证。
在 EX 系列交换机上配置 Q-in-Q 隧道时,中继接口将被视为服务提供商网络的一部分,接入接口将被视为客户网络的一部分。因此,本主题还将中继接口称为服务提供商 VLAN (S-VLAN) 接口(网络到网络接口 [NNI]),并将接入接口称为客户 VLAN (C-VLAN) 接口(用户网络接口 [UNI])。
在开始配置 Q-in-Q 隧道之前,请确保已设置 VLAN。请参阅为支持 ELS 的 EX 系列交换机配置 VLAN(CLI 过程)或为 EX 系列交换机配置 VLAN(J-Web 过程)。
使用以下方法之一配置 Q-in-Q 隧道,将 C-VLAN 映射到 S-VLAN:
配置一体化捆绑
您可以使用一体化捆绑方法配置 Q-in-Q 隧道,该方法将交换机上所有 C-VLAN 接口的数据包映射到 S-VLAN。
要在 C-VLAN 接口上配置一体化捆绑方法,请执行以下操作:
C-VLAN 接口 ge-0/0/1 上的以下配置可启用 Q-in-Q 隧道,并将来自 C-VLAN 100 到 200 的数据包映射到逻辑接口 10,而逻辑接口 10 又与 S-VLAN v10 关联。在此示例配置中,源自 C-VLAN 100 的数据包包含 VLAN ID 为 100 的标记。当此数据包从接口 ge-0/0/1 传输到 S-VLAN 接口时,将向其添加一个 VLAN ID 为 10 的标记。数据包退出 S-VLAN 接口时,VLAN ID 为 10 的标记将被移除。
set interfaces ge-0/0/1 flexible-vlan-tagging set interfaces ge-0/0/1 encapsulation extended-vlan-bridge set interfaces ge-0/0/1 unit 10 vlan-id-list 100-200 set interfaces ge-0/0/1 native-vlan-id 150 set interfaces ge-0/0/1 unit 10 input-vlan-map push set interfaces ge-0/0/1 unit 10 output-vlan-map pop set vlans v10 interface ge-0/0/1.10
要在 S-VLAN 接口上配置一体化捆绑方法,请执行以下操作:
启用不带、不带一个或两个 802.1Q VLAN 标记的数据包的传输:
[edit interfaces interface-name] user@switch# set flexible-vlan-tagging
启用扩展 VLAN 网桥封装:
[edit interfaces interface-name] user@switch# set encapsulation extended-vlan-bridge
将数据包从 C-VLAN 接口配置中指定的逻辑接口映射到 S-VLAN:
[edit interfaces interface-name unit logical-unit-number] user@switch# set vlan-id number
启用 S-VLAN 接口以发送和接收未标记的数据包:
[edit interfaces interface-name] user@switch# set native-vlan-id vlan-id
在 S-VLAN 物理接口上指定本机 VLAN ID 时,该值必须与步骤 3 中在 S-VLAN 逻辑接口上指定的 VLAN ID 匹配。
将 S-VLAN 接口与在 C-VLAN 接口过程中配置的 S-VLAN 相关联:
[edit vlans vlan-name] user@switch# set interface interface-name.logical-unit-number
例如,S-VLAN 接口 ge-1/1/1 上的以下配置可启用 Q-in-Q 隧道,并将 VLAN ID 标记为 10 的数据包映射到逻辑接口 10,而逻辑接口 10 又与 S-VLAN v10 关联。.
set interfaces ge-1/1/1 flexible-vlan-tagging set interfaces ge-1/1/1 encapsulation extended-vlan-bridge set interfaces ge-1/1/1 unit 10 vlan-id 10 set interfaces ge-1/1/1 native-vlan-id 10 set vlans v10 interface ge-1/1/1.10
配置多对多捆绑
您可以使用多对多捆绑方法配置 Q-in-Q 隧道,该方法将数据包从多个 C-VLAN 映射到多个 S-VLAN。
要在 C-VLAN 接口上配置多对多捆绑方法,请执行以下操作:
客户 1 的 C-VLAN 接口 ge-0/0/1 上的以下配置可启用 Q-in-Q 隧道,并将来自 C-VLAN 100 到 120 的数据包映射到逻辑接口 10,而逻辑接口 10 又与 S-VLAN v10 关联。
客户 2 的 C-VLAN 接口 ge-0/0/2 上的配置启用 Q-in-Q 隧道,并将来自 C- VLAN 30 到 40、50 到 60 和 70 到 80 的数据包映射到逻辑接口 30,而逻辑接口 30 又与 S- VLAN v30 相关联。
在此示例配置中,源自 C-VLAN 100 的数据包包含 VLAN ID 为 100 的标记。当此数据包从接口 ge-0/0/1 传输到 S-VLAN 接口时,将向其添加一个 VLAN ID 为 10 的标记。当数据包退出 S-VLAN 接口时,VLAN ID 为 10 的标记将被移除。
客户 1
set interfaces ge-0/0/1 flexible-vlan-tagging set interfaces ge-0/0/1 encapsulation extended-vlan-bridge set interfaces ge-0/0/1 unit 10 vlan-id-list 100-120 set interfaces ge-0/0/1 native-vlan-id 100 set interfaces ge-0/0/1 unit 10 input-vlan-map push set interfaces ge-0/0/1 unit 10 output-vlan-map pop set vlans v10 interface ge-0/0/1.10
客户 2
set interfaces ge-0/0/2 flexible-vlan-tagging set interfaces ge-0/0/2 encapsulation extended-vlan-bridge set interfaces ge-0/0/2 unit 30 vlan-id-list 30-40 set interfaces ge-0/0/2 unit 30 vlan-id-list 50-60 set interfaces ge-0/0/2 unit 30 vlan-id-list 70-80 set interfaces ge-0/0/2 native-vlan-id 30 set interfaces ge-0/0/2 unit 30 input-vlan-map push set interfaces ge-0/0/2 unit 30 output-vlan-map pop set vlans v30 interface ge-0/0/2.30
要在 S-VLAN 接口上配置多对多捆绑方法,请执行以下操作:
启用不带、不带一个或两个 802.1Q VLAN 标记的数据包的传输:
[edit interfaces interface-name] user@switch# set flexible-vlan-tagging
启用扩展 VLAN 网桥封装:
[edit interfaces interface-name] user@switch# set encapsulation extended-vlan-bridge
将来自 C-VLAN 接口配置中指定的每个逻辑接口的数据包映射到 S-VLAN:
[edit interfaces interface-name unit logical-unit-number] user@switch# set native-vlan-id number
启用 S-VLAN 接口以发送和接收未标记的数据包:
[edit interfaces interface-name] user@switch# set native-vlan-id vlan-id
在 S-VLAN 物理接口上指定本机 VLAN ID 时,该值必须与步骤 3 中在 S-VLAN 逻辑接口上指定的 S-VLAN ID 匹配。
将 S-VLAN 接口与在 C-VLAN 接口过程中配置的 S-VLAN 关联:
[edit vlans vlan-name] user@switch# set interface interface-name.logical-unit-number
例如,S-VLAN 接口 ge-1/1/1 上的以下配置可启用 Q-in-Q 隧道,并将传入的 C-VLAN 数据包映射到逻辑接口 10 和 30,这两个接口分别与 S-VLAN v10 和 v30 关联。
set interfaces ge-1/1/1 flexible-vlan-tagging set interfaces ge-1/1/1 encapsulation extended-vlan-bridge set interfaces ge-1/1/1 unit 10 vlan-id 10 set interfaces ge-1/1/1 unit 30 vlan-id 30 set interfaces ge-1/1/1 native-vlan-id 10 set vlans v10 interface ge-1/1/1.10 set vlans v30 interface ge-1/1/1.30
使用 VLAN 重写选项配置特定接口映射
您可以通过将数据包从指定的 C-VLAN 映射到指定的 S-VLAN 来配置 Q-in-Q 隧道。此外,当数据包传入和传出 S-VLAN 时,您可以指定删除 802.1Q C-VLAN 标记并将其替换为 S-VLAN 标记,反之亦然。
要在 C-VLAN 接口上使用 VLAN 重写配置特定接口映射,请执行以下操作:
例如,C-VLAN 接口 ge-0/0/1 上的以下配置可启用 Q-in-Q 隧道,并将来自 C-VLAN 150 的传入数据包映射到逻辑接口 200,而逻辑接口 200 又与 VLAN v200 相关联。此外,当数据包从 C-VLAN 接口 ge-0/0/1 传输到 S-VLAN 接口时,C-VLAN 标记 150 将被删除并替换为 S-VLAN 标记 200。当数据包从 S-VLAN 接口传输到 C-VLAN 接口 ge-0/0/1 时,S-VLAN 标记 200 将被删除,并替换为 C-VLAN 标记 150。
set interfaces ge-0/0/1 flexible-vlan-tagging set interfaces ge-0/0/1 encapsulation extended-vlan-bridge set interfaces ge-0/0/1 unit 200 vlan-id 150 set interfaces ge-0/0/1 native-vlan-id 150 set interfaces ge-0/0/1 unit 200 input-vlan-map swap set interfaces ge-0/0/1 unit 200 output-vlan-map swap set vlans v200 interface ge-0/0/1.200
要在 S-VLAN 接口上使用 VLAN 重写配置特定接口映射,请执行以下操作:
启用不带、不带一个或两个 802.1Q VLAN 标记的数据包的传输:
[edit interfaces interface-name] user@switch# set flexible-vlan-tagging
启用扩展 VLAN 网桥封装:
[edit interfaces interface-name] user@switch# set encapsulation extended-vlan-bridge
将数据包从 C-VLAN 接口配置中指定的逻辑接口映射到 S-VLAN:
[edit interfaces interface-name unit logical-unit-number] user@switch# set vlan-id number
启用 S-VLAN 接口以发送和接收未标记的数据包:
[edit interfaces interface-name] user@switch# set native-vlan-id vlan-id
在 S-VLAN 物理接口上指定本机 VLAN ID 时,该值必须与步骤 3 中在 S-VLAN 逻辑接口上指定的 VLAN ID 匹配。
将 S-VLAN 接口与在 C-VLAN 接口过程中配置的 S-VLAN 相关联::
[edit vlans vlan-name] user@switch# set interface interface-name.logical-unit-number
例如,S-VLAN 接口 ge-1/1/1 上的以下配置可启用 Q-in-Q 隧道,并将 VLAN ID 为 200 的数据包映射到逻辑接口 200,而逻辑接口 200 又与 S-VLAN v200 关联。
set interfaces ge-1/1/1 flexible-vlan-tagging set interfaces ge-1/1/1 encapsulation extended-vlan-bridge set interfaces ge-1/1/1 unit 200 vlan-id 200 set interfaces ge-1/1/1 native-vlan-id 200 set vlans v200 interface ge-1/1/1.200
在 EX 系列交换机上配置 Q-in-Q 隧道
此任务使用不支持增强型第 2 层软件 (ELS) 配置样式的 EX 系列交换机的 Junos OS。
Q-in-Q 隧道允许以太网接入网络上的服务提供商通过添加另一层 802.1Q 标记,将客户流量隔离或捆绑到不同的 VLAN 中。您可以在 EX 系列交换机上配置 Q-in-Q 隧道。
您无法在已启用 Q-in-Q 隧道的接口上配置 802.1X 用户身份验证。
在开始配置 Q-in-Q 隧道之前,请确保已设置 VLAN。请参阅为 EX 系列交换机配置 VLAN 或为 EX 系列交换机配置 VLAN(J-Web 过程)。
要配置 Q-in-Q 隧道:
在 ACX 系列上配置 Q-in-Q 隧道
SUMMARY
ACX 系列上的 Q-in-Q 隧道概述
Q-in-Q 隧道允许服务提供商在两个客户站点之间创建第 2 层以太网连接。提供商可以在链路上隔离不同客户的 VLAN 流量(例如,如果客户使用重叠的 VLAN ID),或将不同的客户 VLAN 捆绑到单个服务 VLAN 中。服务提供商可以使用 Q-in-Q 隧道将客户流量隔离在单个站点内,或启用跨地理位置的客户流量。
Q-in-Q 隧道会在客户的 802.1Q VLAN 标记之前添加一个服务 VLAN 标记。瞻博网络 Junos 操作系统实施的 Q-in-Q 隧道支持 IEEE 802.1ad 标准。
在 Q-in-Q 隧道中,当数据包从客户 VLAN (C-VLAN) 传输到服务提供商的 VLAN (S-VLAN) 时,会在 C-VLAN 标记之前添加相应 S-VLAN 的另一个 802.1Q 标记。C-VLAN 标记将保留并通过网络传输。当数据包从 S-VLAN 空间向下行方向退出时,S-VLAN 802.1Q 标记将被删除。
在 ACX 系列路由器中,您可以通过在桥接域中面向客户的接口上显式配置具有 push
功能的输入 VLAN 映射来配置 Q-in-Q 隧道。
您可以通过配置输入和输出 VLAN 映射,在聚合以太网接口上配置 Q-in-Q 隧道。
在 ACX 系列上配置 Q-in-Q 隧道
要配置 Q-in-Q 隧道,您需要配置连接到客户网络的逻辑接口(用户到网络接口 (UNI))和连接到服务提供商网络的逻辑接口(网络到网络接口 (NNI))。
以下是配置连接到客户网络的逻辑接口的示例:
[edit] interface ge-1/0/1 { flexible-vlan-tagging; encapsulation flexible-ethernet-services; unit 0 { encapsulation vlan-bridge; vlan-id-list 10-20; input-vlan-map { push; vlan-id 500; } output-vlan-map pop; } }
以下是配置连接到服务提供商网络的逻辑接口的示例:
[edit] interface ge-1/0/2; { flexible-vlan-tagging; encapsulation flexible-ethernet-services; unit 0 { encapsulation vlan-bridge; vlan-id 500; } }
以下是配置桥接域的示例:
[edit] bridge-domains { qnq-stag-500{ interface ge-1/0/1; interface ge-1/0/2; } }
您可以在连接到客户网络 (UNI) 的聚合以太网接口和连接到服务提供商网络 (NNI) 的逻辑接口上配置 Q-in-Q 隧道。
使用一体化捆绑配置 Q-in-Q 隧道
您可以使用一体化捆绑方法配置 Q-in-Q 隧道,该方法会将通过 C-VLAN 接口进入的所有数据包转发到 S-VLAN。(数据包将被转发到 S-VLAN,无论它们在入口之前是已标记还是未标记。)使用此方法可节省为每个 C-VLAN 指定特定映射的工作量。
首先配置 S-VLAN 及其接口:
如果配置 flexible-ethernet-services
了 ,请在逻辑接口上配置 vlan-bridge
封装:
[edit interfaces interface-name unit logical-unit-number] user@switch# set encapsulation vlan-bridge
例如,以下配置使 xe-0/0/0.10 成为 VLAN 10 的成员,在接口 xe-0/0/0 上启用 Q-in-Q 隧道,使 xe-0/0/0 能够接受未标记的数据包,并将 S-VLAN v10 的 VLAN ID 绑定到 xe-0/0/0 的逻辑接口。
set vlans v10 interface xe-0/0/0.10 set interfaces xe-0/0/0 flexible-vlan-tagging set interfaces xe-0/0/0 native-vlan-id 10 set interfaces xe-0/0/0 encapsulation extended-vlan-bridge set interfaces xe-0/0/0 unit 10 vlan-id 10
现在在 C-VLAN 接口上配置一体化捆绑:
将 C-VLAN 接口的逻辑接口(单元)分配为 S-VLAN 的成员。
[edit vlans vlan-name] user@switch# set interface interface-name.unit-number
启用接口以传输带有 802.1Q VLAN 标记的数据包:
[edit interfaces interface-name] user@switch# set flexible-vlan-tagging
在接口上启用扩展 VLAN 网桥封装:
[edit interfaces interface-name] user@switch# set encapsulation extended-vlan-bridge
启用 C-VLAN 接口以发送和接收未标记的数据包:
[edit interfaces interface-name] user@switch# set native-vlan-id vlan-id
配置逻辑接口以接收和转发 VLAN ID 标记与您指定的 VLAN ID 列表匹配的任何标记数据包:
[edit interfaces interface-name unit logical-unit-number] user@switch# set vlan-id-list vlan-id-numbers
警告:您最多只能向物理接口应用八个 VLAN 标识符列表。此限制不适用于QFX10000交换机。
将系统配置为在数据包从 C-VLAN 接口传输到 S-VLAN 时添加 S-VLAN 标记(外部标记):
[edit interfaces interface-name unit logical-unit-number] user@switch# set input-vlan-map push
注:您可以在 上
input-vlan-map
配置vlan-id
,但这样做是可选的。将系统配置为在数据包从 S-VLAN 接口(内部)转发到 C-VLAN 接口时移除 S-VLAN 标记:
[edit interfaces interface-name unit logical-unit-number] user@switch# set output-vlan-map pop
例如,以下配置使 xe-0/0/1.10 成为 S-VLAN v10 的成员,启用 Q-in-Q 隧道,将来自 C-VLAN 100 到 200 的数据包映射到 S-VLAN 10,并使 xe-0/0/1 能够接受未标记的数据包。如果数据包源自 C-VLAN 100 并且需要通过 S-VLAN 发送,则会将 VLAN ID 为 10 的标记添加到数据包中。将数据包从 S-VLAN 接口(内部)转发到接口 xe-0/0/1 时,VLAN ID 为 10 的标记将被移除。
set vlans v10 interface xe-0/0/1.10 set interfaces xe-0/0/1 flexible-vlan-tagging set interfaces xe-0/0/1 encapsulation extended-vlan-bridge set interfaces xe-0/0/1 unit 10 vlan-id-list 100-200 set interfaces xe-0/0/1 native-vlan-id 10 set interfaces xe-0/0/1 unit 10 input-vlan-map push set interfaces xe-0/0/1 unit 10 output-vlan-map pop
使用多对多捆绑配置 Q-in-Q 隧道
您可以使用多对多捆绑方法配置 Q-in-Q 隧道,该方法将数据包从多个 C-VLAN 映射到多个 S-VLAN。此方法可以方便地映射一系列 C-VLAN,而无需单独指定每个 C-VLAN。(您也可以使用此方法仅配置一个要映射到 S-VLAN 的 C-VLAN。
首先配置 S-VLAN 并将其分配给接口:
例如,以下配置创建 S-VLAN v10 和 v30 并将其与接口 xe-0/0/0.10 关联,启用 Q-in-Q 隧道,启用 xe-0/0/0 接受未标记的数据包,并将传入的 C-VLAN 数据包映射到 S-VLAN v10 和 v30。
set vlans v10 interface xe-0/0/0.10 set vlans v30 interface xe-0/0/0.10 set interfaces xe-0/0/0 flexible-vlan-tagging set interfaces xe-0/0/0 native-vlan-id 10 set interfaces xe-0/0/0 encapsulation extended-vlan-bridge set interfaces xe-0/0/0 unit 10 vlan-id 10 set interfaces xe-0/0/0 unit 30 vlan-id 30
要在 C-VLAN 接口上配置多对多捆绑方法,请为每个客户执行以下步骤:
将一个 C-VLAN 接口的逻辑接口(单元)分配为一个 S-VLAN 的成员。
[edit vlans vlan-name] user@switch# set interface interface-name.unit-number
重复步骤 1,将另一个 C-VLAN 接口(物理接口)指定为另一个 S-VLAN 的成员。
启用接口以传输带有 802.1Q VLAN 标记的数据包:
[edit interfaces interface-name] user@switch# set flexible-vlan-tagging
在接口上启用扩展 VLAN 网桥封装:
[edit interfaces interface-name] user@switch# encapsulation extended-vlan-bridge
启用 C-VLAN 接口以发送和接收未标记的数据包:
[edit interfaces interface-name] user@switch# set native-vlan-id vlan-id
对于每个物理接口,配置一个逻辑接口(单元),以接收和转发 VLAN ID 标记与您指定的 VLAN ID 列表匹配的任何标记数据包:
[edit interfaces interface-name unit logical-unit-number] user@switch# set vlan-id-list vlan-id-numbers
要仅配置一个要映射到 S-VLAN 的 C-VLAN,请在 VLAN ID 列表后仅指定一个 VLAN ID。
警告:您最多只能向物理接口应用八个 VLAN 标识符列表。此限制不适用于QFX10000交换机。
对于每个物理接口,将系统配置为在数据包从 C-VLAN 接口传输到 S-VLAN 时添加一个 S-VLAN 标记(外部标记):
[edit interfaces interface-name unit logical-unit-number] user@switch# set input-vlan-map push
对于每个物理接口,将系统配置为在数据包从 S-VLAN 接口转发到 C-VLAN 接口时移除 S-VLAN 标记:
[edit interfaces interface-name unit logical-unit-number] user@switch# set output-vlan-map pop
例如,以下配置使 xe-0/0/1.10 成为 S-VLAN v10 的成员,启用 Q-in-Q 隧道,并将来自 C-VLAN 10 到 20 的数据包映射到 S-VLAN 10。客户 2 的配置使 xe-0/0/2.30 成为 S-VLAN v30 的成员,启用 Q-in-Q 隧道,并将来自 C-VLAN 30 到 40、50 到 60 和 70 到 80 的数据包映射到 S-VLAN 30。两个接口均配置为接受未标记的数据包。
如果数据包源自 C-VLAN 10 并且需要通过 S-VLAN 发送,则会将 VLAN ID 为 10 的标记添加到数据包中。如果数据包从 S-VLAN 接口在内部转发到 xe-0/0/1.10,则会移除 VLAN ID 为 10 的标记。同样的原则也适用于在接口 xe-0/0/2 上配置的 C-VLAN。
请注意,您可以对 S-VLAN 和 C-VLAN 使用相同的标记值。例如,客户 1 的配置将 C-VLAN ID 10 映射到 S-VLAN ID 10。C-VLAN 和 S-VLAN 标记使用单独的命名空间,因此允许此配置。
客户 1 的配置:
set vlans v10 interface xe-0/0/1.10 set interfaces xe-0/0/1 flexible-vlan-tagging set interfaces xe-0/0/1 encapsulation extended-vlan-bridge set interfaces xe-0/0/1 unit 10 vlan-id-list 10-20 set interfaces xe-0/0/1 native-vlan-id 15 set interfaces xe-0/0/1 unit 10 input-vlan-map push set interfaces xe-0/0/1 unit 10 output-vlan-map pop
客户 2 的配置:
set vlans v30 interface xe-0/0/2.30 set interfaces xe-0/0/2 flexible-vlan-tagging set interfaces xe-0/0/2 encapsulation extended-vlan-bridge set interfaces xe-0/0/2 unit 30 vlan-id-list 30-40 set interfaces xe-0/0/2 unit 30 vlan-id-list 50-60 set interfaces xe-0/0/2 unit 30 vlan-id-list 70-80 set interfaces xe-0/0/2 native-vlan-id 75 set interfaces xe-0/0/2 unit 30 input-vlan-map push set interfaces xe-0/0/2 unit 30 output-vlan-map pop
使用 VLAN ID 转换选项配置特定接口映射
您可以通过将数据包从指定的 C-VLAN 映射到指定的 S-VLAN 来配置 Q-in-Q 隧道。此外,您可以将系统配置为将 C-VLAN 标记替换为 S-VLAN 标记,或将 S-VLAN 标记替换为 C-VLAN 标记(而不是双标记)。这称为 VLAN 转换或 VLAN 重写。如果服务提供商连接客户站点的第 2 层网络不支持双标记数据包,VLAN 转换特别有用。
使用 VLAN 转换时,链路的两端通常必须能够适当地交换标记。也就是说,链路的两端都必须配置为将 C-VLAN 标记交换为 S-VLAN 标记,并将 S-VLAN 标记交换为 C-VLAN 标记,以便在传输过程中和到达后对两个方向的流量进行适当的标记。
首先配置 S-VLAN 及其接口:
例如,以下配置将创建 S-VLAN v200,使 xe-0/0/0.200 成为该 VLAN 的成员,在接口 xe-0/0/0 上启用 Q-in-Q 隧道,使 xe-0/0/0 能够接受未标记的数据包,并将 xe-0/0/0 的逻辑接口绑定到 VLAN v200 的 VLAN ID。
set vlans v200 interface xe-0/0/0.200 set interfaces xe-0/0/0 flexible-vlan-tagging set interfaces xe-0/0/0 native-vlan-id 150 set interfaces xe-0/0/0 encapsulation extended-vlan-bridge set interfaces xe-0/0/0 unit 200 vlan-id 200
现在,在 C-VLAN 接口上使用可选的 VLAN ID 转换配置特定接口映射:
将 C-VLAN 接口的逻辑接口指定为 S-VLAN 的成员。
[edit vlans vlan-name] user@switch# set interface interface-name.unit-number
启用接口以传输带有 802.1Q VLAN 标记的数据包:
[edit interfaces interface-name] user@switch# set flexible-vlan-tagging
启用 C-VLAN 接口以发送和接收未标记的数据包:
[edit interfaces interface-name] user@switch# set native-vlan-id vlan-id
在接口上启用扩展 VLAN 网桥封装:
[edit interfaces interface-name] user@switch# set encapsulation extended-vlan-bridge
配置逻辑接口(单元),以接收和转发 VLAN ID 标记与您指定的 VLAN ID 匹配的任何标记数据包:
[edit interfaces interface-name unit logical-unit-number] user@switch# set vlan-id number
当数据包进入 C-VLAN 接口并转发到 S-VLAN 时,将系统配置为移除现有 C-VLAN 标记并将其替换为 S-VLAN 标记:
[edit interfaces interface-name unit logical-unit-number] user@switch# set input-vlan-map swap
当数据包从 S-VLAN 接口转发到 C-VLAN 接口时,将系统配置为移除现有 S-VLAN 标记并将其替换为 C-VLAN 标记:
[edit interfaces interface-name unit logical-unit-number] user@switch# set output-vlan-map swap
要配置 S-VLAN 并将其与相应的 C-VLAN 接口关联,请执行以下操作:
[edit vlans vlan-name] user@switch# set interface interface-name
例如,C-VLAN 接口 xe-0/0/1.200 上的以下配置将启用 Q-in-Q 隧道,使 xe-0/0/1 能够接受未标记的数据包,并将来自 C-VLAN 150 的传入数据包映射到逻辑接口 200,后者是 S-VLAN 200 的成员。此外,当数据包从 C-VLAN 接口 xe-0/0/1 出口并传输到 S-VLAN 接口时,C-VLAN 标记 150 将被删除,并替换为 S-VLAN 标记 200。当数据包从 S-VLAN 接口传输到 C-VLAN 接口时,S-VLAN 标记 200 将被删除,并替换为 C-VLAN 标记 150。
set vlans v200 interface xe-0/0/1.200 set interfaces xe-0/0/1 flexible-vlan-tagging set interfaces xe-0/0/1 native-vlan-id 150 set interfaces xe-0/0/1 encapsulation extended-vlan-bridge set interfaces xe-0/0/1 unit 200 vlan-id 200 set interfaces xe-0/0/1 unit 200 output-vlan-map swap set interfaces xe-0/0/1 unit 200 input-vlan-map swap
示例:在 QFX 系列交换机上设置 Q-in-Q 隧道
服务提供商可以使用 Q-in-Q 隧道在客户站点之间透明地传递第 2 层 VLAN 流量,而无需移除或更改客户 VLAN 标记或服务等级 (CoS) 设置。数据中心可以使用 Q-in-Q 隧道隔离单个站点内的客户流量,或者当客户流量在不同地理位置的云数据中心之间流动时隔离。
此示例使用的 Junos OS 版本不支持增强型第 2 层软件 (ELS) 配置样式。如果您的交换机运行的软件支持 ELS,请参阅 在支持 ELS 的 QFX 系列、NFX 系列和 EX4600 交换机上配置 Q-in-Q 隧道。
此示例介绍如何设置 Q-in-Q 隧道:
要求
此示例需要一个装有 Junos OS 12.1 或更高版本的 QFX 系列设备。
在开始设置 Q-in-Q 隧道之前,请确保已在相邻交换机上创建并配置了必要的客户 VLAN。请参阅 在交换机上配置 VLAN。
概述和拓扑
在此服务提供商网络中,有多个客户 VLAN 映射到一个服务 VLAN。
表 2 列出了示例拓扑的设置。
接口 | Description |
---|---|
|
标记的 S-VLAN 中继端口 |
|
面向客户的未标记接入端口 |
|
面向客户的未标记接入端口 |
|
标记的 S-VLAN 中继端口 |
配置
CLI 快速配置
要快速创建和配置 Q-in-Q 隧道,请复制以下命令并将其粘贴到交换机终端窗口中:
[edit] set vlans service-vlan vlan-id 1000 set vlans service-vlan dot1q-tunneling customer-vlans 1-100 set vlans service-vlan dot1q-tunneling customer-vlans 201-300 set interfaces xe-0/0/11 unit 0 family ethernet-switching port-mode trunk set interfaces xe-0/0/11 unit 0 family ethernet-switching vlan members 1000 set interfaces xe-0/0/12 unit 0 family ethernet-switching port-mode access set interfaces xe-0/0/12 unit 0 family ethernet-switching vlan members 1000 set interfaces xe-0/0/13 unit 0 family ethernet-switching port-mode access set interfaces xe-0/0/13 unit 0 family ethernet-switching vlan members 1000 set interfaces xe-0/0/14 unit 0 family ethernet-switching port-mode trunk set interfaces xe-0/0/14 unit 0 family ethernet-switching vlan members 1000 set ethernet-switching-options dot1q-tunneling ether-type 0x9100
程序
分步过程
要配置 Q-in-Q 隧道:
设置 S-VLAN 的 VLAN ID:
[edit vlans] user@switch# set service-vlan vlan-id 1000
启用 Q-in-Q 隧道并指定客户 VLAN 范围:
[edit vlans] user@switch# set service-vlan dot1q-tunneling customer-vlans 1-100 user@switch# set service-vlan dot1q-tunneling customer-vlans 201-300
设置接口的端口模式和 VLAN 信息:
[edit interfaces] user@switch# set xe-0/0/11 unit 0 family ethernet-switching port-mode trunk user@switch# set xe-0/0/11 unit 0 family ethernet-switching vlan members 1000 user@switch# set xe-0/0/12 unit 0 family ethernet-switching port-mode access user@switch# set xe-0/0/12 unit 0 family ethernet-switching vlan members 1000 user@switch# set xe-0/0/13 unit 0 family ethernet-switching port-mode access user@switch# set xe-0/0/13 unit 0 family ethernet-switching vlan members 1000 user@switch# set xe-0/0/14 unit 0 family ethernet-switching port-mode trunk user@switch# set xe-0/0/14 unit 0 family ethernet-switching vlan members 1000
设置 Q-in-Q 以太网类型值(可选):
[edit] user@switch# set ethernet-switching-options dot1q-tunneling ether-type 0x9100
结果
检查配置结果:
user@switch> show configuration vlans service-vlan vlan-id 1000 { dot1q-tunneling { customer-vlans [ 1-100 201-300 ]; } user@switch> show configuration interfaces xe-0/0/11 { unit 0 { family ethernet-switching { port-mode trunk; vlan members 1000; } } } xe-0/0/12 { unit 0 { family ethernet-switching { port-mode access; vlan members 1000; } } } xe-0/0/13 { unit 0 { family ethernet-switching { port-mode access; vlan members 1000; } } } xe-0/0/14 { unit 0 { family ethernet-switching { port-mode trunk; vlan members 1000; } } } user@switch> show ethernet-switching-options dot1q-tunneling { ether-type 0x9100; }
验证
确认配置工作正常。
验证是否启用了 Q-in-Q 隧道
目的
验证是否已正确启用 Q-in-Q 隧道。
操作
show vlans
使用以下命令:
user@switch> show vlans service-vlan extensive VLAN: service-vlan, Created at: Wed Mar 14 07:17:53 2012 802.1Q Tag: 1000, Internal index: 18, Admin State: Enabled, Origin: Static Dot1q Tunneling Status: Enabled Customer VLAN ranges: 1-100 201-300 Protocol: Port Mode Number of interfaces: Tagged 2 (Active = 0), Untagged 2 (Active = 0) xe-0/0/11.0, tagged, trunk xe-0/0/14.0, tagged, trunk xe-0/0/12.0, untagged, access xe-0/0/13.0, untagged, access
意义
输出指示已启用 Q-in-Q 隧道,VLAN 已标记并显示关联的客户 VLAN。
示例:在 EX 系列交换机上设置 Q-in-Q 隧道
服务提供商可以使用 Q-in-Q 隧道以透明方式将第 2 层 VLAN 流量从客户站点通过服务提供商网络传递到另一个客户站点,而无需移除或更改客户 VLAN 标记或服务等级 (CoS) 设置。您可以在 EX 系列交换机上配置 Q-in-Q 隧道。
此示例介绍如何设置 Q-in-Q:
要求
对于 EX 系列交换机,此示例需要一个装有 Junos OS 9.3 或更高版本的 EX 系列交换机。
在开始设置 Q-in-Q 隧道之前,请确保已创建并配置必要的客户 VLAN。请参阅为 EX 系列交换机配置 VLAN 或为 EX 系列交换机配置 VLAN(J-Web 过程)。
概述和拓扑
在此服务提供商网络中,有多个客户 VLAN 映射到一个服务 VLAN。
表 3 列出了示例拓扑的设置。
接口 | Description |
---|---|
ge-0/0/11.0 |
标记的 S-VLAN 中继端口 |
ge-0/0/12.0 |
面向客户的未标记接入端口 |
ge-0/0/13.0 |
面向客户的未标记接入端口 |
ge-0/0/14.0 |
标记的 S-VLAN 中继端口 |
配置
CLI 快速配置
要快速创建和配置 Q-in-Q 隧道,请复制以下命令并将其粘贴到交换机终端窗口中:
[edit] set vlans qinqvlan vlan-id 4001 set vlans qinqvlan dot1q-tunneling customer-vlans 1-100 set vlans qinqvlan dot1q-tunneling customer-vlans 201-300 set interfaces ge-0/0/11 unit 0 family ethernet-switching port-mode trunk set interfaces ge-0/0/11 unit 0 family ethernet-switching vlan members 4001 set interfaces ge-0/0/12 unit 0 family ethernet-switching port-mode access set interfaces ge-0/0/12 unit 0 family ethernet-switching vlan members 4001 set interfaces ge-0/0/13 unit 0 family ethernet-switching port-mode access set interfaces ge-0/0/13 unit 0 family ethernet-switching vlan members 4001 set interfaces ge-0/0/14 unit 0 family ethernet-switching port-mode trunk set interfaces ge-0/0/14 unit 0 family ethernet-switching vlan members 4001 set ethernet-switching-options dot1q-tunneling ether-type 0x9100
程序
分步过程
要配置 Q-in-Q 隧道:
设置 S-VLAN 的 VLAN ID:
[edit vlans] user@switch# set qinqvlan vlan-id 4001
启用 Q-in-Q 网络并指定客户 VLAN 范围:
[edit vlans] user@switch# set qinqvlan dot1q-tunneling customer-vlans 1-100 user@switch# set qinqvlan dot1q-tunneling customer-vlans 201-300
设置接口的端口模式和 VLAN 信息:
[edit interfaces] user@switch# set ge-0/0/11 unit 0 family ethernet-switching port-mode trunk user@switch# set ge-0/0/11 unit 0 family ethernet-switching vlan members 4001 user@switch# set ge-0/0/12 unit 0 family ethernet-switching port-mode access user@switch# set ge-0/0/12 unit 0 family ethernet-switching vlan members 4001 user@switch# set ge-0/0/13 unit 0 family ethernet-switching port-mode access user@switch# set ge-0/0/13 unit 0 family ethernet-switching vlan members 4001 user@switch# set ge-0/0/14 unit 0 family ethernet-switching port-mode trunk user@switch# set ge-0/0/14 unit 0 family ethernet-switching vlan members 4001
设置 Q-in-Q 以太类型值:
[edit] user@switch# set ethernet-switching-options dot1q-tunneling ether-type 0x9100
结果
检查配置结果:
user@switch> show configuration vlans qinqvlan vlan-id 4001 { dot1q-tunneling { customer-vlans [ 1-100 201-300 ]; } user@switch> show configuration interfaces ge-0/0/11 { unit 0 { family ethernet-switching { port-mode trunk; vlan members 4001; } } } ge-0/0/12 { unit 0 { family ethernet-switching { port-mode access; vlan members 4001; } } } ge-0/0/13 { unit 0 { family ethernet-switching { port-mode access; vlan members 4001; } } } ge-0/0/14 { unit 0 { family ethernet-switching { port-mode trunk; vlan members 4001; } } } user@switch> show ethernet-switching-options dot1q-tunneling { ether-type 0x9100; }
验证
要确认配置工作正常,请执行以下任务:
验证是否启用了 Q-in-Q 隧道
目的
验证交换机上是否已正确启用 Q-in-Q 隧道。
操作
show vlans
使用以下命令:
user@switch> show vlans qinqvlan extensive VLAN: qinqvlan, Created at: Thu Sep 18 07:17:53 2008 802.1Q Tag: 4001, Internal index: 18, Admin State: Enabled, Origin: Static Dot1q Tunneling Status: Enabled Customer VLAN ranges: 1-100 201-300 Protocol: Port Mode Number of interfaces: Tagged 2 (Active = 0), Untagged 4 (Active = 0) ge-0/0/11.0, tagged, trunk ge-0/0/14.0, tagged, trunk ge-0/0/12.0, untagged, access ge-0/0/13.0, untagged, access
意义
输出指示已启用 Q-in-Q 隧道,VLAN 已标记并显示关联的客户 VLAN。
在 QFX 交换机上设置双 VLAN 标记转换配置
从 Junos OS 14.1X53-D40 版开始,您可以使用双 VLAN 标记转换(也称为双 VLAN 标记重写)功能在服务提供商域中部署交换机,从而允许双标记、单标记和未标记的 VLAN 数据包进出交换机。
以下示例配置显示了交换-交换、弹出-交换和交换-推送双标记操作的用法。
[edit] set interfaces ge-0/0/1 unit 503 description UNI-3 set interfaces ge-0/0/1 unit 503 encapsulation vlan-bridge set interfaces ge-0/0/1 unit 503 vlan-tags outer 503 set interfaces ge-0/0/1 unit 503 vlan-tags inner 504 set interfaces ge-0/0/1 unit 503 input-vlan-map swap-swap set interfaces ge-0/0/1 unit 503 input-vlan-map vlan-id 500 set interfaces ge-0/0/1 unit 503 input-vlan-map inner-vlan-id 514 set interfaces ge-0/0/1 unit 503 output-vlan-map swap-swap set interfaces ge-0/0/0 description NNI set interfaces ge-0/0/0 flexible-vlan-tagging set interfaces ge-0/0/0 encapsulation flexible-ethernet-services set interfaces ge-0/0/0 unit 500 description "SVLAN500 port" set interfaces ge-0/0/0 unit 500 encapsulation vlan-bridge set interfaces ge-0/0/0 unit 500 vlan-id 500 set interfaces ge-0/0/0 unit 600 description "SVLAN600 port" set interfaces ge-0/0/0 unit 600 encapsulation vlan-bridge set interfaces ge-0/0/0 unit 600 vlan-id 600 set interfaces ge-0/0/0 unit 700 description "SVLAN700 port" set interfaces ge-0/0/0 unit 700 encapsulation vlan-bridge set interfaces ge-0/0/0 unit 700 vlan-id 700 set interfaces ge-0/0/0 unit 0 family ethernet-switching interface-mode trunk set interfaces ge-0/0/0 unit 0 family ethernet-switching vlan members v1000 set interfaces ge-0/0/0 unit 1100 description UNI-SVLAN1100 set interfaces ge-0/0/0 unit 1100 encapsulation vlan-bridge set interfaces ge-0/0/0 unit 1100 vlan-tags outer 1101 set interfaces ge-0/0/0 unit 1100 vlan-tags inner 1102 set interfaces ge-0/0/0 unit 1100 input-vlan-map swap-swap set interfaces ge-0/0/0 unit 1100 input-vlan-map vlan-id 1100 set interfaces ge-0/0/0 unit 1100 input-vlan-map inner-vlan-id 2101 set interfaces ge-0/0/0 unit 1100 output-vlan-map swap-swap set interfaces ge-0/0/0 unit 1200 description UNI-SVLAN1200 set interfaces ge-0/0/0 unit 1200 encapsulation vlan-bridge set interfaces ge-0/0/0 unit 1200 vlan-id 1201 set interfaces ge-0/0/0 unit 1200 input-vlan-map swap-push set interfaces ge-0/0/0 unit 1200 input-vlan-map inner-vlan-id 2200 set interfaces ge-0/0/0 unit 1200 output-vlan-map pop-swap set interfaces ge-0/0/2 description UNI set interfaces ge-0/0/2 flexible-vlan-tagging set interfaces ge-0/0/2 encapsulation flexible-ethernet-services set interfaces ge-0/0/2 unit 0 family ethernet-switching interface-mode trunk set interfaces ge-0/0/2 unit 0 family ethernet-switching vlan members v1000 set interfaces ge-0/0/2 unit 603 description UNI-3 set interfaces ge-0/0/2 unit 603 encapsulation vlan-bridge set interfaces ge-0/0/2 unit 603 vlan-tags outer 603 set interfaces ge-0/0/2 unit 603 vlan-tags inner 604 set interfaces ge-0/0/2 unit 603 input-vlan-map swap-swap set interfaces ge-0/0/2 unit 603 input-vlan-map vlan-id 600 set interfaces ge-0/0/2 unit 603 input-vlan-map inner-vlan-id 614 set interfaces ge-0/0/2 unit 603 output-vlan-map swap-swap set interfaces ge-0/0/3 description UNI set interfaces ge-0/0/3 flexible-vlan-tagging set interfaces ge-0/0/3 encapsulation flexible-ethernet-services set interfaces ge-0/0/3 unit 0 family ethernet-switching interface-mode trunk set interfaces ge-0/0/3 unit 0 family ethernet-switching vlan members v1000 set interfaces ge-0/0/3 unit 703 description UNI-3 set interfaces ge-0/0/3 unit 703 encapsulation vlan-bridge set interfaces ge-0/0/3 unit 703 vlan-tags outer 703 set interfaces ge-0/0/3 unit 703 vlan-tags inner 704 set interfaces ge-0/0/3 unit 703 input-vlan-map swap-swap set interfaces ge-0/0/3 unit 703 input-vlan-map vlan-id 700 set interfaces ge-0/0/3 unit 703 input-vlan-map inner-vlan-id 714 set interfaces ge-0/0/3 unit 703 output-vlan-map swap-swap set interfaces ge-0/0/3 unit 701 encapsulation vlan-bridge set interfaces ge-0/0/3 unit 701 vlan-id 701 set interfaces ge-0/0/3 unit 701 input-vlan-map swap-push set interfaces ge-0/0/3 unit 701 input-vlan-map inner-vlan-id 780 set interfaces ge-0/0/3 unit 701 output-vlan-map pop-swap set interfaces ge-0/0/3 unit 1100 description SVLAN1100-NNI set interfaces ge-0/0/3 unit 1100 encapsulation vlan-bridge set interfaces ge-0/0/3 unit 1100 vlan-id 1100 set interfaces ge-0/0/3 unit 1200 description SVLAN1200-NNI set interfaces ge-0/0/3 unit 1200 encapsulation vlan-bridge set interfaces ge-0/0/3 unit 1200 vlan-id 1200 set vlans SVLAN500 interface ge-0/0/0.500 set vlans SVLAN500 interface ge-0/0/1.503 set vlans SVLAN600 interface ge-0/0/0.600 set vlans SVLAN600 interface ge-0/0/2.603 set vlans SVLAN600 interface ge-0/0/3.701 set vlans SVLAN700 interface ge-0/0/0.700 set vlans SVLAN700 interface ge-0/0/3.703 set vlans v1000 vlan-id 1000 set vlans SVLAN1100 interface ge-0/0/0.1100 set vlans SVLAN1100 interface ge-0/0/3.1100 set vlans SVLAN1200 interface ge-0/0/3.1200 set vlans SVLAN1200 interface ge-0/0/0.1200
支持 QFX 和 EX 交换机的交换-推送/弹出-交换
支持 L2 交换-推送/弹出-交换的 Q-in-Q 隧道是一种特定场景,其中客户 VLAN (C-VLAN) 标记与标记交换 inner-vlan-id
,并在其上推送服务提供商定义的服务 VLAN (S-VLAN) 标记(用于从客户流向服务提供商站点的流量)。此流量以双标记方式发送到服务提供商网络 (S-VLAN + C-VLAN)。对于从服务提供商网络流向客户网络的流量,S-VLAN 标记将被移除,C-VLAN 标记将替换为在 UNI 逻辑接口上配置的 VLAN ID。
以下示例显示了交换-推送/弹出-交换双标记操作。
- 交换-推送 — 对于来自 UNI 的传入单标记帧,C-VLAN (VLAN ID 100) 与逻辑接口上配置的内部 VLAN ID (200) 交换,S-VLAN (VLAN ID 900) 推送到帧。双标记帧从 NNI 出口。
- 弹出-交换 — 对于来自 NNI 的传入双标记帧,S-VLAN 标记将从帧弹出 (VLAN ID 900),逻辑接口的 VLAN ID 100 将替换 C-VLAN 标记。单标记帧从 UNI 出口。
set interfaces ge-0/0/1 description UNI set interfaces ge-0/0/1 flexible-vlan-tagging set interfaces ge-0/0/1 encapsulation flexible-ethernet-services set interfaces ge-0/0/1 unit 100 encapsulation vlan-bridge set interfaces ge-0/0/1 unit 100 vlan-id 100 set interfaces ge-0/0/1 unit 100 input-vlan-map swap-push set interfaces ge-0/0/1 unit 100 input-vlan-map vlan-id 900 set interfaces ge-0/0/1 unit 100 input-vlan-map inner-vlan-id 200 set interfaces ge-0/0/1 unit 100 output-vlan-map pop-swap set interfaces ge-0/0/2 description NNI set interfaces ge-0/0/2 flexible-vlan-tagging set interfaces ge-0/0/2 encapsulation flexible-ethernet-services set interfaces ge-0/0/2 unit 900 encapsulation vlan-bridge set interfaces ge-0/0/2 unit 900 vlan-id 900 set vlans vlan-900 interface ge-0/0/1.100 set vlans vlan-900 interface ge-0/0/2.900
如果使用 VLAN ID 列表配置逻辑接口,并且输入 VLAN 映射和输出 VLAN 映射配置为交换-推送/弹出-交换,则会导致意外行为,因为从 UNI 回归的流量配置了逻辑单元号,而不是 VLAN ID 列表中的原始客户 VLAN ID。
验证 Q-in-Q 隧道是否在交换机上正常工作
目的
创建 Q-in-Q VLAN 后,请验证其设置是否正确。
操作
使用
show configuration vlans
命令确定是否成功创建了主 VLAN 和辅助 VLAN 配置:user@switch> show configuration vlans svlan { vlan-id 300; dot1q-tunneling { customer-vlans [ 101–200 ]; } }
使用
show vlans
命令查看 VLAN 信息和链路状态:user@switch> show vlans s-vlan-name extensive VLAN: svlan, Created at: Thu Oct 23 16:53:20 2008 802.1Q Tag: 300, Internal index: 2, Admin State: Enabled, Origin: Static Dot1q Tunneling Status: Enabled Customer VLAN ranges: 101–200 Protocol: Port Mode Number of interfaces: Tagged 1 (Active = 0), Untagged 1 (Active = 0) xe-0/0/1, tagged, trunk xe-0/0/2, untagged, access
意义
输出确认 Q-in-Q 调谐已启用且 VLAN 已标记,并列出与标记的 VLAN 关联的客户 VLAN。
变更历史表
是否支持某项功能取决于您使用的平台和版本。 使用 Feature Explorer 查看您使用的平台是否支持某项功能。