TWT:一个让WiFi6更省电的特性

更多精彩内容在公众号。

再wifi6前,已经有了不少节能特性:PSM,PSMP,APSD。在一个 Beacon 周期内,终端 会观察 AP 是否会向其发送数据,如果是,那么终端就保持等待,直到接收完成后, 才会进入休眠模式。这其实对业务量很低的终端相当不公平,例如智能电表这种,可能很久才需要跟 AP 通信一次,大部分时间都要等待,这就造成了终端电量不必要的 消耗。

图片

Wi-Fi 6引入了TWT(Target Wake Time,目标唤醒时间)特性,旨在提高网络效率并降低设备的功耗,特别是对于IoT(物联网)设备和移动设备。以下是TWT特性的一些关键点:

  1. 节能:TWT允许设备与接入点(AP)协商一个特定的唤醒时间,以便在预定的时间进行数据传输。在非唤醒期间,设备可以关闭其Wi-Fi功能,从而节省电池电量。

  2. 减少干扰:通过减少设备唤醒的时间,TWT有助于减少网络中的干扰,因为设备不会在不需要的时候占用信道。

  3. 提高网络效率:TWT使得网络能够更有效地管理设备的通信时间,从而提高整体网络的吞吐量和效率。

  4. 适用于IoT:TWT特别适合于IoT设备,这些设备通常需要长时间运行在电池供电下,且数据传输需求较低。例如,智能电表和传感器等设备可以从TWT中受益。

  5. 单播和广播TWT:TWT分为单播TWT和广播TWT。单播TWT用于点对点通信,而广播TWT用于一对多的通信场景。

  6. 降低功耗:据报道,TWT最多可以降低三分之一的Wi-Fi功耗,这对于延长移动设备的电池寿命至关重要。

  7. 与Beacon帧的关系:在TWT协议下,设备不需要定期接收Beacon帧,而是在更长的周期内唤醒。这减少了网络的信令开销,提高了网络的稳定性。

图片

在TWT中,终端和AP之间建立了一张时间表(该时间表是终端和AP协定的),时间表是由TWT时间周期所组成的。通常终端和AP所协商的TWT时间周期包含一个或者多个beacon周期(总体时间比如几分钟,几小时,甚至高达几天)。

当终端和AP所协商的时间周期到达后,终端会醒来,并等待AP发送的触发帧,并进行一次数据交换。当本次传输完成后,返回睡眠状态。每一个终端和AP都会进行独立的协商,每一个终端都具有单独的TWT时间周期。

AP也可以将终端们根据设定的TWT时间周期进行分组,一次和多个终端进行连接,从而提高节能效率。

TWT一共有两种种工作模式,分别是:

1)Individual TWT,

2)Broadcast TWT,

图片

individual TWT

该模式下终端会和AP协商特定的TWT时间,该时间会被存放在AP的时间表中。终端会在特定的时间醒来并和AP进行帧交换。每一个终端仅仅知道自己和AP协商的TWT时间,不需要知道其他终端的TWT时间。

其大致工作流程如下:

终端想要建立一个TWT连接,其会将自己的节能调度信息告知给AP

AP将会分配TWT周期,并将该周期反馈给终端

终端会在指定的TWT周期时苏醒,并和AP进行数据帧交换

在本轮交换中,会分成显式和隐式两种工作模式

显式工作模式

在本次数据帧交换中,AP会显式告诉终端下一轮的TWT周期

终端会在新的指定的TWT周期时苏醒,并再一次和AP进行数据帧交换

隐式工作模式

在本次数据帧交换中,AP不会告诉终端下一轮的TWT周期

终端会自己计算出下一轮的TWT周期(通过在当前TWT周期上增加一个特定的时间)

终端会在自己计算的TWT周期时苏醒,并再一次和AP进行数据帧交换。

图片

终端会在苏醒的时候,首先和AP发起一个TWT建立请求,终端和AP协商一个TWT时间(即图中Negotiate a schedule),当协商完成后,终端就进入睡眠状态。

在该图上,AP发送Beacon时,也会包含了公开的TWT信息,在Individual TWT工作模式下,Beacon中的该信息终端是不需要的。终端一直保持睡眠状态,直到TWT时间到达。

终端苏醒,并接收AP的触发帧,即TWT Trigger。当终端接收到该触发后,其会和AP进行数据帧交互。与此同时,AP会告知终端下一次的TWT时间(在显式TWT中,睡眠间隔的逐次设定的),终端会在新的TWT时间上,定时苏醒,并执行数据帧交换。

TWT的一次苏醒间隔有可能是小于一个beacon周期,也有可能是大于一个beacon周期的,相比于传统的PSM,APSD之类的节能方式,更加具有一般性。

终端和AP可以关于TWT时间周期进行协商,终端可以要求取消TWT参数,或者向AP请求特定的TWT时间。如果AP同意终端的请求,其会反馈“Accept TWT”。还有多种协商的具体参数,可以参考协议中10.47.1

TWT command分以下几种:

Request TWT: requesting TWT STA 不会提供TWT parameter用于协商,而是让responding STA提供parameter

