交换机如何在内部区分 VLAN?

网络工程 转变 局域网
2022-02-28 14:40:07

在配置了两个访问端口的单个交换机的简单拓扑中,例如 VLAN 10 上的 fa0/1 和 VLAN 20 上的 fa0/2,如果它们是访问端口并因此未标记,交换机如何知道不在这些 vlan 之间发送广播. 由于它们是这些 VLAN 上的主机发送的不变以太网帧,直到它们被中继端口标记,交换机如何在内部区分它们?

3个回答

交换机以“存储转发”的方式工作:它接受所有传入的帧,决定如何处理它们,然后将它们从适当的端口转发出去。

本质上,每一帧都将用其 VLAN 进行标记,因为它存储在交换机中。到达接入端口的帧被标记为它们配置的 VLAN;到达中继端口的帧将获得其标记的 VLAN,如果它们未标记,则为默认值。

交换机所做的最重要的事情之一是,如果它们没有需要去的地方,就决定扔掉一些帧。

可能有几种不同的实现方法。

最明显的方法是拆分 MAC 源地址表,以便每个 VLAN 都有自己的表(或使用 VLAN ID 作为全局表中每个 MAC 的扩展)。在交换机内,帧需要保持其 VLAN 关联(可能作为目标 MAC 字段的扩展),并且不得转发到任何其他 VLAN。显然,接收到的不带标签的帧需要在入口处立即与其 VLAN 相关联。

此外,交换机必须过滤广播,以便它们仅被泛洪到 VLAN 成员。您可以在生成原始广播帧副本的过程中执行此操作,或者(更简单)将广播复制到所有端口以及根据端口配置的要求标记和过滤的每个端口。

“不转发到任何其他 VLAN”的唯一例外是封装数据包在第 3 层交换机上路由时。但话又说回来,路由无论如何都需要剥离封装的 L2 帧并为目标段重新封装,因此新的 VLAN ID 只是要生成的另一部分。

这两个端口配置用于不同的本地 VLAN。 交换机根据端口的配置方式假定或默认未标记数据包的 VLAN 成员身份。

来自维基百科的 IEEE802.1Q 页面

可识别 VLAN(即,符合 IEEE 802.1Q)的网络部分可以包括 VLAN 标签。当帧进入网络的 VLAN 感知部分时,会添加一个标记以表示 VLAN 成员资格。[a] 每个帧必须可区分为恰好位于一个 VLAN 内。假定网络的 VLAN 感知部分中不包含 VLAN 标记的帧在本地 VLAN上流动。

标签是插入数据包的四字节字段:

VLAN 数据包