目录
TWT Information Frame Disabled
Nominal Minimum TWT Wake Duration
背景
在传统的节电模式下,即便是STA进入了Power Save,仍然需要定期唤醒监听Beacon帧以接收可能的数据包,这种唤醒和休眠的过程会消耗大量的电池能量。特别是进入到万物互联时代之后,一些IoT设备对功耗特别敏感,这些设备对数据的延迟要求不高,因此如何节省电量也需要进一步挖掘。
另一方面随着无线设备数量的增加,无线网络的拥塞问题也越来越严重。特别是在高密度环境下,如公共场所、商业建筑等,大量设备同时在线会导致网络性能下降。
802.11ah(HaLow,为IoT制定的一份协议,使用Sub1GHz频段)制定了TWT(Target Wake Time)这种新的节电方式来进一步节省设备的电量消耗。通过TWT,AP和STA可以协商特定的唤醒时间,这个时间周期比较灵活,可以很长也可以很短,这样可以减少设备的空闲监听时间,从而进一步延长电池寿命,尤其对于IoT设备更加友好。同时,通过更有效地管理网络资源,TWT也可以减少信道竞争,减少网络拥塞,提高网络性能。
802.11ax(WiFi6)对TWT进行了一些调整,本文主要内容是802.11ax中的TWT。
TWT和传统节电方式的对比
传统节电方式通常基于被动监听机制。在这种模式下,STA在没有数据发送而进入休眠状态之后,需要在固定Beacon间隔的特定时刻唤醒,检查TIM字段是否有数据等待传输。这种方式可能导致STA频繁唤醒,增加不必要的功耗。
TWT机制允许STA与AP之间进行主动协商来确定精确的唤醒时间,从而大幅度减少STA不必要的唤醒次数。AP可以按需安排STA的唤醒时间,只在确实有数据传输的时候唤醒STA。
传统节电受限于Beacon帧的周期和现有机制,灵活性较低。
TWT具有更强的灵活性和扩展性,可以适应更多样的应用场景,尤其对于大规模的IoT设备非常友好。
TWT能力
802.11协议的设备能力通常都在相关的字段中宣称或者告知对方,TWT也不例外,先来看看跟TWT相关的一些字段。
HE Capabilities
dot11TWTOptionImplemented是一个IEEE 802.11ax标准中的参数,用于指示设备是否支持TWT功能。该参数是设备HE(High Efficiency)Capabilities信息元素的一个子字段。 当设备支持TWT时,应将dot11TWTOptionImplemented参数设置为true。如果设备不支持TWT,则应将该参数设置为false。
如果HE STA的dot11TWTOptionImplemented设置为true,则应按以下方式设置:
- 在其所发送的HE Capabilities元素中,若支持作为TWT请求STA角色,则设置TWT Requester Support子字段为1;否则设为0。
- 若支持作为TWT响应STA角色,则在所发送的HE Capabilities元素中设置TWT Responder Support子字段为1;否则设为0。
- 若支持作为TWT调度STA角色或TWT调度AP角色,则在所发送的HE Capabilities元素中设置Broadcast TWT Support子字段为1;否则设为0。
HE AP应在Extended Capabilities元素和HE Capabilities元素中将TWT Responder Support子字段设置为1。
HE Capability字段如下图:
其中HE MAC Capabilities Information字段如下图所示,B1是TWT Requester Support,B2是TWT Responder Support,B20是Broadcast TWT Support。
TWT字段
TWT有两种,分别是individual TWTs和broadcast TWTs,前者是STA和AP一对一的协商的TWT协议,而后者是STA和AP多对一协商的TWT协议。
设备几个角色:
- TWT Requesting STA:这是发起TWT请求的站点,它希望设置一个特定的唤醒时间,以便在预定的时间点唤醒以接收数据。通常是STA。
- TWT Responding STA:这是响应TWT请求的站点,它根据网络条件和设备能力来接受或拒绝TWT请求,或者提供一个替代的TWT值。通常是AP。
- TWT Scheduled STA:这是被安排在特定TWT下的站点。这个站点在被指定的TWT时间点唤醒以接收数据。通常是STA。
- TWT Scheduling STA:这是负责安排TWT的站点。它根据网络条件和设备能力来确定TWT值,并将这个值分配给特定的站点。通常是AP。
TWT STA通常不需要关注其它STA的TWT信息。当STA/AP为non-HE时,应当把TWT元素的Negotiation Type位置为0。
TWT的流程很多都跟字段相关,涉及的篇幅也比较大,分两次完成。
TWT Element
完整字段信息可以参考下图:
Control
NDP Paging Indicator
该字段为1表示有NDP Paging字段,反之为0
Responder PM Mode
该字段用于指示TWT响应设备(通常是AP)的电源管理模式。
- 如果"Responder PM Mode"子字段设置为1,那么表示TWT响应设备在TWT会话期间会进入电源管理模式。这意味着,响应设备会在TWT会话期间尽可能地降低功耗,例如通过关闭无线电接收器或降低处理器的运行频率。
- 如果"Responder PM Mode"子字段设置为0,那么表示TWT响应设备在TWT会话期间不会进入电源管理模式。这意味着,响应设备会在TWT会话期间保持常规的功耗和性能。
仅当所有与其关联的非AP STA都支持TWT并且AP在发送的HE Operation元素中设置了TWT Required子字段为1时,该AP才能将Responder PM Mode子字段设为1;否则,应将其设为0。
Negotiation Type
该字段用于指示TWT元素中包含的信息是用于Broadcast TWT、Individual TWT的参数协商,还是Wake TBTT(Target Beacon Transmission Time)间隔的协商。
Negotiation Type子字段的最高有效位(MSB)是Broadcast字段。如果Broadcast字段设置为1,那么表示TWT元素中包含的信息是用于Broadcast TWT的参数协商。如果Broadcast字段设置为0,那么表示TWT元素中包含的信息是用于Individual TWT或Wake TBTT间隔的参数协商。
TWT Information Frame Disabled
用于指示STA是否禁用了接收TWT信息帧。如果TWT Information Frame Disabled子字段设置为1,那么表示STA禁用了接收TWT信息帧。在这种情况下,STA不会接收任何包含TWT信息的帧,也就不会调整自己的睡眠和唤醒时间。
Wake Duration Unit
该子字段用于指示Nominal Minimum TWT Wake Duration字段的单位。如果Wake Duration Unit子字段设置为0,则表示Nominal Minimum TWT Wake Duration字段的单位是256us;如果设置为1,则表示单位为TU。
Individual TWT Parameter Set
Request Type
TWT Request
TWT Request,当STA希望与AP建立或修改TWT协议时,会在发送的数据帧中包含TWT元素,并设置TWT Request子字段为1。
TWT Setup Command
指示TWT命令的类型。
Trigger
Trigger字段用于指示TWT SP是否包含触发帧。触发帧是一种特殊的帧,用于触发STA进行某些操作,比如唤醒或发送数据。
- 当Trigger字段设置为1时,表示在TWT SP期间至少会发送一个触发帧。这意味着,当TWT STA接收到这样的TWT元素时,它会知道在TWT SP期间需要等待并处理触发帧。
- 当Trigger字段设置为0时,表示在TWT SP期间不会发送触发帧。在这种情况下,TWT请求站在TWT SP期间可能不需要进行特别的操作。
通过使用Trigger字段,设备可以更灵活地控制TWT SP的行为,从而进一步优化电源管理和网络性能。
Implicit
当Implicit子字段被设置为1时,表明请求的是隐式TWT(Implicit TWT)。当Implicit子字段被设置为0时,则表示请求的是显式TWT(Explicit TWT)。
- 隐式TWT(Implicit TWT):依据事先约定的一个固定规则自行计算下一唤醒时刻,无需在每个唤醒周期前都从AP(接入点)接收新的唤醒时间信息。这种方式减少了STA与AP之间的通信开销,适用于数据传输较为规律或有预知性的场景。
- 显式TWT(Explicit TWT):STA每次需要唤醒时都会从AP处获取具体的唤醒时间和接下来的通信安排,这种方式更为灵活,适用于数据传输需求变化较大或不可预测的场景。
Flow Type
- Flow Type子字段设置为0时,表示这是一个Announced TWT。在这种情况下,STA会在AP向其发送非触发帧之前,先发送PS-Poll帧或APSD触发帧以此告知其已唤醒的状态。遵循Announced TWT协议建立的TWT服务周期(TWT SP)称为Announced TWT SP。
- 当Flow Type子字段设置为1时,表示这是一个Unannounced TWT。在这种情况下,AP将在不需要等待来自STA的PS-Poll帧或APSD触发帧的情况下,在TWT时刻直接向该STA发送帧。遵循Unannounced TWT协议建立的TWT服务周期称为Unannounced TWT SP。
TWT Flow Identifier
该字段用于唯一识别同一对TWT请求STA和TWT响应STA(AP)之间发出的多个TWT请求的具体信息。这个子字段的作用在于区分同一对STA和AP之间可能存在的多个TWT服务周期(TWT Service Periods),使得每一个TWT服务周期都能通过唯一的标识符来进行管理和跟踪。这样一来,即使一个STA与同一个AP之间存在多个TWT协议,也能准确无误地对每个协议进行独立的唤醒时间安排和服务周期控制。TWT响应设备可以选择一个不同与TWT请求设备的TWT Flow Identifier。
TWT Flow Identifier字段只有三位,因此任意两个设备之间的TWT协议不超过8个。
TWT Wake Interval Exponent
唤醒间隔的指数部分
TWT Protection
用于确保在TWT服务周期内,低功耗设备能够按时唤醒并高效完成数据传输,同时防止其他设备在此期间占用共享的无线通信资源,从而达到节能和优化网络性能的目的。
将TWT Protection子字段设置为1时,对于HE BSS环境下的TWT SPs,需要启用NVA保护,在TWT SP期间阻止其他STA在该时段内占用介质,从而保护TWT服务周期的完整性。
Target Wake Time
Target Wake Time字段在Broadcast字段为0时为8字节;否则,它为2字节,其中2字节的最低位对应于相关TSF值的位10。
当AP的dot11TWTGroupingSupport等于0时,AP向TWT请求的STA发送一个TWT元素时,TWT元素在Target Wake Time字段中包含一个值,对应于AP请求TWT请求的STA在相应的TWT SP唤醒的TSF时间,此时不包含TWT Group Assignment字段。
TWT Group Assignment
该在设备支持TWT分组功能(即dot11TWTGroupingSupport等于1)的情况下存在。这个字段包含了关于设备在TWT分组中的位置和分配的TWT值的信息。
TWT Group Assignment字段主要包含以下几个子字段:
- TWT Group ID:这是一个唯一标识TWT组的标识符。
- Zero Offset Present:是否存在零偏移。
- Zero Offset of Group(可选):这是一个表示组中第一个设备唤醒时间的偏移量。
- TWT Unit:这是一个表示TWT值的单位的字段。
- TWT Offset:这是一个表示设备在组中的唤醒时间偏移量的字段。
这个字段使设备能够知道自己在TWT组中的位置以及其被分配的TWT值,从而可以在预定的时间点唤醒以接收数据。这有助于进一步优化设备的电源管理和网络性能。
Nominal Minimum TWT Wake Duration
该字段表示TWT请求STA或已安排TWT的STA为了在某个TWT唤醒间隔期内完成所有帧交换而必须保持清醒的最短时间。这里的唤醒时间单位由Wake Duration Unit子字段所指示。
TWT Wake Interval Mantissa
该子字段被设置为以微秒为单位的TWT唤醒间隔值的尾数的值,基数为2。
TWT Channel
TWT Channel字段包含一个位图,该位图提供了STA在TWT SP期间的临时信道。位图中的每一位对应于一个最小宽度信道,最低有效位对应于BSS操作信道的最低编号。在HE BSS中,最小信道带宽等于20 MHz。
相互关系
本节先到这里,下节继续,如有问题请在评论区交流!