WIFI power save 模式下的数据收发

PS模式下的数据收发
工作在PS 模式下的STA 一般会尽量保持在Doze 状态,只在必要的
时候转换到Awake 状态。在Doze 状态的STA 无法侦听信道,这导致PS
模式下STA 收发数据的方式跟Active 模式下有所不同,特别是接收数据
的方式大相径庭。
发向PS 模式的STA 的数据会在AP 处缓存,在AP 周期性地广播的
Beacon 帧中包含一个数据指示表TIM(Traffic Indication Map),TIM 指
明当前所有有数据在AP 处缓存的STA。处在Doze 状态的STA 并不知道
何时有数据被缓存,因此STA 必须周期性的接收来自AP 的Beacon 以确
定本身是否有数据被缓存。AP 广播Beacon 的周期为Beacon-Interval,STA
接收Beacon 的周期为Listen-Interval,STA 可以自由选择Beacon-Interval
的整数倍作为自己的Listen-Interval。STA 每隔Listen-Interval 接收Beacon
并解码其中的TIM,如果TIM 指示没有数据缓存,STA 就可以立刻转入
Doze 状态,如果TIM 指示其有数据缓存,STA 就要向AP 发一个竞选控
制包Poll,AP 在收到Poll 后就可以向该Poll 的源STA 发送一个为它缓存
的数据包(如图4-2)。如果有多个处于PS 模式的STA 在收到同一个Beacon
之后都要接收数据,那么这些STA 发送Poll 的机制同发送数据一样,也
遵循CSMA/CA。Poll 的机制使得STA 在接收数据方面同发送数据一样具

在有STA 处在PS 模式的WLAN 里,除了发向特定PS 模式STA 的
单播(Unicast)数据包外,那些广播(Broadcast)和组播(Multicast)数
据包某些时候也需要在AP 缓存。AP 每隔DTIM-Interval 时间在Beacon
震中包含DTIM(Delivery TIM)指示信息,以指示其后有广播或组播数
据发送。那些希望接收广播和组播数据的STA 则要每隔DTIM-Interval 转
为Awake 接收Beacon,并在有广播或组播数据时接收(如图4-中第3 行
所示),而那些对能量消耗极敏感的STA 可以选择不接收DTIM(如图
4-中第4 行所示)。
无论TIM 还是DTIM 都只能指示一个数据包被STA 接收,而不能标明
每个STA 有几个包被AP 缓存。为了解决这个问题,AP 在向STA 发送数
据包时用帧头控制比特More-Data 标明是否仍有数据缓存在AP 处。处于
PS 模式的STA 在接收数据时根据More-Data 比特决定是否继续保持
Awake;若More-Data=0,则STA 立刻可以转入Doze,若More-Data=1,
则STA 则要继续保持Awake,竞争发送Poll 或接收其余的广播(或组播)
包,直到收到下一个Beacon 为止。STA 从PS 模式转换到Active 模式,
AP 将尽快将为其缓存的数据包发送给该STA。综上,缓存、竞争收包的
机制可以使处于PS 模式的STA 不会丢失数据包。
PS 模式下的STA 在发送数据包的时候同Active 模式下没有区别,只
是在需要发送之前转为Awake 状态,发送成功后随时可以转为Doze 状态。
但是由于虚载波侦听机制(参见2.1 节)的要求,STA 在发送前必须确定
其他STA 不在发送数据,而刚从Doze 状态转化到Awake 状态的STA 因
为过去一段时间没有侦听信道中的MAC 帧,其NAV 不准确,因此,在发
送数据前,STA 必须侦听信道,等到收到发自其他STA 的MAC 帧,正确
设置了自己的NAV 之后,才可以开始采用正常的CSMA/CA 机制发送数
据。当然如果刚Awake 的STA 侦听了足够长时间后仍没有收到任何MAC
帧,也可以开始发送。

你可能感兴趣的:(工作)