Wi-Fi技术——Power SAVE模式
Power SAVE模式是802.11中的一个十分重要的功能,允许Wi-Fi设备(如手机、笔记本电脑、物联网传感器等)在保持与无线网络连接的同时,极大地降低功耗,从而显著延长电池续航时间。
- 在RF系统中,放大器是最耗电的元件,由它负责将发送出的信号放大以及将所收到的信号放大到可处理的水平
- 为了维持更长的电池使用时间,STA可以关闭无线电波收发器,并定期进入休眠状态以节省电量,即用“睡眠”换“节能”
- 在STA休眠期间,设备不会持续地监听来自接入点(AP)的数据,AP为每个处于休眠期的STA暂存数据;等STA结束休眠后,AP将缓存的数据包发送给STA
Power SAVE模式分为两种,分别为:
- 传统节能模式(Legacy Power Save)
- 自动节能交付模式(APSD - Automatic Power Save Delivery)
传统节能模式(Legacy Power Save)
这是最基础的模式,适用于所有Wi-Fi设备。
基本原理
其工作原理如下:
- STA首先会向AP发送一个特殊的帧(一个设置了节能比特位的帧或一个空数据帧),告诉AP:“我即将进入睡眠模式,请帮我缓存发往我的数据。”
- 随后STA关闭其无线电接收器,进入低功耗休眠状态。AP收到这个帧后就不发数据帧给处于省电模式下的STA了
- STA休眠时,若有发送给它的包,由AP进行缓存,并通过TIM(Traffic indication Map)来指示AP缓存了哪个STA的数据包,并将TIM通过Beacon帧进行广播
- STA会定期醒来(例如,每监听100个信标间隔一次),并监听一个信标帧。它会检查TIM列表里是否有自己的关联标识符(AID)
- STA醒来的间隔时间为listen interval,定义为多少次TBTT(beacon间隔)
- 若TIM显示没有它的缓存数据,STA就立刻再次进入睡眠状态
- 若TIM显示有它的缓存数据,则STA会向AP发送一个PS-Poll帧,请求发送其缓存的数据包,每一个PS-Poll帧都可以让AP发送一个缓存的数据包
- 若AP发送该数据包后还缓存有更多的数据包,则在Frame Control Flags中的More Data为置1,表示还有更多的数据;若发送的该数据包为最后一个,则置0表示没有更多的数据包
- STA接收到数据包后回复ACK确认,并根据More Data来决定是否继续发送PS-Poll帧来请求被缓存的数据包
- 接收完数据包后,STA重新发送特殊帧来告诉AP它即将进入休眠
关键问题
- AP如何广播自己的缓存区信息?
- 通过AID、TIM和Bitmap机制
- AP什么时候广播对应的STA的缓存区信息
- 对于单播或单个STA,每隔一个listen interval(监听间隔)发送一个beacon帧
- 对于组播或广播,通过DTIM来进行广播
AID:Association ID,关联标识符
- 一个16位的数字(范围通常为1-2007),由接入点(AP)在终端设备(工作站,STA)成功关联时分配给它的唯一临时身份标识
- AP维护着一个连接设备列表,将每个设备的MAC地址与其AID对应起来
- 在节能模式下,AP使用AID来代表设备,极大地节省了信标帧的空间和传输时间
Bitmap:位图
- 一个很长的二进制比特序列(0和1的字符串),其中每一个比特的位置(第N位)对应一个特定的AID
- 比特的值表示状态
- 1:AP为对应AID的设备缓存了数据
- 0:AP没有为对应AID的设备缓存数据
- 设备醒来监听信标帧时,会找到TIM中的这个Bitmap,然后去查看属于自己的那个比特位(即自己AID对应的那个位置)。如果是1,它就知道自己有数据包缓存在AP那里,需要去取。
- 有两种Bitmap
- 传统bitmap:每次都会把整个Bitmap进行发送。
- 问题:每次发送都会有很多的0,带来大量的数据冗余
- 优化Bitmap:增加Bitmap Control和Partial Virtual Bitmap结构,最大限度地减少信标帧的大小,节省无线信道资源
- Bitmap Control:大小为1字节8bit。X0到X7位:X0位为指示是否有广播或组播数据缓存;X1-X7位则指示Partial Virtual Bitmap中第一位的AID相对于0的偏移量,从1到7分别为:*2,*4,*8,*16,*32,*64,*128
- Partial Virtual Bitmap:长度可变,最大为251字节。记录自偏移量开始往后的AID的缓存信息;若从某位开始全是0,也可以不带上
- 计算方式:如起始AID=88,则82+88=80<88,再加就大于了。因此此时Bitmap Control应为:0101 0000;88-80=8,Partial Virtual Bitmap为:0000 0000 1000 0000 ……
- 传统bitmap:每次都会把整个Bitmap进行发送。
TIM:Traffic Indication Map流量指示图
- 包含在AP定期广播的信标帧中的一个信息元素。它的核心组成部分就是 Bitmap。
- TIM是AP与所有处于节能模式的设备进行通信的“布告栏”。它的唯一目的就是:高效地通知所有设备,AP是否为它们缓存了单播数据。
- 设备不需要主动询问,只需醒来查看TIM,就知道自己是否需要保持清醒进行后续操作(如向AP申请接收数据)
DTIM:Delivery Traffic Indication Map,业务指示映射交付
- 一种特殊类型的TIM,除了指示缓存的单播信息,同时还指示AP缓存的组播/广播包。
- AP不会每个信标帧都广播一次DTIM,而是每间隔N个信标帧(这个N被称为DTIM周期,通常可配置为1, 2, 3…等)广播一次
- DTIM count:DTIM计数,当DTIM count为0时,代表这个TIM是一个DTIM,此时若AID0=1,则说明AP缓存这组播/广播包
- DTIM period:DTIM间隔时间,表示几个TIM中就有一个DTIM。如果设为1,则每一个TIM都是DTIM
- 所有处于节能模式的设备,无论TIM中的Bitmap显示有没有自己的单播数据,都必须醒来监听这个包含DTIM的信标帧
- AP在发送完DTIM信标帧后,会立即跟着发送所有缓存的广播和组播数据
不足之处
Legacy Power Save的不足之处在于
- 一个PS-Poll帧请求,只能对应一个数据帧反馈,在数据缓存较多的情况下,会造成过多的PS-Poll帧出现,减低实际网络传输效率
- 没有优先级的区分,对于Qos场景,低延时业务会有比较大的延迟开销
Legacy Power Save的主要不足在于其僵化的、周期性的监听机制,导致了高延迟、低效率和高开销。 它是一种“尽力而为”的节能方案,虽然能够节省电量,但代价是性能和延迟的牺牲。
自动节能交付模式(APSD - Automatic Power Save Delivery)
这是更先进的节能模式,分为两种
- U-APSD(Unscheduled Automatic Power Save Delivery,非计划APSD)
- 也称为WMM Power Save(由Wi-Fi联盟认证),常用于手机等设备
- S-APSD(Scheduler - Automatic Power Save Delivery,计划APSD)
- 不太常用,为设备预定义了严格的唤醒时间表
协商过程
- AP在beacon中广播自己是否支持APSD
- 客户端在连接AP过程中,通过Association Request 消息中携带WME QOS Info指示自己希望在哪种接入等级的数据流上启用APSD的省电模式
下面对U-APSD进行介绍。
U-APSD
APSD是基于802.11e新增的PS机制,这里面包含了带有QoS属性的PS机制,解决了一次仅获取一个数据帧和针对不同优先级的数据有不同的缓存、转发规则的问题。
宣称方式
- 同样基于beacon、probe request/response和association request/response
工作原理
设备将上行链路(发送数据)和下行链路(接收数据)绑定在一起。当设备有数据要发送时(例如,唤醒并发送一个网络请求),这个上行数据帧就相当于一个“触发器”。AP在收到这个帧后,会立即将为此设备缓存的所有下行数据一并发送。
- 客户端发送一个数据帧,其中 Power Management subfield in the Frame Control field set to 1,用来告诉AP自己进入省电模式,AP开始为其缓存数据包
- 当客户端醒来时候,会发送一个之前协商好的接入等级的数据包来触发AP开始递交缓存的数据包;这个触发数据包trigger frame可以是QOS-Null或者QOS-Data frame,但是所属的接入等级一定要正确
- AP在接收到trigger frame后,开始Service Period (SP) 服务周期,递交数据包,但是一个服务周期能够最大递交的数据包个数取决于Max SP Length的大小;
- Max SP Length由客户端自己指定,用来指示客户端在SP(服务周期SP)期间准备接收的最大BU数目
- 数据包里 EOSP(MAC帧头的QOS control IE) 被设置为1,代表SP结束;如果EOSP=1,但是more data 不等于0,说明缓存数据还未递交完成,客户端通过竞争信道可以再次发送trigger frame,触发下个服务周期,继续接收数据
核心功能
- 按需触发:STA醒来后可以直接向AP发送特定的帧来申请发送缓存数据包,而无需等待beacon帧、再根据TIM来发送申请
- 任何来自STA的、具有足够优先级的上行数据帧都可以作为触发帧
- 本质上是一个数据帧,更准确地说是QoS数据帧(或QoS NULL Data帧)
- 本身就携带着来自STA上层应用的数据,如一个TCP ACK包、一个SIP信令消息等
- 同时实现了数据传输和触发信号的作用,效率更高
- 如何区分一个帧是否为触发帧
- 由访问类别(AC) 决定,这是在关联过程中协商好的
- 触发使能(Trigger-enabled):某个AC(如AC_VO和AC_VI)被配置为:从该AC发出的上行数据帧有权触发一个服务周期(SP)。
- 交付使能(Delivery-enabled):某个AC(如AC_VO和AC_VI)被配置为:属于这个AC的下行缓存数据可以被自动交付,而无需STA单独请求。
- 一般如语音(AC_VO)和视频(AC_VI)既是触发使能,也是交付使能;而尽力而为(AC_BE)和背景(AC_BK)为非触发使能和非交付使能
- 由访问类别(AC) 决定,这是在关联过程中协商好的
- 任何来自STA的、具有足够优先级的上行数据帧都可以作为触发帧
- 可以根据上层应用的数据分类来实现智能的缓存和转发策略,引入了 访问类别(Access Category, AC) 的概念
- Wi-Fi联盟的WMM(Wi-Fi Multimedia) 规范基于IEEE 802.11e,将数据流量分为4个AC
- AC_VO (Voice):优先级最高,对延迟和抖动极其敏感,数据包小,常见应用如视频通话、实时游戏等
- AC_VI (Video):优先级高,对延迟敏感,需要高吞吐量,常见应用如视频流等
- AC_BE (Best Effort):优先级中等,为普通数据流量,属于默认级别,常见应用如网页浏览、电子邮件等
- AC_BK (Background):优先级最低,对延迟不敏感的后台任务,常见应用如文件下载、系统更新等
- 在AP和设备的网卡中,都有四个独立的发送队列分别对应这4个AC,数据包根据其QoS标记(如DSCP值)被分类到不同的队列中
- Wi-Fi联盟的WMM(Wi-Fi Multimedia) 规范基于IEEE 802.11e,将数据流量分为4个AC
- 服务周期:U-APSD的操作围绕服务周期(Service Period, SP) 展开。
- 一个SP是从设备发送一个触发帧开始,到AP回复完所有允许发送的缓存数据结束的一段时期。
- 其工作流程的核心在于每一条数据流(TS) 都可以被单独配置其节能和触发策略。
- 每个AC队列都预配置了U-APSD策略,决定了两件事
- 该AC的上行数据是否有权限触发一个服务周期(Trigger-enabled)
- 该AC的下行数据是否享受“自动交付”特权(Delivery-enabled)
- AC类型的策略配置,带来了巨大的灵活性
- 对延迟敏感的数据(AC_VO/AC_VI):通常被设置为触发和自动交付。
- 设备一旦有语音或视频数据要发送,其上行帧就会触发一个SP。
- AP不仅会回复这个上行帧,还会自动地、立即地将其缓存中所有属于AC_VO和AC_VI的下行数据一并发送,无需设备再额外请求。
- 对延迟不敏感的数据(AC_BE/BK):通常被设置为非触发和非自动交付。
- 发送这些数据不会触发SP。
- 这些下行数据会被AP缓存,并像传统节能模式一样,通过TIM和DTIM在信标帧中通知设备,设备再通过PS-Poll来索取。
- 对延迟敏感的数据(AC_VO/AC_VI):通常被设置为触发和自动交付。
更现代的节能技术
随着标准演进,出现了更高效的节能机制:
TWT(目标唤醒时间):这是Wi-Fi 6(802.11ax) 中一项革命性的节能功能。
- 工作原理:AP和设备可以协商一个精确的唤醒时间表。例如,AP可以告诉一个物联网传感器:“每整点醒来一次,收发数据,其他时间都可以睡觉。”每个设备都有自己的专属唤醒时间,避免了竞争和不必要的监听。
- 优点:
- 极大延长电池寿命(可达数年)。
- 减少信道竞争,提升网络效率。
- 允许设备睡眠更长时间,深度节能。
参考
- WIFI Power Save 省电机制介绍 (PS-POLL APSD)
- 802.11 Power Save(节电/省电/节能)机制总结