802.11ah(HaLow)协议解析7:NDP控制帧(NDP CMAC Frame)

序言

终于到了802.11ah MAC优化的第一节,帧长度压缩的最后一个部分,NDP控制帧的优化。其实802.11ah的帧长度优化思路是挺明确的,一开始讨论的是S1G MAC Header的压缩,这个是通用的,而且也能用到数据帧上,然后就是Short Beacon,实际上是对应的管理帧。我们知道802.11协议中还有一种类型的帧,为控制帧,比如RTS,CTS,ACK之类的都属于控制帧,这一类如何优化呢,就是本文所讨论的NDP控制帧(NDP CMAC Frame)环节了,这里NDP CMAC的全称为Null Data Packet (NDP) Carrying Medium Access Control information (CMAC)。802.11ah的NDP CMAC Frame优化的基本思想,就是把MAC Header整个省掉,把相关信息全部压到物理层头部中,从而就实现帧体压缩了。

为什么要优化ACK

802.11协议中的ACK其实是传输过程中一笔不小的开销,在802.11n时代下,如果单纯只跑普通的ACK,那么ACK过程大概要占整个传输过程的30%左右。以一次ACK的开销时间为例子,其为SIFS+ACK的传输时间。ACK的传输速率并不能采用最高速率,按照协议规定,ACK这样的控制帧,其采用的速率最高可以到协议中规定的必选速率,但是无法上升到更高的可选速率。以802.11g时代为例,最高可选速率是54M,但是印象里面最高必选速率是24M。而且通常情况下,为了提高接收的准确性,以及还有因为数据帧中有预设Duration的原因,ACK通常是以最低速率反馈的。综上,如果每一个数据帧都需要反馈ACK,那么这笔开销还可以了。

标准的802.11协议的优化策略是Block ACK :所以为了节约ACK的时间,标准的802.11系列协议是采用了Block ACK的方式,该方式一方面是针对新型的MAC接入方案(比如TXOP,帧聚合)之类顺应提出的。另外一方面,采用Block ACK减少ACK的次数。而且由于标准的Wi-Fi是数据相对饱和的场景,即每一个节点其实都有不少数据待发,所以本身场景是倾向于ACK本身就比较多的,所以合并ACK就必然是一个可行的思路。不过Block ACK本身机制而言,并不简单,这里其实引入了类似会话机制了,而且Block ACK的重传也有一些具体设计,这里我们并不展开了。

802.11ah的优化策略是CMAC NDP Frame: 802.11ah的场景和普通的802.11有点区别,因为要覆盖大节点这样的场景,而且基本模式下,由于带宽受限,其传输速率也没那么高,每一个节点能够分配到的传输时间实际上是比较少的,对应到其ACK反馈也就比较少了。因此,合并ACK这条思路在802.11ah中并不是最可行的,所以解决思路就是直接下手优化控制帧了。这里我们主要以ACK控制帧为例给一个控制帧为什么优化的说明,在802.11ah中,CMAC NDP Frame不是直接对标ACK的,而是所有的控制帧都可以按照这种方式优化,因此,CMAC NDP Frame的应用场景实际上是更灵活的,另外802.11ah里面也有block ack,而且也是一共CMAC NDP机制来做的。而且更扩展的说,除了控制帧能降到NDP里面,还有个别的管理帧也降到NDP里面了。

Null Data Packet (NDP) 简述

NDP大致简述下,关于NDP的细节和标准用法可能要等以后整理协议精读到802.11ac的时候再谈这件事情了。NDP帧首次应该是在802.11n里面,在802.11ac时候用法比较典型。

关于802.11中的Null帧,在NDP以前还有一个地方出现过,就是在Polling机制(应用在节能模式或者PCF接入模式中)。那个时期定义的Null实际上是一种MAC Null帧。该帧包含了PHY Preamble,PHY Header,MAC Header,FCS,仅仅MAC层的Payload,即MSDU是等于0的。这种Null帧主要是在polling的时候,如果请求对象没有数据帧要反馈,那么就反馈个Null,也就是空,代表没东西反馈,如果有数据才反馈数据。

在802.11ac里面,典型的场景就是MU-MIMO对应的多节点信道测量过程,NDPA-NDP-Beamforming Feekback的过程。其中NDP的帧结构就是PHY Preamble+PHY Header,没有MAC帧的头部和MSDU,而且由于FCS也是MAC层的,所以也省了。NDP的主要过程是应用其中Preamble部分的LTF部分做信道CSI测量,节点需要获知该信息用于构造预编码矩阵,以实现物理层的MIMO或者MU-MIMO。不过在802.11ac中,NDP基本就是一个测量性质的帧,并没有体现出其他的功能。

802.11ah中的NDP Frame

NDP帧就是仅仅只有物理层Preamble和PHY header的帧。如下图所示

其中STF和LTF可以理解成Preamble部分(这点其实可以这样理解,但是其实和协议定义有点对不上,这里有点历史遗留的定义问题),然后是PHY Header,也就是对应的SIG字段,SIG是用来存储对应MSDU部分如何解调的物理层信息的。在802.11ah中,并不是所有的NDP都是作为CMAC用的,在前面一开始的两篇文章里面说了,802.11ah是基于802.11ac的技术基础,是基于多天线的传输技术的,所以既然有了多天线就需要做NDP测量,所以在802.11ah中也会存在传统的NDP帧。所以先总结下,802.11ah中一共有两种NDP帧:

  • 一种是用来做信道测量的普通NDP帧,这种NDP帧在协议上称为S1G NDP Sounding。
  • 还有一种就是用来控制的特殊NDP CMAC Frame。

普通的NDP其实和标准的802.11差不多,本文就不关注了,下面我们关注NDP CMAC Frame。

802.11ah中的NDP CMAC Frame

首先我们给出NDP CMAC Frame的示例,左边的是1Mbps时候的CMAC NDP,右边是2Mbps时候的CMAC NDP。结构上都一样的,在802.11ah中,SIG的长度还与速率模式有关,1M模式下是36B,2M以上的模式下是48B。

那么下面要关注的问题就是,如何识别这个NDP帧到底是普通NDP还是NDP CMAC。

参考上图的1M模式,主要参考其SIG的第25B位置上,NDP Indication字段,

  • NDP Indication=0,那么就是S1G NDP Sounding。
  • NDP Indication=1,那么就是NDP CMAC Frame。

在确认该NDP帧是NDP CMAC Frame后,还需要进一步确定这是哪一种控制帧。在NDP CMAC Frame中,SIG中可以嵌入多种802.11ah的帧信息,主要控制帧,另外还有一个特殊的管理帧,如下图所示:

那么如何确定这是哪一种控制帧呢,我们主要关注SIG中的NDP CMAC frame body字段

以ACK模式的NDP CMAC Frame打开为例,其首先开始的3个Bits,用来体现该NDP CMAC的类型,不过后面的剩余字段,其实并不是固定的。这个和前面在MAC Header压缩里面说过的一样,是多重Flag解析的方式,其Type后面的字段是根据Type字段本身来解析的。

使用以上的设计机制,802.11ah就可以把原来多种的控制帧,将其信息都对应压入到NDP帧中,从而减少了帧长度,优化传输效率。

本文为原创文章,如需转载须注明出处和原文链接。

欢迎大家关注我们的微信公众号:无线技术大讲堂,请搜索公众号(must_wireless)。