为什么我的无侦听器多播数据包会影响 Wifi 性能?

Jer*_*ner 2 networking wifi multicast

我有一个程序每 50 毫秒发送一个 IPv6 多播数据包(到 ff12::2:0:8afb:382b:c053:85f%en1)。我让它在一个非常简单的单计算机 LAN 上运行(Mac mini <-wifi-> Linksys wifi 路由器 <-cat5-> DSL 调制解调器 <-> Internet)。在我的测试中,没有计算机加入这个多播组(即没有人在监听这些数据包)

我的问题是,当这个程序运行时,Mac 的 WiFi 性能下降了 50% 以上。据推测,问题在于所有这些多播数据包都占用了我的大量 WiFi 带宽并导致拥塞……但我根本不明白为什么要传输这些数据包。我的理解是多播使用生成树算法来确保多播数据包只路由到真正有兴趣接收它们的主机。如果这是真的,并且鉴于我的 LAN 上没有其他计算机加入到这个多播地址,我的 Mac 难道不应该意识到这一点并且实际上不发送任何数据包,除非/直到其他主机加入多播组?或者生成树剔除仅在交换机上实现,而不是由主机本身实现?

Spi*_*iff 8

要添加到@sysadmin1138 的答案中(此评论对于评论框来说太长了)...

值得注意的是,802.11 以两种方式增加了这里的痛苦:BSS 内中继和低组播速率。

在 802.11 上,同一 AP 上的无线到无线帧必须由 AP 无线重新传输,以防原始发送者不在预期接收者的无线电范围内。这个过程被称为“BSS 内中继”,解决了所谓的“隐藏节点问题”——两个无线节点可能都在 AP 的范围内,但不在彼此的范围内(隐藏)。因此,来自 AP 的一个无线客户端并可能需要转到 AP 的另一个无线客户端(注意:这包括所有多播和广播)的每一帧都通过同一信道传输两次。作为 BSS 内中继的一部分,首先AP(这称为到分发系统,或“ToDS”),然后再AP(“FromDS”)。

旅程的“ToDS”段是客户​​端可以成功与 AP 通信的最高数据速率。因此,如果这是现代 3x3 N 客户端和 AP,使用 40MHz 信道和较短的保护间隔,这可能是 450mbps。

不幸的是,对于旅程的“FromDS”段,必须以足够低的数据速率发送帧,以便该 AP 的所有客户端能够可靠地接收它们。那是因为多播在 802.11 层没有被确认,因为它会导致响应每个多播的确认风暴。

某些 AP 允许您明确设置多播速率。其他人让您定义“基本”或“必需”速率集,然后 AP 从基本速率中选择多播速率。还有一些只是让您设置 b/g/n(或 a/n)兼容模式,并基于此设置预定义的基本速率和多播速率。许多 AP 默认为完全兼容模式,一直回到 802.11-1997 DSSS 数据速率 1 和 2 mbps(在 802.11b 添加 5.5 和 11mbps 之前)。这意味着您的多播速率可能低至 1mbps。

因此,在最坏的情况下,您的多播可能会占用 451的信道播放时间,因为相同大小的无线到有线(或有线到无线)单播帧将占用。

另请注意,在某些设计中,BSS 内中继由 AP 的 802.11 NIC 中的微代码执行,因此在这些架构中,这些帧在中继之前不会通过 AP 的主机处理器。因此,即使 AP 是可能违反分层模型并执行第 3 层 IGMP 侦听来修剪多播树的“智能”交换机,在无线电卡已经完成内部 BSS 之前,它也没有机会这样做在框架上中继。