Suggest TWT: requesting TWT STA会提供TWT parameter, 但是仍有可能选择responding STA提供的paramter参数,而且如果responding STA返回Demand TWT, 那么requesting TWT只能采用responding STA携带的参数

Demand TWT: 表示requesting STA只能接收当前指示的twt参数

Accept TWT: responding STA发送,表示responding STA已经初始化了给定的参数

Alternate TWT: 表示双方可以对参数进行协商

Dictate TWT: 表示没有TWT协商创建,但只有当requesting STA发送一个新的twt setup request并带有TWT参数的时候,就采用该参数

Reject TWT: 表示拒绝TWT协商参数需要另外建立协商

TWT 命令交互参考Table10-31a

图片

发送Request TWT, Suggest TWT, Demand TWT.  没有任何回应。则无法建立TWT协商

图片

发送Demand TWT, 回复Accept TWT, TWT协商完成,而且只能用Demand TWT中的参数

图片

发送Suggest TWT或者Request TWT, 回复Accept TWT, TWT协商完成并且使用回复帧中的参数

图片

发送Demand TWT或者Suggest TWT, 回复Alternate TWT. 不建立TWT协商,requesting STA会发送一个新的请求携带TWT参数。Responder有可能采用此参数

图片

发送Demand TWT或者Suggest TWT, 回复Dictate TWT. 表示responder不希望采用requesting STA发送的TWT 参数。RequestingSTA创建一个新的请求。并且只有在收到Accept TWT后才会使用Dictate的参数

图片

发送Demand TWT或者Suggest TWT或者Request TWT,回复Reject TWT, 表示TWT协商失败

Broadcast TWT

广播TWT是由AP(接入点)负责管理的一种工作机制,其中TWT时间周期由AP宣告。终端需要向AP申请加入组才能执行广播TWT,并通过交换管理帧来完成加入组的交互动作。

一旦终端成功加入组,它将根据最近收到的TWT时间周期进行工作。这类终端被称为“TWT Scheduled STA”(计划苏醒终端),而AP被称为“TWT Scheduling AP”(计划调度AP)。

在TWT时间周期到达后,终端苏醒并接收AP发送的广播触发帧。AP会检测哪些终端处于苏醒状态(即加入组的终端),然后向这些终端发送数据帧。需要注意的是,由于这是广播通信,只有AP向节点发送数据帧。

完成发送后,终端恢复到睡眠状态,直到下一次广播TWT时间周期到达。这个广播TWT的时间间隔通常被称为“TWT SP”(服务周期)。

综上所述,广播TWT是一种由AP管理的工作机制,通过在特定的时间周期内让终端苏醒并接收AP发送的广播数据帧,从而实现高效的广播通信。

图片

在Beacon帧中,AP宣告了TWT Broadcast时间周期(即TWT SP时间)。终端在接收到Beacon信息后苏醒,并根据TWT时间到达时刻提前苏醒。

一旦终端苏醒,它会接收AP发送的TWT触发帧和下行数据帧。在此过程中,AP也可能发送新的TWT Broadcast时间周期(即TWT SP时间)。终端接收完成后,进入睡眠状态,并在新的TWT SP时间到达时再次苏醒。

这个过程会循环进行,终端根据TWT SP时间周期性苏醒和接收数据,以实现高效的广播通信。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/482550.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【C语言】动态内存分配

1、为什么要有动态内存分配 不管是C还是C中都会大量的使用,使用C/C实现数据结构的时候,也会使用动态内存管理。 我们已经掌握的内存开辟方式有: int val 20; //在栈空间上开辟四个字节 char arr[10] { 0 }; //在栈空间…

Yocto学习笔记1-下载与首次编译

Yocto学习笔记1-下载与首次编译 1、基础环境介绍2、注意点3、安装依赖3.1 yocto常规系统构建所需依赖库(较全)3.2 龙芯适配时的最小依赖库(最小) 4、下载4.1 通过git克隆4.2 查看所有远程分支4.3 签出一个长期支持的稳定版本4.4 查…

leetcode 15.三数之和 JAVA 双指针法

题目 思路 双指针法 去重 为啥要去重呢?因为题目中说了要返回不重复的三元组。拿示例1来看,(-1,0,1)和(0,1,-1)虽然都等于0,但其实它们里面的数…

【python_往企业微信群中发送文件】

python_往企业微信群中发送文件 这个是用企业微信群机器人的功能,没有用到后台应用。群机器人 #-*- coding:utf-8-* import requests#类型:voice,file file_type"file" file_path"D:\desktop\不过.jpg" webhookkey"xxxx"#…

ShuffleNet模型详解

ShuffleNet论文地址:1707.01083.pdf (arxiv.org) ShuffleNetv2论文地址:1807.11164.pdf (arxiv.org) ShuffleNetv1 简介 ShuffleNet 是专门为计算能力非常有限的移动设备设计的。架构采用了逐点分组卷积和通道shuffle两种新的运算,在保持…

【异或】Leetcode 136. 只出现一次的数字

