以太网交换机如何保证MAC地址表的有效性?

网络工程 转变 以太网
2021-07-17 19:46:37

假设我有一个带有 4 个端口PA、PB、PCPD 的交换机S,我已经将 4 个主机A、B、CD连接到它们 MAC 地址为AA:AA:AA:AA:AA:AA , BB:BB:BB:BB:BB:BB, CC:CC:CC:CC:CC:CCDD:DD:DD:DD:DD:DD,顺序相同。现在让我们说交换机,S已经在主机之间传输数据包后创建了 MAC 地址表。

MAC 地址表看起来有点像这样 -


AA:AA:AA:AA:AA:AA -----> PA

BB:BB:BB:BB:BB:BB -----> PB

CC:CC:CC:CC:CC:CC -----> PC

DD:DD:DD:DD:DD:DD -----> PD

现在让我们说,我交换了主机CD所以交换后,主机C连接到端口PD,主机D连接到端口PC但是与交换机的MAC地址表保持不变;(假设:没有从任一主机、CD传输的帧来重建 MAC 地址表)

现在,如果主机A要向主机C发送数据,则主机A传输的数据将到达交换机,S然后交换机查找其 MAC 地址表,并计算出帧中的目标 MAC 地址为CC:CC: CC:CC:CC:CC(主机C 的)连接到端口PC并在其PC端口上转发帧但是一旦帧到达连接到端口PC的主机,即主机D(因为我们已交换)将拒绝该帧。由于它的网卡比较自己的MAC地址DD:DD:DD:DD:DD:DD目的MAC地址CC:CC:CC:CC:CC:CC。并且数据包会被丢弃。

  1. 请确认我对这个场景的理解是否正确。

  2. 其次,如果数据包到达错误的主机并被丢弃。以及我将数据发送到目标主机的源主机。在网络中如何解决这个问题。

2个回答

您的理解是正确的,但您的假设是“没有从主机 C 和 D 传输任何帧”。很可能是错误的。

无偿ARP恰恰解决了这个问题。来自Wireshark.org

如果网络接口的 IP 或 MAC 地址发生变化,许多操作系统中的网络堆栈将发出免费 ARP,以通知网络上的其他机器发生变化,以便它们报告 IP 地址冲突,让其他机器更新它们的 ARP 表, 并通知交换机本机的 MAC 地址。

即使没有免费 ARP

  • 如果机器设置为 DHCP,则 DHCP 请求将触发更新
  • 即使设置为静态,大多数操作系统往往会发送很多很多种类的流量,即使没有被请求,例如自动更新。

除了 JFL 的回答之外,许多设备会在链接出现时发送免费的 ARP;当链路状态改变时,交换机应该相应地使给定端口的 MAC 表无效。在您的示例中,当您在端口 PC 和 PD 上交换设备 C 和 D 时,移除电缆后,链路应该断开,并且交换机应该从表中删除它们的地址。

如果您在不发送免费 ARP 的系统上交换 MAC 地址(通过重新配置),交换机可能会从错误的端口发送帧,直到传输触发更新。(例如 TCP 重传。)交换机还会删除太旧的 MAC 地址,因此最终无论如何都会对其进行修剪。

具有良好算法的交换机应该注意到传输到没有回复的 MAC 地址并将其从表中删除,就像老化一样。如果您可以让主机以这种方式运行,那么尝试不同的交换机是一个很好的实验。