基本场景:
PC A 连接到交换机 1 ------ 交换机 2 ----- PC B
交换机 1 具有接入端口 vlan 10,并且交换机 1 和交换机 2 之间还具有中继链路,两端的两个交换机均配置了本机 vlan 10。
交换机 2 面向 PC B 的其他接口被配置为访问端口 vlan 20。
当数据包从 PC A 传输到 PC B 时会发生什么?由于 PC A 一直到交换机 2 都有一个未标记/本机 VLAN,当它传出到 PC B 时会发生什么?数据包是通过还是将被丢弃?
答案1
您的问题不清楚,但我认为您问的是:
PC A --------- Switch 1 ------- Switch 2 --------- PC B
^ access ^ trunk ^ access
VLAN 10 VLAN 20
假设没有任何交换机执行任何类型的路由,那么 PC A 和 PC B 将永远无法相互通信。由于 PC 不在同一 VLAN 上,另一台 PC 永远不会出现在发送方 VLAN 的交换机 CAM 表中。因此,它将被泛洪到同一 VLAN 上的所有端口,并且永远不会到达另一台 PC。
更详细地说,如果这是第 2 层数据包,则会发生以下情况:
- PC A 发送一个数据包到 PC B 的 MAC 地址。
- 交换机 1 接收数据包并将其标记为 VLAN 10。
- 交换机 1 查找目标 MAC 并发现它不在 VLAN 10 的 CAM 表中。数据包被泛洪到所有 VLAN 10 端口以及承载 VLAN 10 的所有中继(源端口除外)。
- 交换机 2 通过中继接收数据包,查找目标 MAC 并发现它不在 VLAN 10 的 CAM 表中。数据包被泛洪到所有 VLAN 10 端口以及承载 VLAN 10 的所有中继(源端口除外)。
答案2
因此,为了澄清起见,您要问的是,如果 PC A 向 PC B 的 MAC 地址发送一个帧,会发生什么情况。
数据包将到达交换机 1。这里具体发生什么取决于交换机是否使用每个 VLAN 的 MAC 表。如果它使用每个 VLAN 的 MAC 表,则 MAC 查找将失败,数据包将被从 VLAN 上的所有端口(除了它来自的端口)中泛洪。如果它不使用每个 VLAN 的 MAC 表,则它可能会与 PC B 的 MAC 表条目匹配并被发送到交换机 2,或者它可能会被从 VLAN 上的所有端口中泛洪。
无论哪种方式,数据包都会被发送到交换机 2。由于 VLAN 10 是交换机间链路上的本地 VLAN,因此它以未标记的形式发送。
数据包到达交换机 2,交换机 2 将其解释为 VLAN 10 数据包(根据本机 VLAN 配置)。
如果交换机使用每个 VLAN 的 MAC 表,那么它将尝试将数据包泛洪到 VLAN 上的所有端口(除其来源端口外),但没有端口可以将其泛洪到,因此它会在那里停止。
如果它不使用每个 VLAN 的 MAC 表,那么它将在其 Mac 表中查找地址,注意到端口位于错误的 VLAN 中并丢弃数据包。
无论哪种方式,数据包都无法到达 PC B。
注意:这种情况不太可能发生,因为 PC A 根本无法发现 PC B 的存在。任何寻找 PC B 的 IP(或类似)地址的 arp 广播(或类似)都永远不会到达 PC B。
答案3
两台计算机位于不同的 VLAN 中。除非您在 VLAN 之间配置了路由,否则流量不会从 A 流向 B 或反之亦然。
这实际上与 VLAN 标记、中继端口、本机 VLAN 或您拥有两台交换机无关。连接到不同 VLAN 端口的主机无法相互通信,除非您配置了路由以在 VLAN 之间路由流量。即使您将计算机连接到一台交换机并且交换机使用出厂默认 VLAN,情况也是如此。不同 VLAN 中的计算机只能通过路由器相互通信。