您的位置:首页 > 其它

PS模式下的数据收发

2014-11-06 17:01 211 查看
本文转载至:/article/8526294.html

工作在 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 发送一个为它缓存的数据包。如果有多个处于 PS
模式的 STA 在收到同一个 Beacon之后都要接收数据,那么这些 STA 发送 Poll 的机制同发送数据一样,也遵循 CSMA/CA。

在有 STA 处在 PS 模式的 WLAN 里,除了发向特定 PS 模式 STA 的单播(Unicast)数据包外,那些广播(Broadcast)和组播(Multicast)数据包某些时候也需要在AP 缓存。AP 每隔 DTIM-Interval 时间在Beacon帧中包含 DTIM(Delivery TIM)指示信息,以指示其后有广播或组播数据发送。那些希望接收广播和组播数据的STA 则要每隔 DTIM-Interval 转为 Awake 接收
Beacon,并在有广播或组播数据时接收,而那些对能量消耗极敏感的STA 可以选择不接收DTIM。

无论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 状态。但是由于虚载波侦听机制的要求,STA 在发送前必须确定其他 STA 不在发送数据,而刚从 Doze 状态转化到 Awake 状态的 STA 因为过去一段时间没有侦听信道中的 MAC 帧,其 NAV 不准确,因此,在发送数据前,STA 必须侦听信道,等到收到发自其他 STA 的 MAC 帧,正确设置了自己的
NAV 之后,才可以开始采用正常的 CSMA/CA 机制发送数据。当然如果刚 Awake 的STA 侦听了足够长时间后仍没有收到任何MAC帧,也可以开始发送。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: