当本机 VLAN(假设为 VLAN 10)到达接入端口 VLAN 20 时发生了什么?

当本机 VLAN(假设为 VLAN 10)到达接入端口 VLAN 20 时发生了什么?

基本场景:

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 层数据包,则会发生以下情况:

  1. PC A 发送一个数据包到 PC B 的 MAC 地址。
  2. 交换机 1 接收数据包并将其标记为 VLAN 10。
  3. 交换机 1 查找目标 MAC 并发现它不在 VLAN 10 的 CAM 表中。数据包被泛洪到所有 VLAN 10 端口以及承载 VLAN 10 的所有中继(源端口除外)。
  4. 交换机 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 中的计算机只能通过路由器相互通信。

相关内容