序言
我们在上一篇文章叙述了上行OFDMA接入机制。该机制的基本思想就是通过AP竞争,获得TXOP传输时间后,根据各个终端的缓存情况,进行RU资源的分配,当分配完成后,进行上行OFDMA的传输。在这个过程中,缓存情况的反馈可以通过AP询问的方式主动完成(即AP发送BSRP帧向终端请求),也可以进行非主动的反馈,本文就针对于非主动反馈缓存信息BSR(Buffer Status Reports)做一个介绍。本文参考自:Unsolicited Buffer Status Reports in 802.11ax and Wi-Fi 6。
非主动的BSR反馈
在802.11ax中,UL-OFDMA一共有三次帧交换过程,一共包含了3个触发帧
- Trigger #1:BSRP帧,用于请求终端的缓存情况
- Trigger #2:MU-RTS帧,用于兼容保护传统的802.11终端,以及分配RU资源
- Trigger #3:Basic-Trigger帧,用于触发节点进行并行的上行传输
在此叙述中,我们重点描述的是,AP采用显式的请求终端们的缓存情况(即BSRP,BSR过程)。在实际情况下,UL-OFDMA不一定具备完整的这个三个触发帧。比如,若网络中不存在传统的802.11终端,则不需要MU-RTS帧,或者为了减少开销,AP不用显式的发送BSRP帧,而是将其和其他的控制帧,数据帧或者管理帧结合进行发送。
终端是可以在未经BSRP请求的时候,直接反馈非主动的BSR帧给AP,即unsolicited buffer status report。终端可以在任意一个帧中利用以下字段发送这种非主动的BSR:
QoS控制字段(QoS Control field):802.11 ax终端可以在其发送的QoS数据帧或者QoS Null帧(也就是只有Header,payload部分为空)中,利用Queue Size字段(每一个QoS类型有一个单独该字段),来反馈缓存的状态信息。另外,终端还可以用聚合帧的形式,反馈多个QoS类别,其不同的缓存情况。不同的QoS类别利用TID进行区分(Traffic identifier,TID)。Queue Size字段用来指示具体的缓存信息。
BSR Control subfield
BSR控制字段(BSR Control subfield):如果是在一个802.11ax的网络中,AP支持BSR控制字段的话,那么终端还可以在发送的任意帧中添加BSR控制字段内,进行BSR信息的反馈。如上图所示,802.11ax会标识不同的QoS接入类别(Access Category,AC)通过ACI High字段,并且反馈具体的Buffer信息通过Queue Size High字段(图上粉色标识为反馈单个接入类型的BSR情况)。终端会决定哪个QoS队列相对于其他队列具备更高的优先级。这一种相对QoS设置的方法并没有在协议中严格规定,从而为不同类型的终端分配优先级提供灵活性。
一个802.11ax终端还可以报告多个QoS类别的缓存情况。这要通过上图中的ACI Bitmap,Delta TID和Queue Size All字段来反馈(图中蓝色标识为反馈多个接入类型的BSR情况)。ACI Bitmap和Delta TID标识多个QoS的接入类型,QoS Size All字段标识其对应的缓存情况。另外还有一个字段为Scaling Factor(SF),这个字段代表缩放因子,用以表示缓存的单位大小。即QoS Size High或者QoS Size All需要配合SF字段才表示真实的缓存情况。SF一共有两位,分别表示了4种缩放情况,如上图所示。这种缩放的表示方法也是为了不同终端其反馈对应流量时候,具有比较高的灵活性。
另外一点需要注意的是,在802.11协议中,协议支持同时在QoS控制字段(QoS Control field)和BSR控制字段(BSR Control subfield)中,同时反馈BSR信息,当然这也协议中是一种可选的选项,而且同时包含BSR信息时,其两个字段所包含的信息需要一致才行。
UORA上行随机接入机制(UL-OFDMA Random Access)
我们说传统的802.11的接入过程为一个竞争过程,其主要目的时决出唯一的胜利者,让其传输时避免冲突。在802.11ax中,由于上行接入采用OFDMA机制,即允许多用户并行传输。我们前面所介绍的802.11ax的接入机制中,都是由AP通过获取全局的缓存情况,然后为上行和下行传输统一分配RU资源。然而,如果缓存情况未知的情况下,协议如果需要工作的话,那么就需要引入随机接入机制,该随机接入机制就是UORA(UL-OFDMA Random Access)。本文将会对UORA做一个简单介绍。在本文之前,笔者也写过一篇《802.11ax前瞻3:上行随机接入(TF,TF-R)》,里面实际上已经提到过UORA机制了,本文会在之前基础上再进一步扩展。
本文参考自:
在802.11ax中,AP利用OFDMA技术,将信道分成多个RU,不同终端可以通过占据不同的RU,从而并行的执行多用户传输。AP可以在上行和下行传输中,站在全局的角度,进行RU资源的最优化分配。在分配过程中,AP可以通过显式请求的方式,或者被动收集的方式,获取节点的缓存情况(即BSR反馈)。AP会根据BSR信息,做全局资源的分配,当分配完成后,AP通过触发帧机制启动一次传输过程。
在802.11ax中还存在一种可选的随机接入机制(UORA),在该方法下,上行UL-OFDMA链路中RU资源的分配不是由AP决定的,而式通过随机接入机制UORA来竞争的。这种接入机制不需要终端侧实时的反馈BSR信息,对于AP不知道终端缓存情况下是有利的。
在UORA中,会使用一种频域的back-off技术(即OFDMA back-off,OBO)。在OBO中,一开始终端会选择一个随机数,然后AP会发送一个竞争类型的触发帧,其中还包含了本轮可用的RU数量。终端会将自己的随机数减去本轮的RU数量,直到减为0。如果终端利用随机数相减之后,本轮值为0的话,那么相当于竞争成功,终端将会随机选择一个RU进行占据。如果本轮相减后,没有为0,那么相当于本轮竞争失败,那么会保持这个数值,下一轮进行继续相减。
具体还有一些细节如下
- 802.11ax AP发送一个触发帧,该触发帧是用于触发一次OBO随机接入的,并且包含了可以被分配的RU数目
- 该触发帧中的User Info字段中包含了AID字段(每一个RU都有一个AID指示),该AID字段表示该RU是否可用被用来进行随机接入
- 如果AID=0,表示该RU用于一个或者多个已关联的终端进行随机接入(如上图中,STA 1,2,4是已经关联的)
- 如果AID=2045,表示该RU可用于一个或者多个没有被关联的终端进行随机接入(如上图中,STA 3是没有被关联的)
- 终端在初始时刻选择的随机值的范围是通过AP指定的,AP会利用OFDMA contention window (OCW) 字段(在UORA Parameter Set Information字段内)进行范围指定
- 终端会在OCW范围内选择一个随机数,然后每次OBO随机接入开始的时候,进行一次相减
- 如果OBO计数器(OBO counter)的数值是小于本轮可用的RU的数值的话(其实这个和前面说的,OBO计数器的值减去可用的RU数目,如果小于等于0的话),那么本轮相当于竞争成功,然后会选择一个随机的RU进行占据(在其可用选择的RU范围内)
- 如果OBO计数器是大于本轮RU的数值的话,那么相减完之后,等待下一轮OBO的开始,直到递减为0
大致的OBO的执行流程我们已经解释完了,为了更清楚一些,我们下面举个具体的例子:
首先AP发送一个触发帧(如下图 Trigger 1),该触发帧中的OCW标识了随机数的选择范围,并且标识了可以用于随机接入的RU资源(即eligible RA-RUs,可用于Random Access的RU)。在图中,我们还需要关注到终端所对应的AID,STA 1对应的AID=1,STA 2对应AID=2,STA 4对应AID=3,AID仅仅是分配给已关联的节点的,由于STA3没有关联,所以其没有被分配的AID。在该Trigger 1帧中,标识了RU 1 ~ RU 3是可以用于已关联节点进行随机接入的(即允许STA 1,2,4竞争),RU 4 ~ RU 5是可以用于未关联的节点进行随机接入(即允许STA 3竞争),RU6是已经被分配给特定节点了(即分配给了AID=3,也就是STA 4)。
当收到Trigger 1之后,终端们在OCW范围内,各自选择一个随机数进行OFDMA Back-off(OBO),如图中,STA 1的OBO counter =3,STA 2的OBO counter =5,STA 3的OBO counter =4,STA 4的OBO counter =2。其中STA 1,2,4和AP已经关联的,STA3是和AP没有关联的。
由于STA 4在触发帧中已经被分配了资源(即RU 6),那么只剩STA 1和STA 2进行本轮的OBO,已经有资源的终端本轮就不需要进行OBO了,随机数保持不变。对于STA 1和STA 2而言,本轮可用竞争使用的RU数目为3个,其对应的STA 1的OBO counter = 3,STA 2的OBO counter = 5。在本轮相减后,STA 1的OBO counter = 3-3 = 0,STA 2的OBO counter = 5-3 = 2。对于STA 3而言,本轮可用的RU数目为2个(即RU 4和RU 5),所以本轮相减后,STA 3的OBO counter = 4-2 =2。
如上图所示,由于STA 1本轮相减后OBO counter = 0,其相当于竞争胜利,可用随机选择一个RU占据(图中即RU 2)。STA 2本轮相减后,OBO counter = 2,那么本轮竞争失败,其会保持该值,直到下一轮OBO中继续相减。STA 3本轮相减后,OBO counter = 2,那么本轮竞争也是失败的,需要进行下一轮的OBO竞争。STA 4由于一开始AP已经指定了其对应的RU(即RU 6),那么本轮其不用进行OBO,所以保持其OBO counter不变,即STA 4的OBO counter =2。然后已经竞争成功或者分配成功的终端,就在其选择的RU位置上,进行上行数据的传输,从而本轮OBO完成。
当上一轮传输完成后,AP发送了一个新的触发帧(即Trigger 2)开启一轮新的OBO。如上图所示,在该触发帧中,RU 1 ~ RU 2是用于给已关联的终端进行OBO(由于该RU的AID=0),RU 3 ~ RU 4是给未关联的终端进行OBO(由于该RU的AID=2045),RU5 ~ RU 6是被分配给了特定终端,即AID = 6(Remark:图中RU 6的AID应该为6,这里图示有误)。
当收到Trigger 2帧后,由于STA 1上一轮竞争成功,所以其需要在OCW范围内重新选择一个随机数,本轮STA 1的OBO counter = 4,其余STA 2,STA 3,STA 4都是保留上一轮OBO之后的OBO counter。
然后要执行本轮的OBO相减了。
我们首先关注已经关联的终端,即对于STA 1,STA 2和STA 4而言,本轮可用的RU数目(eligible RA-RUs)为2,所以相减完后,STA 1的OBO counter = 4-2 = 2,STA 2的OBO counter = 2-2 = 0,STA 4的OBO counter = 2-2 = 0。那么本轮竞争的胜利者为STA 2和STA 4,其分别随机选择了RU 1(STA 4)和RU 2(STA 2)占据,STA 1本轮没有竞争成功,所以不能进行传输。
对于未被关于的终端,即STA 3,本轮可用的RU数目为2,所以相减后,STA 3的OBO counter = 2-2 = 0,即本轮竞争成功。其选择了RU 4占据,并执行上行传输。
其余RU 5 ~ RU 6被分配给了特定节点,上图中就没有表示了。
当本轮分配好RU后,终端就会在自己对应的RU上进行上行数据的反馈。
Remark:在UORA的过程中,还是有可能会出现冲突的。即终端OBO counter=0之后,需要随机占据一个RU进行上行传输,若此时有两个或者两个以上节点占据了同一个RU,那么在这个一个RU上就会发生一次冲突。如果发生冲突,那么AP就无法成功收到该RU上对应的数据帧,从而不会反馈ACK。终端通过ACK来得知本轮是否传输成功,如果失败的话,那么他们会增大其OCW的大小至两倍(即double OCW范围,直到OCWmax值),这里和传统802.11的backoff中的BEB机制是类似的,用于减少冲突概率。802.11ax中的UORA实际上冲突概率还是小于传统802.11的,主要是因为其是多资源中,任意选择一个RU,这种冲突概率还是小于原来单信道模式下,所有节点进行竞争的。
TWT节能机制简介(Target Wake Time)
我们以前介绍过关于802.11协议的节能机制,包含了PSM,APSD,PSMP以及SMPS。在802.11ax中,为了在速率提高的场景下,降低所花费的功耗,协议采用了一种新的节能机制TWT(Target Wake Time)。TWT首先是在802.11ah中被引入的,在802.11ax中又经过一些改良。本文就针对于TWT技术做一个介绍。
本文参考:
- How Will Target Wake Time Help Mobile Devices And IoT In 802.11ax?
- 802.11ax fundamentals: Target Wake Time (TWT)
- CTS 164: 802.11ax Target Wake Time
- Aruba 802.11ax White Paper
TWT定时唤醒机制(Target Wake Time,TWT)首次出现在802.11ah “Wi-Fi HaLow”标准中,其用于支持大规模物联网环境下的节能工作。随着IEEE 802.11ax标准的发展,TWT的功能获得了进一步的扩展,这使得IEEE 802.11ax标准能够更加优化设备的节能机制,提供更可靠,更节能的传输机制。在802.11ax中,TWT机制在ah的基础上,已经被修改为支持基于触发的上行链路传输,从而扩展了TWT工作的范围。
在TWT中,终端和AP之间建立了一张时间表(该时间表是终端和AP协定的),时间表是由TWT时间周期所组成的。通常终端和AP所协商的TWT时间周期包含一个或者多个beacon周期(总体时间比如几分钟,几小时,甚至高达几天)。当终端和AP所协商的时间周期到达后,终端会醒来,并等待AP发送的触发帧,并进行一次数据交换。当本次传输完成后,返回睡眠状态。每一个终端和AP都会进行独立的协商,每一个终端都具有单独的TWT时间周期。AP也可以将终端们根据设定的TWT时间周期进行分组,一次和多个终端进行连接,从而提高节能效率。
如上图所示,User 1和User 2分别和AP协定了两个TWT时间周期,分别为TW1和TW2。终端User 1和User 2默认就工作在睡眠模式下(sleep mode),保持一个较低的功耗。当TWT时间周期到达时,AP会发送一个触发帧(Trigger)给终端,终端进而苏醒并和AP执行数据交换,当数据交换完成后,终端恢复睡眠模式。TWT和传统PSM模式的差别是,终端只在TWT时间开始的时候苏醒,而在PSM模式中,从该beacon周期开始,终端就会通过该beacon帧中的DTIM信息,观察是否AP是否由缓存自己的数据帧,如果有的话,那么就保持苏醒,直到接收完成后,才恢复到睡眠模式。在上图中,如果是传统的PSM的话,若本轮beacon帧中提示有User 1的信息,那么其不会在TW1时间内睡眠,会保持苏醒,直到数据交换完成后,才恢复睡眠。
TWT的三种工作模式
TWT一共有三种工作模式,分别是:1)Individual TWT,2)Broadcast TWT,3)Opportunistic PS。
- Individual TWT:该模式下终端会和AP协商特定的TWT时间,该时间会被存放在AP的时间表中。终端会在特定的时间醒来并和AP进行帧交换。每一个终端仅仅直到自己和AP协商的TWT时间,不需要知道其他终端的TWT时间。Individual 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工作模式下,该信息终端时不需要的。终端一直保持睡眠状态,直到TWT时间到达。终端苏醒,并接收AP的触发帧,即TWT Trigger。当终端接收到该触发后,其会和AP进行数据帧交互。于此同时,AP会告知终端下一次的TWT时间(在显式TWT中,睡眠间隔的逐次设定的),终端会在新的TWT时间上,定时苏醒,并执行数据帧交换。TWT的一次苏醒间隔有可能是小于一个beacon周期,也有可能是大于一个beacon周期的,相比于传统的PSM,APSD之类的节能方式,更加具有一般性。
终端和AP可以关于TWT时间周期进行协商,终端可以要求取消TWT参数,或者向AP请求特定的TWT时间。如果AP统一终端的请求,其会反馈“Accept TWT”。还有多种协商的具体参数,可以参考上图,即协议中的Table 10-19a。
- Broadcast TWT:广播TWT机制是一种由AP负责管理的工作机制。在该机制下,TWT时间周期是由AP宣告,通常AP会在每一个beacon帧中宣告本轮的TWT时间周期。在一些特殊的情况下,AP也会在其他的管理帧中宣告,比如Association帧,Reassociation帧或者Probe Response帧等等。我们需要注意在Broadcast TWT中,存在加入组和离开组的交互动作,终端需要向AP申请加组才可以执行Broadcast TWT,这个加组交互动作也是通过在终端和AP交换管理帧中,通过携带TWT elements完成的。当终端完成加组后,终端会按照最近接收到的TWT时间周期进行工作,此时这一类型的终端也被叫做“TWT Scheduled STA”,AP被称为“TWT Scheduling AP”。终端在TWT时间周期到达后进行苏醒,AP会发送广播的触发帧,发现哪些终端正在处于苏醒状态(加组后的终端们),并向这些终端发送数据帧,这里由于是广播通信,所以只有AP向节点发送。当AP发送完成后,终端恢复到睡眠状态,直到下一次广播TWT时间到达。通常,这种广播TWT中的时间间隔,我们也称为“TWT SP (Service Period)”。
如上图所示,AP会在Beacon帧中,进行TWT Broadcast时间周期(即TWT SP时间)的宣告。终端们苏醒并接收该Beacon信息。然后在对应的TWT时间到达时,对应的终端们会提前苏醒,接收AP发送的TWT trigger,以及AP发送的下行数据帧,在此过程中,AP也由可能发送新的一次的TWT Broadcast时间周期(即TWT SP时间)。终端接收完成后,进入睡眠状态,并在新的TWT SP时间到达时,再次苏醒,以后以此类推。
- Opportunistic PS:机会PS模式和前面两种工作模式是类似的,但是没有AP和节点的协商过程。AP会在每一个Beacon内,公开宣告一个TWT时间。任意终端可以选择在这个公开TWT时间内进行苏醒,并和AP执行数据帧交换。这个交换可以是单个节点的,也可以是采用OFDMA机制进行交换。
如上图所示,AP在Beacon帧中宣告了一个公开的TWT时间,任意终端都可以直到该TWT时间。当该TWT公开时间到达后,AP会发送触发帧,此时苏醒的节点可以和AP进行交互,并执行数据帧的交换。在图中,由多个节点苏醒,从而触发了一次OFDMA类型的数据帧交互。
转载自:Wi-Fi研习者
Wi-Fi 6(802.11ax)解析16:非主动形式的BSR(Buffer Status)反馈 - 知乎 (zhihu.com)
Wi-Fi 6(802.11ax)解析17:UORA上行随机接入机制(UL-OFDMA) - 知乎 (zhihu.com)
Wi-Fi 6(802.11ax)解析18:TWT节能机制(Target Wake Time) - 知乎 (zhihu.com)