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模式

  1. 支持PS-POLL机制的STA在收到AP的关联响应后,STA会发送一个PM=1的NULL Data帧给AP,此帧用于请求自己进入省电模式;
  2. AP回复Ack表示同意STA进入省电模式,此后AP开始为STA暂存帧;
  3. 当AP有暂存帧时,AP会在Beacon帧中的TIM(Traffic Indication MAP)中指示
    1. Beacon帧中有TIM(Traffic Indication Map)字段;
    2. 在TIM中的Parital Virtual Bitmap字段中包含了AP缓存数据的AID;
    3. 对于单播数据来说Multicast bit设置为0;
  4. STA通常在ListenIntervalTime(关联请求帧的Max Listen Interval Time字段)苏醒,STA检查Beacon的TIM中的AID;
  5. 如果发现次AID和自己对应就说明AP有给自己缓存的数据;
  6. 此时STA发送PS-POLL(控制帧)给AP;
  7. AP对PS-POLL回复ACK;
  8. STA准备好接收数据;
  9. AP发送数据给STA;
  10. STA检查发送的数据帧头的MoreData置位,STA明白AP还有更多的帧要发给自己,STA继续发送PS-POLL,循环6到10直到MoreData为0进入省电模式;
  11. 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模式

  1. 支持FAST-PS机制的STA在收到AP的关联响应后,STA会发送一个PM=1的NULL Data帧给AP,此帧用于请求自己进入省电模式;
  2. AP回复Ack表示同意STA进入省电模式,此后AP开始为STA暂存帧;
  3. 当AP有暂存帧时,AP会在Beacon帧中的TIM(Traffic Indication MAP)中指示;
    1. Beacon帧中有TIM(Traffic Indication Map)字段;
    2. 在TIM中的Parital Virtual Bitmap字段中包含了AP缓存数据的AID
    3. 对于单播数据来说Multicast bit设置为0;
  4. STA通常在ListenIntervalTime苏醒,STA检查Beacon的TIM中的AID;
  5. 如果发现次AID和自己对应就知道AP有给自己缓存的数据(我们发现前五个步骤和PS-POLL一样);
  6. 此时STA发送NULL Data帧(PM=0)给AP表示STA处于唤醒状态并等待ACK;
  7. AP将暂存的数据一个一个地发送给STA(并不像PS-POLL那样需要STA发送PS-POLL帧)
  8. STA检查MoreData如果为1则一直处于唤醒状态,一旦为MoreData为0,然后STA发送一个NULL Data帧(PM=1)给AP,表示自己进入省电模式、
  9. AP在Beacon的TIM中移除此AID,表示AP没有给STA缓存的帧了
 抓包FAST-PS:

posted on   sudochen  阅读(797)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示