如果具有相同 MAC 地址的两台主机在同一个广播域中会发生什么?

网络工程 MAC地址 交换 arp
2021-07-13 01:23:33

我知道在同一广播域中出现重复 MAC 地址的情况永远不应该发生。但是,如果发生这种情况,那么网络将如何工作?我认为这里应该区分三种情况:

1)如果MAC地址相同的网卡直接用交叉线连接,那么根据我的测试,如果“ARP回复中的MAC地址" 消息与配置到 NIC 的消息相同,而其他消息(例如 Linux 2.6 和 3.7)。

2) 如果具有相同 MAC 地址的 NIC 通过交换机连接,并且这两个主机尝试相互通信。这不应该起作用,因为如果一台主机发送一个具有相同源和目标 MAC 地址的单播帧,那么交换机希望将帧发送到它接收帧的端口之外,这是非法操作?换句话说,此类流量应该由交换机丢弃。

3)如果两个MAC地址相同的网卡连接到交换机,并尝试与同一广播域中的其他主机通信。在这种情况下,一次只能访问一台主机?取决于哪个交换机端口已获知 MAC 地址。如果两台主机都产生流量,那么两台交换机端口之间的MAC地址会漂移,两台主机都会丢包?

1个回答

我已经多次看到这种情况,制造商很懒惰,将 MAC 地址存储在 CMOS 或类似物中,然后退回到常见的默认值。如果使用本地分配的地址(例如在配置 VM 时),也很容易安排

  1. 我还没有测试过单个操作系统的作用。如果您唯一的问题是 ARP,那么静态 ARP 条目可能适合您。

    1. 一些旧的 DEC 系统过去常常将环回数据包发送到它们自己的地址,作为重复地址检查。我相信一些 Cisco 交换机对环路检测也做同样的事情。无论哪种方式,它都是目标 MAC 过滤的特例。如果地址不在缓存中,我不确定第一个数据包是否会立即被丢弃:它可能会被添加到转发表中并被转发。否则,默默放下。

    2. MAC 地址会抖动;如果您在更高级别运行无状态协议,您最终可能会得到类似于原始单播负载均衡器的东西。对于像 TCP 这样的东西,你会得到很多 RST 以及数据包丢失。正如其他人所说,对于“企业”交换机来说,它看起来像是 MAC 欺骗,有些人可能会记录/捕获此事件。