配置 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.1Q 标记,将客户流量隔离或捆绑到更少或不同的 VLAN 中。当客户有重叠的 VLAN ID 时,Q-in-Q 隧道会很有用,因为客户的 802.1Q (dot1Q) VLAN 标记前置了服务 VLAN (S-VLAN) 标记。瞻博网络 Junos 操作系统 (Junos OS) 的 Q-in-Q 隧道实施支持 IEEE 802.1ad 标准。
本主题介绍:
- 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 标记是唯一的;例如,您可以同时拥有 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 系统连接到用于发送未标记流量的客户虚拟机的托管服务器,并且每个客户的流量都需要自己的 VLAN,同时通过 QFabric 传输,则此功能会很有用。您可以对每个客户的流量应用一个唯一的内部 (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 转换,请在层级使用 映射 swap
语句 [edit vlans interface]
。只要 C-VLAN 和 S-VLAN 标记是唯一的,您就可以在接入端口上配置多个从 C-VLAN 到 S-VLAN 的转换。如果仅转换接口上的一个 VLAN,则不需要在 S-VLAN 配置中包含语句 dot1q-tunneling
。如果要转换多个 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 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 映射 已设置为 push
— 如果设置未到位,则功能不起作用。
要指定本机 VLAN,请在 native-vlan-id
层级使用语句 [edit interfaces interface-name]
。本机 VLAN ID 必须与 C-VLAN 或 S-VLAN ID 匹配,或者包含在逻辑接口上指定的 VLAN ID 列表中。
例如,在 C-VLAN 接口的逻辑接口上,您可以将 C-VLAN ID 列表指定为 100-200。然后,在 C-VLAN 物理接口上,您可以将本机 VLAN ID 指定为 150。此配置可以正常工作,因为 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,请对native
customer-vlans
语句使用选项。(将优先级标记数据包的 VLAN ID 设置为 0,其优先级代码点位可以使用 CoS 值进行配置。)多对多捆绑 — 如果您希望接入交换机上的 C-VLAN 子集成为多个 S-VLAN 的一部分,请使用多对多捆绑。
映射特定接口 — 使用该
edit vlans s-vlan-name interface interface-name mapping
语句为给定的 S-VLAN 指定 C-VLAN。此配置仅适用于一个接口,不像一体化和多对一捆绑那样所有接入接口。如果您希望将未标记或带有优先级标记的数据包映射到 S-VLAN,请对native
customer-vlans
语句使用选项。此方法有两个选项:交换和推送。使用推送选项时,数据包将保留其标记,并会添加一个附加的 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 的一部分,则使用多对一捆绑。使用多对一捆绑时,未标记和优先级标记的数据包可以随选项一起customer-vlans
指定时映射到 S-VLANnative
。
多对多捆绑
多对多捆绑用于指定将哪些 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 有重叠的标记。
例如,不允许进行以下配置:
vlans { customer-1 { vlan-id 100; /* S-VLAN */ interfaces ge-0/0/0.0; /* Downstream */ interfaces ge-0/0/1.0; /* Downstream */ interfaces xe-0/1/0.0; /* trunk */ dot1q-tunnelling customer-vlans 100-200 300-400 } } customer-2 { vlan-id 200; interfaces ge-0/0/0.0; /* Downstream */ interfaces xe-0/1/0.0; /* trunk */ dot1q-tunnelling customer-vlans 250-350 } } customer-3 { vlan-id 300; interfaces ge-0/0/1.0; /* Downstream */ interfaces xe-0/1/0.0; /* trunk */ dot1q-tunnelling customer-vlans 500-600 } }
由于配置
customer-2
可为 ge-0/0/0 创建重叠customer-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) 接口上配置。
-
使用语句对具有 Q-in-Q 接口的
vlan-tags
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 个规则。但是,您无法为 Q-in-Q 隧道和 VLAN 转换配置 4000 个 VLAN 和 2500 个规则。如果尝试提交超过限制的配置,您将看到有关问题的 CLI 和 syslog 错误。
-
您不能使用本机 VLAN ID。
-
MAC 地址是从 S-VLAN(而非 C-VLAN)中学习的。
-
广播、未知单播和组播流量将转发至 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 匹配和操作)。QFX10000 交换机支持多个 Q-in-Q 标记,适用于第 2 层桥接和 EVPN-VXLAN 案例。第 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 过程)。
使用以下一种方法将 C-VLAN 映射到 S-VLAN,以配置 Q-in-Q 隧道:
配置一体化捆绑
您可以使用一体化捆绑方法配置 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,逻辑接口 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 将被移除,并替换为 150 的 C-VLAN 标记。
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) 时,相应 S-VLAN 的另一个 802.1Q 标记会先添加该 C-VLAN 标记。C-VLAN 标记保留并通过网络传输。当数据包从 S-VLAN 空间中退出时,在下行方向上,S-VLAN 802.1Q 标记将被移除。
在 ACX 系列路由器中,您可以通过显式配置具有桥接域中面向客户的接口功能的输入 VLAN 映射 push
来配置 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 标识符列表不能超过 8 个。此限制不适用于 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 映射到 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 150 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。)
首先配置 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 标识符列表不能超过 8 个。此限制不适用于 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/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 接口上配置特定接口映射,并在 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 映射到属于 S-VLAN 200 的逻辑接口 200。此外,当数据包从 C-VLAN 接口 xe-0/0/1 出口到 S-VLAN 接口时,将删除 150 的 C-VLAN 标记,并替换为 200 的 S-VLAN 标记。当数据包从 S-VLAN 接口传输到 C-VLAN 接口时,200 的 S-VLAN 标记将被移除,并替换为 150 的 C-VLAN 标记。
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,请参阅 在 QFX 系列、NFX 系列和 EX4600 交换机上配置支持 Q-in-Q 隧道。
此示例介绍如何设置 Q-in-Q 隧道:
要求
此示例需要一台 Junos OS 12.1 或更高版本的 QFX 系列设备。
开始设置 Q-in-Q 隧道之前,请确保已在相邻交换机上创建并配置了必要的客户 VLAN。请参阅在交换机上配置 VLAN。
概述和拓扑
在此服务提供商网络中,有多个客户 VLAN 映射到一个服务 VLAN。
表 2 列出了示例拓扑的设置。
界面 | 说明 |
---|---|
|
标记 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 Ethertype 值(可选):
[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:
要求
此示例需要一台具有 Junos OS 9.3 或更高版本的 EX 系列交换机,用于 EX 系列交换机。
开始设置 Q-in-Q 隧道之前,请确保已创建并配置了必要的客户 VLAN。请参阅 为 EX 系列交换机配置VLAN 或为 EX 系列交换机配置 VLAN(J-Web 过程)。
概述和拓扑
在此服务提供商网络中,有多个客户 VLAN 映射到一个服务 VLAN。
表 3 列出了示例拓扑的设置。
界面 | 说明 |
---|---|
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 Ethertype 值:
[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
验证 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。