【异或】Leetcode 136. 只出现一次的数字 解法1 只需要全部异或一下,剩下的就是剩下的元素 ---------------🎈🎈题目链接 136. 只出现一次的数字🎈🎈------------------- 解法1 只需要全部异或一下,剩下的…

Fast-R-CNN论文笔记

目标检测之Fast R-CNN论文精讲,Fast RCNN_哔哩哔哩_bilibili 一 引言 1.1 R-CNN和SPPNet缺点 😀R-CNN Training is a multi-stage pipeline 多阶段检测器(两阶段和一阶段检测器) 1️⃣首先训练了一个cnn用来提取候选区域的特征…

深入浅出Reactor和Proactor模式

Reactor模式和Proactor模式是两种常见的设计模式,用于处理事件驱动的并发编程。它们在处理IO操作时有着不同的工作方式和特点。 对于到来的IO事件(或是其他的信号/定时事件),又有两种事件处理模式: Reactor模式&…

jupyter | 查询/列出available kernels

jupyter kernelspec list 添加kernel python -m ipykernel install --user --name 虚拟环境名 --display-name 在jupyter中显示的环境名称 移除kernel jupyter kernelspec remove 环境名

部标JT808车辆定位监控平台单服务器13.6万接入压力测试记录(附源码)

之前经常有人问平台能支持多少设备同时在线,由于事情多没时间做。最近刚好有机会做下压力测试。在不间断的连续压测三天,最终结果为13.6万TCP连接,30秒上报频率。 一、测试目的 测试平台同时接入设备数量与并发处理能力。 二、准备环境 一…

javaweb--JavaScript

一:简介 JavaScript 是一门跨平台、面向对象的脚本语言 ,用来控制网页行为的,它能使网页可交互 JavaScript 和 Java 是完全不同的语言,不论是概念还是设计,只是名字比较像而已,但是基础语法类似 JavaScri…

揭秘国产龙蜥OS操作系统:高效学习之路等你开启!

介绍:Anolis OS是一个完全开源、中立且开放的Linux发行版,专为多种计算场景设计,特别适合云端环境。 Anolis OS的推出旨在为广大开发者和运维人员提供一个稳定、高性能、安全、可靠且开源的操作系统服务。以下是Anolis OS的几个重要特点&…

mysql80-DBA数据库学习1

掌握能力 核心技能 核心技能 mysql部署 官网地址www.mysql.com 或者www.oracle.com https://dev.mysql.com/downloads/repo/yum/ Install the RPM you downloaded for your system, for example: yum install mysql80-community-release-{platform}-{version-number}.noarch…

window10系统~如何关闭电脑的防火墙?

电脑桌面左下角选择放大镜,搜索:防火墙2. 点击【防火墙和网络保护】 3. 把下面三个地方都关闭掉: 点击【域网络】,关闭如下按钮: 再返回到上层,如下的界面: 用上面相同的方法,依…

阿里云有免费服务器吗?有的,附送免费服务器申请流程

阿里云服务器免费试用申请链接入口:aliyunfuwuqi.com/go/free 阿里云个人用户和企业用户均可申请免费试用,最高可以免费使用3个月,阿里云服务器网分享阿里云服务器免费试用申请入口链接及云服务器配置: 阿里云免费服务器领取 阿里…

APP测试中ios和androis的区别,有哪些注意点

目录 一、运行机制不同 二、对app内存消耗处理方式不同 三、后台制度不同 四、最高权限指令不同 五、推送机制不同 六、抓取方式不同 七、灰度发版机制不同 八、审核机制不同 一、运行机制不同 IOS采用的是沙盒运行机制,安卓采用的是虚拟机运行机制。 1、…

[套路] 浏览器引入Vue.js场景-WangEditor富文本编辑器的使用 (永久免费)

系列文章目录 [套路] el-table 多选属性实现单选效果[套路] 基于服务内存实现的中文拼音混合查询[套路] Bypass滑块验证码 目录 系列文章目录前言一、实现1.1 场景1.2 Window对象简介1.3 引入WangEditor1.4 页面配置 前言 公司使用freemarker的老旧SpringBootWeb后台项目, 前…

RPG Maker MV 踩坑九 场景和窗口问题

RPG Maker MV 踩坑九 场景和窗口问题 启言场景窗口场景和窗口问题战斗场景 启言 在RPG Maker MV中使用的语言是JavaScript作为脚本语言,在HTML中的Canvas画布上进行绘制图像及交互行为。 在游戏中能够感知到的最大的容器是场景,往下就是各种用于菜单操作的窗口&…

通过nginx配置文件服务器(浏览器访问下载)

配置服务器端文件下载和展示(Nginx) nginx.conf文件中增加配置,然后浏览器里访问ip:port回车即可 server { listen port; server_name 服务端ip; # 指定文件下载目录的路径 location / { # 使用root指令来设置文件的根目录 # Nginx会在该目录下寻找相对于loca…

洛谷B3626 跳跃机器人

#先看题目 题目描述 地上有一排格子,共 n 个位置。机器猫站在第一个格子上,需要取第n 个格子里的东西。 机器猫当然不愿意自己跑过去,所以机器猫从口袋里掏出了一个机器人!这个机器人的行动遵循下面的规则: 初始时…