802.11 对于multicast 和 broadcast的处理

时间:2021-12-29 08:58:14

ethernet内部会有broadcast 和 multicast。这两种包都是一个STA向多个STA发包。

当没有wifi存在的时候,LAN口之间的broadcast 和 multicast是可靠转发的,但是若有wifi存在就不一样了。

电源考量

根据协议,broadcast和multicast在DTIM的时候AP会发送给STA。DTIM在AP中的设置一般是一倍的TIM。

当DTIM增加的时候,会更加省电,因为出于PS模式下的STA醒来的次数变少了。但是这也会导致某些应用的延时加大。

DTIM减少的时候,会更加费电。

稳定性

broadcast 和 multicast都是使用基本速率发送的。多次测试可以看到,它们是用11Mbps的CCK rate发送。

802.11 对于multicast 和 broadcast的处理

当然这只是AP发出的broadcast和multicast的设定,从STA发出的包还是以正常的速率来。

一般来说,这两种包是没有ACK保护的,也就是说会丢包。

对于Ethernet来说,这两种包基本上不会丢,因为Ethernet比较稳定。但是wifi层面存在很多干扰,导致

丢包严重。

802.11透明转发

802.11对于BC/MC包的处理,可以理解为对ethernet是透明的。

当WiFi Client发送BC/MC包的时候,AP会对这个包进行转发,下面是流程:

1.STA以正常速率发出QoS data给AP,RA和TA分别是STA和AP的地址,SA是STA的地址,DA是BC/MC地址。使用pairwise key加密

2.AP以基本速率发出DATA,RA是BC/MC地址,TA是AP的地址,SA是STA的地址,DA是BC/MC地址,SA是STA的地址。使用group key加密。

注意到,对于BC/MC的包,都是进过加密的,一般都是CCMP加密。无线Client需要用group来解析收到的包,802.11也是提供了很好的安全性。

对于两端的STA,将802.11包转换成Ethernet包之后,802.11层次的东西就不可见了,唯一的区别是无线AP的LAN口之间的BC/MC包不容易丢,

但是LAN和wireless,wireless和wireless之间的BC/MC包容易丢弃。当然了,从wireless STA到LAN口的包应该不容易丢,因为之间传输的是unicast的Qos data,有ACK保护。

其他

在编程中会涉及到IP地址和MAC地址的转换,实际上IP地址填写完之后,协议栈会帮你转换成MAC地址。

在这点上802.11和Ethernet是没什么区别的,因为这是IP layer和MAC Layer接口处的考量。

测试工具推荐这个(开源的):

802.11 对于multicast 和 broadcast的处理