WIFI省电模式

目的

节电模式(Power Save mode)是802.11终端的一个可选模式,当一个客户端设置为节电模式时,它会将某些收发器组件关闭以节省电力。无线终端会通过将电源管理位的值设置为1表示正在使用节电模式。此时AP会缓存客户端所有的802.11帧。无线终端在BSS和IBSS下节点模式不同,在这里只讨论BSS下的情况。

节电过程

假如一个无线终端要加入某基本服务集(BSS),会向AP通告其电源管理字段为1,表明该客户端处于节电模式。此时如果AP接收到要前往该客户端的数据时,会将其存储在AP缓冲区。客户端与AP关联时,会被分配关联标识符(AID)。AP使用AID来跟踪终端和BSS成员。AP在传输下一个Beacon时,会将该终端的AID标注在流量指示图(TIM)中。TIM字段列出了所有有缓存数据的无线终端列表。

Beacon帧会按预定的时间间隔发送,这个时间被称为目标信标传输时间(TBTT)。因为BSS下每一个STA都知道AP的Beacon何时会被发出,所以STA知道在什么时间点保持清醒以接收Beacon。当接受到Beacon后会检查自己AID是否在TIM中,如果在则说明有缓存的单播帧等待传输,这种情况下该STA将会保持清醒,并向AP发送节电轮询帧(PS-Poll)。当AP接收到PS-Poll后,将发送缓存的单播帧发送给STA。单播帧的More Data字段为1时说明还有缓存数据没有发完,STA需要继续保持清醒来接收数据。当More Data为0时表示AP以发送完所有的缓存数据,这时STA可以重新进入休眠。

名词解释

Beacon:Beacon一般都是采用最低速率发送,其包含两个原因

  1. beacon帧是一个广播帧,其没有ACK反馈,所以无法设置重传机制
  2. beacon帧目的是广播AP的基本信息,所以希望所有的节点都能够接收该数据,从而采用较低的速率以保证信号较差的节点也可以接收该信息。

Beacon Interval:它是发送两个Beacon的时间间隔,它的实际大小由AP控制,通常它会有以下影响

  • 太大的话会影响影响新到的STA加入的灵活度,会耗费AP的缓存区空间
  • 太小则可能使信道长期被Beacon打断,进而影响到整个网络的吞吐量,默认是0.1秒。

TBTT(Target Beacon Transmission Time):信标预定传送时间。实际上这个是一个定时后的发送/接受beacon动作的周期,其周期的时间就是由Beacon Interval所决定的。当TBTT时间到达的时候,AP会主动发送beacon帧,而节点也都会主动接受该beacon帧(包括休眠模式的节点,也会苏醒过来接受该beacon),然后利用beacon进行时间同步,并且查看TIM字段,若没有自己的数据缓存,那么节点继续转为休眠模式,直到下一个TBTT时间到来。Beacon帧是按照TBTT时间进行周期性发送的,但是节点不一定每一个beacon都需要监听的,为了更有效的设计节能模式,节点应该是每间隔几个TBTT周期,再监听一次beacon帧,从而就可以延长自己的休眠时间。

Listen Interval:监听间隔是指工作站两次苏醒之间,历经多少次TBTT,也就是跳过了多少个Beacon帧。较长的监听间隔,节点休眠的时间就越长,从而越节能,但是会耗费AP的缓存区空间,也增加了接入时延。

TIM:每一个Beacon的帧中都有一个TIM 信息元素 ,它主要用来由AP通告它管辖下的哪个STA有信息现在缓存在AP中,而在TIM中包含一个 Bitmap control 字段,它最大是251个字节,每一位映射一个STA,当为1时表示该位对应的STA有信息在AP中。总之,收到与自己关联的TIM就要发送PS-POLL帧来与AP取来联系并取得它的缓存帧了。

DTIM:这个是TIM的特殊情况,当发送几个TIM之后,就要发送一个DTIM,其除了缓存单播信息,也同时指示AP缓存的组播广播信息,一旦AP发送了DTIM, STA就必须处于清醒,因为广播或组播无重发机制,不醒来数据就收不到了。

### Android WiFi 节能模式设置与优化 #### 配置 MIUI 系统中的 WiFi 设置以实现节能效果 为了减少不必要的电力消耗,在 MIUI 中可以通过调整 WLAN 设置来达到更好的节电目的。具体操作是在设置菜单下的 WLAN 选项里找到当前已连接的 Wi-Fi 并点击其后的箭头图标,随后进入高级设置页面关闭“随时都可以扫描”的功能,并把“在休眠状态下保持 WLAN 网络连接”设为仅限于充电状态时开启[^1]。 #### 使用低延迟模式降低功耗 针对某些特定场景下可能出现的高延迟问题,可以启用 WLAN 的低延迟模式。这有助于改善网络响应速度的同时也可能间接影响到整体能耗表现。通过调用 `wifi_set_latency_mode` 函数并传入相应的参数值给 `wifi_interface_handle handle` 来激活此特性[^2]。 #### 测试应用程序行为确保兼容性 考虑到不同版本的操作系统以及第三方软件可能带来的额外负担,建议开发者们特别关注自己开发的应用程序在低电耗模式和应用待机模式下的运行状况。因为这些特殊的工作方式可能会改变系统的资源分配策略从而影响到实际使用的效率和稳定性[^3]。 ```java // 启动低延迟模式的例子(伪代码) public void enableLowLatencyMode(WifiManager wifiManager){ Method[] methods = wifiManager.getClass().getDeclaredMethods(); for(Method method : methods){ if(method.getName().equals("setWifiAggressiveStandby")){ try { method.invoke(wifiManager, false); } catch (Exception e) { Log.e("Error", "Failed to set low latency mode"); } } } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值