当目的地前面有另一个交换机时,交换机如何知道将数据包路由到哪里?

网络工程 路由 转变 以太网 MAC地址 奥西
2021-07-08 16:55:01

我只是想知道交换机如何知道如何将数据包路由到“隐藏”在另一个交换机后面的目的地。在我的理解中,交换机有一个表,将其每个硬件端口映射到一个 MAC 地址。到目前为止一切顺利,当数据包/帧 (?) 到达时,它现在可以确定应该路由数据包的端口。

但是,当有另一台交换机连接到这些端口之一并且第二台交换机连接了多个设备时会发生什么?

我想知道交换机如何解决这个问题(在 OSI-Layer 2 上,没有路由器),因为我认为这在现实中确实有效(?)

如果这个问题已经存在,我很抱歉(我认为是这样,它应该不会那么罕见),但我无法将我的想法放入合适的搜索查询中。

3个回答

第 2 层交换机通过“侦听”传入帧来了解有关其他端点位置的大部分信息,当它不知道位置时,它会使用flooding答案并将从答案中学习。让我们说拓扑是:

(主机A)<-->(交换机A)<-->(交换机B)<-->(主机B)。

同样重要的是要注意,L2 交换机转发,它不路由。我的意思是,当它收到一个封装的帧时,它会将它转发出接口。

  • 主机 A 想要访问主机 B。主机 A 知道主机 B 的 MAC 地址。所以主机 A 向交换机 A 发送一个帧。
  • 交换机 A 在其 MAC 地址表中没有主机 B。然后交换机 A 在其所有端口上泛洪帧,但主机 A 所在的除外。在所有这些端口中,有交换机 B 插入的端口,因此交换机 B 接收帧。
  • 然后交换机 B 将该帧从其所有端口泛洪(考虑到交换机 B 在其 MAC 地址表中没有主机 B)。
  • 主机 B 将响应该帧,然后交换机 B 将记录主机 B 的 MAC 地址并将响应发送给交换机 A。然后交换机 A 在其表中记录主机 B 的 MAC 地址并将响应发送给主机 A

这是一个相关的问题:交换机如何学习交换机表?

交换机可以将多个 mac 地址映射到一个端口。

因此,第二个交换机上的所有设备 mac 都被第一个交换机视为属于一个端口。

它在收到任何数据包时更新它的表,因为它们都包含一个源 mac。如果它在更改它的 mac 地址表(mac 到端口映射)之前将 mac 放在不同的端口上。

当mac的位置在端口之间经常变化时,会报macflap。

当拓扑为:主机 A - 交换机 A - 交换机 B - 主机 B

理想情况下,主机 A 将知道主机 B(它想要与之通信的目的地)的 IP 地址。假设两台Host的IP地址在同一个网络中,Host A通过ARP获取目的地址的mac地址。这是一个广播帧,从交换机 A 和交换机 B 的端口转发到主机 B,主机 B 发现它是预期的接收者,并使用自己的 MAC 地址进行回复。

主机 A 稍后使用此 MAC 地址并将数据包发送到交换机 A。

交换机 A 看到 MAC 地址并通过参考其自己的 MAC 表将该数据包转发到适当的接口之外。类似的操作发生在交换机 B - 后来到达目标主机 B。