双标记到单标记接口上的 VLAN 映射
你所提议的不可能在一个盒子里实现。
如果我们只关注 C-TAG 300,那么从交换机端口的角度来看,图中面向客户/最左侧端口上的流量将需要入口帧才能弹出外部(S-Tag)并将流量放入 C - 交换机上的 VLAN 300(因此它可以传递到其他标记的成员接口)。
但是,当流量返回此接口时,您只能将单个 S-TAG 推送到从该端口 500 或 600 出口的 C-TAG 300 帧上。交换机无法区分返回到每个客户的流量,因为从交换机的角度来看,从此端口获知的任何 MAC 都将位于 VLAN 300 中,而不是关联的 S-VLAN。
可以使用两个交换机(或者我敢建议,一个交换机用一条电缆回环),但随着 S-Tag 数量的增加,可扩展性不是特别高。
下面是一个非常贫民窟的 ASCII 网络图,它是如何工作的:
Switch 1 Switch 2
+----------+ +-------+
--[600 300]--[500 300]--|-+-(500)--|--[300]--|-(300)-|---[ ]---
Customer-facing | +-(600)--|--[300]--|-( )-|--[300]--
+----------+ +-------+
从左侧,您将面向客户的端口为两个 S-Tag 中继,然后在交换机上为两个 S-VLAN(500 和 600)定义 VLAN。
然后,您将在每个 S-VLAN 中有一个未标记的端口连接到交换机 2 - 这将发送仅包含每个 Q-in-Q 帧的有效载荷的帧,在本例中,该帧将是一个带有单个 C-Tag 300 的帧.
在交换机 2 上,您将定义 VLAN 300(和其他 C-VLAN)并具有允许 VLAN 300 面向交换机 1 的标记端口。
从我的杰作图中可能不会立即明显看出,但交换机 2 只有一个带有四个物理接口的大 VLAN 300。
现在,您可以将带有 VLAN 300 单标记(或未标记)的其他端口发送到您的各种服务。
事实证明,Nexus 3548 似乎不具备 Q-in-Q 能力:
来自思科文档:
配置 Q-in-Q 的功能仅适用于 Cisco Nexus 3000 和 3100 系列交换机。如果 VLAN ID 保留在边缘端口上,则在为边缘端口配置 VLAN ID 时会自动启用 Q-in-Q。
如果我理解正确的话,这可以通过一个开关实现,但它并不漂亮。正如 Benjamin 建议的那样,您可以将电缆绕回到交换机上。一个接口配置为 802.1q 隧道,而另一个接口配置为仅允许 C-VLAN 的中继。802.1q 隧道接口将根据需要推送/弹出 S-VLAN。它绝对不是可扩展的。思科在其城域网设备上提供此功能。过去,它被称为灵活的 VLAN 匹配,并允许以多种方式操纵标签。
