WLAN Legacy PowerSave
节电模式
首先,PS模式是客户端的一种模式,节电模式是为了节省电池电源,这个机制在使用电池的设备上非常有用,节电模式可以让设备运行更长的时间。WLAN设备一般支持4如下四种电源模式(Power Mode)
- Active mode 这种模式是标准和默认的模式,这种模式下STA没有使用节电模式
- Legacy 80211 PS Mode(PS-POLL)
- Fast-PS Mode 也称为Non PS-POLL模式)
- U-APSD mode (WMM-PS)
除第一种模式外,其他三种模式都是节电模式,这篇文章我们主要讨论Legacy 80211 PS Mode和Fast-PS Mode(Non PS-POLL),这两中个模式都称为Legacy PS Mode,STA在同一个时刻只能支持一种Legacy PS Mode(怎么区别不太清楚),当STA不支持WMM时则一定会支持Legacy PS Mode,当STA支持WMM但是不支持WMM-PS时则会在设备的关联请求的WMM信息元素中会看到WME Qos对应的字段都为0,如下:
PS-POLL模式
- 支持PS-POLL机制的STA在收到AP的关联响应后,STA会发送一个PM=1的NULL Data帧给AP,此帧用于请求自己进入省电模式;
- AP回复Ack表示同意STA进入省电模式,此后AP开始为STA暂存帧;
- 当AP有暂存帧时,AP会在Beacon帧中的TIM(Traffic Indication MAP)中指示
- Beacon帧中有TIM(Traffic Indication Map)字段;
- 在TIM中的Parital Virtual Bitmap字段中包含了AP缓存数据的AID;
- 对于单播数据来说Multicast bit设置为0;
- STA通常在ListenIntervalTime(关联请求帧的Max Listen Interval Time字段)苏醒,STA检查Beacon的TIM中的AID;
- 如果发现次AID和自己对应就说明AP有给自己缓存的数据;
- 此时STA发送PS-POLL(控制帧)给AP;
- AP对PS-POLL回复ACK;
- STA准备好接收数据;
- AP发送数据给STA;
- STA检查发送的数据帧头的MoreData置位,STA明白AP还有更多的帧要发给自己,STA继续发送PS-POLL,循环6到10直到MoreData为0进入省电模式;
- AP在Beacon的TIM中移除此AID,表示AP没有给STA缓存的帧了
在第10部,为什么不想第1步一样需要发送一个PowerManament为1的NULL Data帧给AP而直接进入省电模式呢?
因为PS-POLL的PWR MGT一直都为1
如下图为整个PS-POLL机制的过程抓包分析:PS-POLL帧格式
PS-POLL是一种特殊的控制帧,它使用Duration表示AID,PM位永远为1
由于没有Duration字段,其他的STA在监听到PS-POLL后延迟等待多长时间访问信道呢,答案是SIFS+ACK time
STA多长时间从省电模式苏醒
通常情况下,在关联请求帧里可以看到STA的省电苏醒时间(Max Listen Interval Time)单位是ms
抓包中我们可以看到此STA的苏醒时间为600豪秒
在AP的内部为每个AID都维护了一个定时器,如果在定时器超时后数据还没有发送,则AP会丢弃该AID(也就是STA)的所有缓冲区数据并重置定时器,这个定时器在规范中没有固定值。
FAST-PS模式
FAST-PS模式也称为Non PS-POLL模式
- 支持FAST-PS机制的STA在收到AP的关联响应后,STA会发送一个PM=1的NULL Data帧给AP,此帧用于请求自己进入省电模式;
- AP回复Ack表示同意STA进入省电模式,此后AP开始为STA暂存帧;
- 当AP有暂存帧时,AP会在Beacon帧中的TIM(Traffic Indication MAP)中指示;
- Beacon帧中有TIM(Traffic Indication Map)字段;
- 在TIM中的Parital Virtual Bitmap字段中包含了AP缓存数据的AID
- 对于单播数据来说Multicast bit设置为0;
- STA通常在ListenIntervalTime苏醒,STA检查Beacon的TIM中的AID;
- 如果发现次AID和自己对应就知道AP有给自己缓存的数据(我们发现前五个步骤和PS-POLL一样);
- 此时STA发送NULL Data帧(PM=0)给AP表示STA处于唤醒状态并等待ACK;
- AP将暂存的数据一个一个地发送给STA(并不像PS-POLL那样需要STA发送PS-POLL帧)
- STA检查MoreData如果为1则一直处于唤醒状态,一旦为MoreData为0,然后STA发送一个NULL Data帧(PM=1)给AP,表示自己进入省电模式、
- AP在Beacon的TIM中移除此AID,表示AP没有给STA缓存的帧了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律