钱 煦, 吴 斌, 叶甜春
(1. 中国科学院 微电子研究所,北京 100029;2. 中国科学院大学,北京 100049)
随着IEEE802.11n/ac/ad无线局域网标准的制定和推广,物理层传输速率提升巨大.然而,介质访问控制层(Media Access Control, MAC)以及物理层协议的固定开销降低了信道的有效利用率.为了减少协议开销,提高MAC层效率, 802.11n[1]协议定义了两种帧聚合的方式,媒介访问控制服务数据单元聚合(Aggregated MAC Service Data Unit, A-MSDU)以及媒介访问控制协议数据单元聚合(Aggregated Media access control Protocol Data Unit, A-MPDU).另外,将这两种帧聚合方式相结合,可以得出一种效率更高的两级聚合算法.这些帧聚合机制极大提高了MAC层效率,因此,IEEE802.11ac[2]以及IEEE802.11ad[3]中同样采纳了这几种聚合算法.
文献[4]提出了增强型两级聚合算法(Enhanced Two-level Frame Aggregation, ETFA),通过建立的理论模型,根据当前误码率和子帧长度,动态计算两级算法的第1级聚合长度(first-level A-MSDU length,Lamsdu)以及第2级聚合包数(second-level Aggregation level,Al).这种算法极大地提升了MAC层聚合的效率.但是,笔者没有考虑聚合帧重传的场景,吞吐率在误码率较高时会下降剧烈.
笔者基于文献[4]通过理论模型动态选择Lamsdu以及Al的思想,同时创造性地在MAC层引入聚合滑动窗口的概念,提出了一种新的两级聚合重传算法(Window based Two-level Frame Aggregation, WTFA).相对于传统的A-MPDU、A-MSDU以及ETFA等聚合算法,WTFA算法通过聚合窗口的引入,增加了重传时的聚合包长,提升了误码率较高时的系统吞吐率稳定性.同时,通过理论模型的建立,动态计算Lamsdu以及Al,提升了不同子帧长度以及聚合包数下的吞吐率.采用网络仿真器-3(Network Simulator-3,NS-3)[5]进行系统建模,发现该算法在不同的子帧长度以及聚合包数条件下均能提升系统吞吐率,并且在信道误码率较高时维持了吞吐率的稳定性.
两级帧聚合算法综合了A-MPDU聚合和A-MSDU聚合.如图1(a)所示,在这种聚合方式中,A-MPDU聚合的每个MPDU子帧就是一个聚合的服务数据单元,从而进一步消除了MAC帧头和帧校验序列(Frame Check Sequence, FCS)占用的负载.两层帧聚合机制包括两个阶段:第1个阶段将缓存的MSDU聚合成A-MSDU数据帧,该聚合长度在下文中用Lamsdu表示; 第2个阶段将第1级聚合之后的A-MSDU数据作为MPDU子帧,第2级聚合的MPDU个数在下文中表示为Al.
图1 802.11n中的聚合协议
另外,在IEEE802.11n中规定,A-MSDU最大聚合长度为 4 096 B,A-MPDU最大聚合长度为 65 535 B.并且由于块确认(Block ACK)中位图(Bitmap)字段只占 64 bit,所以A-MPDU最多聚合64个子帧.
在 IEEE802.11n中,接收端通过块确认来响应聚合帧的接收.如图1(b) 所示,块确认信息域中包括起始序列号(Starting Sequence Number, SSN)Ss子域以及点阵图子域.因为点阵图只有八位元,所以序列号在[Ss,Ss+ 63]范围内的子帧才能被Block ACK确认[6-7].
在目前的商用网卡中,当聚合数据中的部分子帧丢失时,丢失的子帧被聚合在下一个重传的A-MPDU中进行重传,由于重传时的Al下降剧烈,吞吐率会剧烈波动.文献[8]提出了通过修改块响应帧格式提升重传时的聚合包数的方法.虽然该方法可以提升吞吐率,但是修改了协议,不适用于工业应用.文献[9]提出了一种通过两级聚合来提升重传时A-MPDU聚合包大小的算法.然而,当丢失的数据子帧序列号较小时,重传包的数量仍然会剧烈减少,导致吞吐率的波动.
为了解决上述问题,文中提出了一种基于聚合滑动窗口的重传算法WTFA.首先,通过聚合滑动窗口的设计增加重传时的A-MPDU数据帧总长度; 然后,通过建立的理论模型,动态选择第1级聚合的包长Lamsdu以及第2级聚合的包数Al.
为了增加重传时能够传输的MPDU帧数量,与TCP中的滑动窗口协议类似,在高层媒介接入子层(Upper Media Access Control, UMAC)引入聚合滑动窗口机制(Aggregation Sliding Window, ASWnd).在滑动窗口中的MPDU可以用于补偿重传时的聚合帧,从而使重传时的帧长最大化.
图2 聚合滑动窗口
如图2(a)所示,将UMAC中缓存的数据帧分为以下4个类别:
类别#1子帧已发送,但Block ACK中Bitmap对应bit位为零.
类别#2子帧已发送,但子帧的序列号超出Bitmap范围.
类别#3子帧未发送,并且可以用于填充重传聚合帧.
类别#4子帧未发送,并且不允许用于填充聚合重传数据帧.
在文中提出的算法中,发送端将UMAC中缓存的数据帧通过多个指针分为以上4个类别,这些指针的定义如下:
SND.MSS: 表示已发送,但是对应位在Block ACK中为零的第1个子帧的序列号,在下面的讨论中用Sf来表示该序列号.该指针标志了类别#1的第1个子帧.
SND.EXB: 表示已发送,但序列号超出Bitmap的第1个子帧的序列号.该指针标志了类别#2的第1个子帧.为了使得Block ACK的SSN位始终等于第1个丢失的子帧,需要在每个A-MPDU聚合帧后面填充一个块确认请求(Block Ack Request, BlockAckReq).由于BlockAckReq很小,该操作不会影响吞吐率.
SND.NXT: 表示下一个可以用于补偿重传A-MPDU的子帧.该指针标志着类别#3的第1个子帧.
SND.WND: 标志可调节聚合窗口大小.该窗口标志了可以用于补偿重传聚合数据的所有子帧.因此将第1个丢失的子帧序列号加上滑动聚合窗口大小标志了类别#4的子帧起始序列号.其中类别#3中的子帧数量为可用窗口大小(Usable Window Size, UsableWnd),表示为 UsableWnd= SND.WND+ SND.MSS- SND.NXT.
在初始状态下,类别#2中没有包含任何数据帧.当发送端开始传输聚合数据并且产生丢包时,Bitmap中对应位丢失的数据帧需要重传.此时,可将类别#3中未发送的数据帧填充到重传的聚合数据包的尾部,以使得重传的数据包最长.但是,类别#3中的数据帧序号可能超出[Ss,Ss+63]的范围,不能确定是否已经被正确接收,仍然需要缓存在UMAC.在收到Block ACK之后,可根据指针的定义更新指针位置,从而调整滑动聚合窗口的位置及大小,并将类别#3中超出Bitmap范围的数据帧放到类别#2中.如果此时类别#1中的数据帧仍然存在丢失,则重复上述过程.当类别#3中的子帧数量减为零时,即UsableWnd降为零时,只重传类别#1中的数据帧,直到窗口滑动使可用窗口大小增加.
如图2(b)所示,传统聚合算法在MPDU丢失之后只能重传当前丢失的子帧,大大降低了平均传输包长,导致聚合吞吐率低于预期.文中提出的基于聚合滑动窗口的算法,在丢失子帧之后,从可用窗口中提取子帧补充丢失的子帧进行重传.增加了重传包长,提升了吞吐率稳定性.
笔者修改了文献[4,10-11]中的吞吐率模型,从而动态选择Lamsdu以及Al.假设当前网络中的站点数量为ns,并且所有站点的数据流均为饱和状态.在以下的研究中不考虑隐藏终端的情况.
如文献[4]中所述,为了增加传输时的聚合包总长,总共有以下两种策略:
(1)
其中,Lampdu,m是最大A-MPDU聚合帧长度,Lamsdu,m是最大A-MSDU聚合帧长度,Al,m为A-MPDU最大聚合包数.如1.1节所述,三者分别为 65 535 B、4 096 B 以及 64 bit.
值得注意的是,在计算中需要考虑丢失的重传包.式(1)中Lr为前一次传输中丢失的第2级聚合A-MPDU帧长,Nr表示前一次传输中丢失的A-MPDU子帧数.Lsubf为当前第1级MSDU子帧帧长.
(2)
为了在不同子帧长度以及聚合包数下均能表现优异,WTFA算法综合考虑上述两种聚合方式,并根据误码率以及需要重传的数据包,遍历可取的参数,计算吞吐率最大时的Al以及Lamsdu,即
(3)
其中,Tidle、Tc及Tsucc分别是站点在空闲状态、数据包冲突状态及数据包成功传输的时间,Ps为站点在给定时隙内数据帧传输成功的概率,Ptr为在一个给定时隙内至少有1次传输的概率[10].这些参数均可通过误码率计算得到[10].在2.1节中, MAC层通过聚合窗口进行重传补偿后,扩大了Al的选择范围.从式(3)可以看出,重传时,传统算法的Al受到限制,导致MAC利用率下降,两级聚合吞吐率Stwo降低.而文中提出的基于聚合窗口的算法通过增加Al,提升了在不同误码率下的有效包长,从而提升了吞吐率.
WTFA算法流程如图3所示,在发出一包聚合数据,并且收到Block ACK之后,发送端对于聚合窗口的指针位置进行更新,并且移动聚合窗口.当UsableWnd中的剩余包数大于零时,通过式(3)计算出吞吐率最大时使用的Lamsdu和Al,并且从可用窗口中选取对应的数据包,重组聚合数据,进行数据重传; 当UsableWnd中的剩余包数为零时,直接进行重传.
图3 WTFA算法架构图
采用NS-3网络仿真软件对于两级聚合重传算法进行性能仿真验证.在下面的仿真中,假设所有的上层流量均为饱和状态,并且网络中没有隐藏终端.
图4是子帧长度为1 024 B、物理层速率为130 Mbit/s和误码率为 5× 10-5时,聚合帧总长度随时间变化的曲线.从图中可以看到,传统的A-MPDU聚合算法,丢包之后重传包的帧长剧烈减少.而文中提出的WTFA算法通过聚合滑动窗口对于重传数据帧进行补充,维持了聚合长度的稳定,从而提升了在误码率较高环境中的系统吞吐率.
图4 聚合帧总长度随时间变化曲线
图5 吞吐率与误码率的关系曲线
图5是子帧长度为512 B和物理层速率为130 Mbit/s时,多种聚合算法在不同信道误码率条件下的吞吐率.在仿真中选取文献[4]中的两级聚合算法ETFA作为对比,并且对上文中提出的第1种和第2种聚合策略进行仿真.从图5可以看出,使用策略2的重传算法在信道误码率较低时,吞吐率明显高于使用策略1的算法.这是由于在误码率较低时,聚合包丢失较少,第1级聚合长度较长的算法在MAC层额外损耗小.然而,随着误码率的增高,第1级聚合长度越长的包丢失越严重,因此,使用策略2算法的吞吐率逐渐高于使用策略1算法的吞吐率.结合了两种聚合方式的WTFA算法吞吐率明显高于文献[4]中提出的ETFA算法,并且维持了在误码率增加时的吞吐率稳定性.
图6(a)和图6(b)分别为物理层速率为260 Mbit/s和误码率为5×10-5时,系统吞吐率与子帧长度和聚合包数的关系曲线.从图6可以看出,通过Lamsdu和Al的动态调整,WTFA算法保持了吞吐率相对于子帧长度和聚合包数变化的相对稳定,而其他聚合算法由于最大聚合长度的限制,吞吐率出现了浮动.同时可以看到,使用了聚合滑动窗口的WTFA算法通过补偿重传时的包长和吞吐率相对于传统算法以及ETFA都得到了较大的提升.
图6 物理层速率为260 Mbit/s和误码率为5×10-5时的吞吐率对比
文中提出了一种基于聚合滑动窗口的两级聚合重传算法WTFA.该算法利用聚合滑动窗口增加重传时的聚合MPDU包数,同时根据当前误码率和丢失的包数对重传时的第1级聚合包长以及第2级聚合包数进行理论分析,得出吞吐率最大时的数值.通过NS-3的仿真验证,充分证明了该算法能够提升不同子帧长度、聚合包数以及不同信道误码率下的系统吞吐率.
参考文献:
[1] IEEE WG. Part 11: Wireless LAN Medium Access Control(MAC) and Physical Layer(PHY) Specifications. Amendment 5: Enhancements for Higher Throughput: IEEE Std 802.11n[S]. New York: IEEE SA Standards Board, 2009.
[2]IEEE WG. Part 11: Wireless LAN Medium Access Control(MAC) and Physical Layer(PHY) Specifications. Amendment 4: Enhancements for Very High Throughput for Operation in Bands below 6 GHz: IEEE Std 802.11ac/D5.0[S]. New York: IEEE SA Standards Board, 2013.
[3]IEEE WG. Part 11: Wireless LAN Medium Access Control(MAC) and Physical Layer(PHY) Specifications. Amendment 3: Enhancements for Very High Throughput in the 60 GHz Band: IEEE Std 802.11ad/D9.0[S]. New York: IEEE SA Standards Board, 2012.
[4]LIU J L, YAO M, QIU Z. Enhanced Two-level Frame Aggregation with Optimized Aggregation Level for IEEE 802. 11n WLANs[J]. IEEE Communications Letters, 2015, 19(12): 2254-2257.
[5]NS-3. NS-3 Network Simulator[EB/OL]. [2017-03-21]. http: //www. nsnam. org/.
[6]SAIF A, OTHMAN M, SUBRAMANIAM S K, et al. An Optimized A-MSDU Frame Aggregation with Subframe Retransmission in IEEE 802. 11n Wireless Networks[J]. Procedia Computer Science, 2012, 9(11): 812-821.
[7]PEFKIANAKIS I, HU Y, WONG S H Y, et al. MIMO Rate Adaptation in 802. 11n Wireless Networks[C]//Proceedings of the 2010 Annual International Conference on Mobile Computing and Networking. New York: ACM, 2010: 257-268.
[8]LIU J L, YAO M, QIU Z. Enhanced Block ACK Method for A-MPDU Transmission in IEEE 802. 11n/ac/ad WLANs[J]. Electronics Letters, 2016, 52(2): 159-161.
[9]LIU J L, YAO M W, QIU Z L. Adaptive A-MPDU Retransmission Scheme with Two-level Frame Aggregation Compensation for IEEE 802. 11n/ac/ad WLANs[J]. Wireless Networks, 2018, 24(1): 223-234.
[10]BIANCHI G. Performance Analysis of the IEEE 802. 11 Distributed Coordination Function[J]. IEEE Journal on Selected Areas in Communications, 2000, 18(3): 535-547.
[11]CHOI J, BYEON S, CHOI S, et al. Activity Probability-based Performance Analysis and Contention Control for IEEE 802. 11 WLANs[J]. IEEE Transactions on Mobile Computing, 2017, 16(7): 1802-1814.