当我连接到交换机时,交换机知道哪个 MAC 地址属于哪个端口。那么即使我处于混杂模式,为什么我也会收到发往其他 MAC 地址的单播数据包?
我应该得到的是发送到我的 MAC 的广播、多播和单播,我不明白这种混杂模式到底是什么?
答案1
交换机通过创建一个将设备的 MAC 地址映射到端口的表来运行。它们查找目标 MAC 地址来确定应该将流量转发到哪个端口,并且只应将单播帧转发到此端口。
交换机在接收流量时会学习这些 MAC 地址。如果它在“端口 A”上接收帧,它将学习发送该流量的设备的源 MAC 地址位于该端口。
如果没有从主机接收到流量,这些条目将随着时间的推移而过期。如果交换机没有目标 MAC 地址的条目,它将从除接收帧的端口之外的每个端口“泛洪”帧副本。所有广播和多播流量也以相同的方式处理,因为流量可以发往多个主机(除非交换机支持更高级的功能,如 IGMP 侦听)。
因此,如果您看到大量发往不同主机的单播流量,则最有可能的解释如下:
- 具有目标 MAC 的设备仅接收而不产生任何流量,并且已经过期或从未出现在表中。
- 交换机可用于将新条目插入表中的资源已耗尽,这意味着它不会添加任何新条目,直到某些条目过期。这会导致此目的地的所有流量被淹没。
- 交换机出现故障,无法正常运行。这可能是固件或硬件问题。
- 交换机实际上并不是交换机,而是一个集线器。集线器的工作原理是始终将帧的副本从未收到该帧的每个端口泛洪出去。
- 某些交换机可以配置为将流量从一个端口“镜像”到另一个端口。通常,只有托管交换机才具有此功能。
答案2
在细网和以太网集线器时代,混杂模式更有用。您说得对,以太网交换机会了解哪些 MAC 地址连接到哪些端口,并相应地隔离流量。
有些交换机允许将一个端口用作监控端口,通过交换机的所有流量也传输到该端口。
答案3
交换机不会在它知道不需要的链路上发送数据包。除非它是一个智能交换机,永久配置为知道特定 MAC 地址分配给特定端口,否则它会“泄露”一些帧。
答案4
交换机可能不知道所有主机,如果交换机不知道要发送哪个端口,其默认行为是将其视为 bc/mc,交换机将从该 vlan 中的所有端口泛洪数据包。这称为未知单播泛洪。