802.11协议精读10(2):节能模式(PSM)
https://zhuanlan.zhihu.com/p/21623985
序言
AID,TIM与Bitmap
AID
AID的分配:
当节点向AP发起关联请求,AP反馈关联相应帧。AID在该过程中被分配,并被告知给节点。
AID的分配从1开始,一个个下发给节点,且不会主动回收。
AP通过bitmap周期性广播缓存的buffer信息,
bitmap放置在beacon帧中,作为一个字段(TIM字段)被携带。
TIM(Traffic Indication Map),流量指示图:
是beacon中的一个字段。
实际上是一个基于bitmap结构的流量指示图,用以标识AP的缓存信息,具体结构如下:
-
Element ID:元素识别码,用来标识beacon帧中包含的不同字段
-
Length:长度。描述Element的长度(管理帧中information element必备元素)
-
DTIM Count、DTIM Period:DTIM计数、间隔周期。
- TIM 是一种基本的 流量指示图 的结构,仅指示AP缓存的单播信息
- DTIM 是一种特殊的TIM,包括 AP缓存的单播信息,AP缓存的组播信息
- DTIM Period 是一个周期(固定值),代表再经过几个TIM是一个DTIM
- DTIM Count 是一个计数值,当其为0,代表当前TIM为DTIM
- ATIM 是一个帧,在IBSS模式下被使用(此处不展开)
-
Bitmap Control、Partial Virtual Bitmap:Bitmap 的具体字段。
-
原始Bitmap存在缺点:
1、传输时间长
Beacon的实际发送一般采用最低速率:
- beacon帧 是一个广播帧,没有ACK反馈,因而没有设置重传
- beacon帧 希望被所有节点有效接收,从而采用较低的速率(保证信号较差的节点也可以接收该信息)
因此,当 beacon帧 包含完整 Bitmap(251 bytes),将占据较长的传输时间,降低信道的利用率,影响整体的吞吐量。实际中,省略后面没有用到的AID位置。
2、缺少灵活性
AP对于AID的分配没有一个回收机制,所以可能存在情况:前面的位置都没有在使用,活跃节点在后面。这样前面的传输就浪费了。
所以要对冗余空间优化省略。
Bitmap Control 可以分为进一步分成两个部分:
- 第[0]位:指示是否有组播、广播数据包被缓存。若为1,则有。
- 第[1:7]位:标识 Bitmap offset,指示AID偏移情况。描述在Partial Virtual Bitmap中的起始AID。
Partial Virtual Bitmap(部分虚拟位图)
-
-
Duration/ID 参数,标识为AID。
TSF,TBTT,Listen Interval field与CFP repetition interval
如前所述,AP是周期性发送beacon帧,beacon帧中的TIM字段包含缓存区信息
存在两个缺点:
- 限制了节点的休眠时间:如果每个周期都醒来接收对应beacon,耗费能量。
- 增加了TIM的信息:如果beacon帧 中没有保存所有节点的TIM信息,则可以(利用Bitmap Control、Partial Virtual Bitmap)压缩空间
为了让节点在指定时间醒来,接收有用的缓存区信息:
AP和节点间需要做到时间同步,并且规定周期。
TSF(Timing Synchronization Function)时间同步功能:
协议中用TSF机制来描述定时同步功能。存放于beacon帧中的Timestamp字段
TSF定时器一共64位,单位是us。
在基础架构模式中,当STA接收到AP的beacon帧后,提取Timestamp字段的时间戳,并且添加一下本地估算出来的延迟(从天线端口接收到最后处理的本地延迟),从而完成节点与AP时间同步的功能。
TBTT(Target Beacon Transmission Time):信标预定传送时间
发送/接受beacon动作的周期,周期时长由Beacon Interval字段决定。
这个周期长度,也叫Beacon时槽。
当TBTT时间到达,AP会主动发送beacon帧,
节点也都会主动接受该beacon帧(休眠模式的节点将会苏醒),并做两件事:进行时间同步、查看TIM字段是否有数据缓存(有就接收,无就休眠)
为了更节能,节点不会每个beacon都监听。而是隔几个TBTT周期,监听一次。
Listen Interval监听间隔:
节点每隔多少个TBTT,苏醒一次,用以指示跳过(Listen Interval-1)个Beacon帧。
Listen Interval 由节点通过 Association Request帧 发送给AP。AP获得节点的苏醒时间,在对应节点苏醒时,才在beacon帧中指示buffer状态
CFP repetition interval:CFP重复周期
协调PCF和DCF两个不同工作模式的一个调度周期,
包含CFP和CP两个部分:CFP为PCF工作,CP为DCP工作。
CFP时间间隔,要等于TBTT时间的倍数。所以CFP的起始一定会有一个beacon帧(结束不一定)。
PSM模式(Power Save Mode)
1、如何进入PSM模式
节点 通过MAC层头部 Frame Control Field 中的 Pwr Mgt字段、More Data字段,告知AP 自己要工作在PSM模式下。
任意一个帧都可以用来进行工作模式的切换。
- Pwr Mgt(Power Management): 标识在该帧过后,节点是否会进入省电模式(PSM mode)。若为1,节点进入PSM mode。
- More Data:AP指示节点,是否还有该节点的缓存数据没有发送。
2、DCF下的PSM模式
DCF是基于竞争的工作模式,所有节点需要接入信道需要进行竞争,包含AP以及工作在节能模式下的节点。
下图描述了1个AP,2个节能节点工作的时序图:
黑色轴代表数据包发送和接收的时序,紫色线代表节点苏醒的情况。
STA1的Listen Interval等于2,STA2的Listen Interval=1。
在PSM模式下,节点苏醒的条件有两个,达到其中一个其就会苏醒:
- 根据Listen interval进行苏醒
- DTIM周期,所有节点都需要苏醒。(因为DTIM是用来下发AP上缓存的组播/广播帧)
3、PCF下的PSM模式
PCF是基于调度的接入方式,节点的接入顺序是通过AP的轮询完成的。
假设STA1的Listen Interval=1,STA2的Listen Interval=1
假设DTIM period为4,并且第一个beacon,即1st beacon中携带的就是DTIM。