12

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

 3 years ago
source link: https://zhuanlan.zhihu.com/p/339994222
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

序言

终于到了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的帧。如下图所示

3eeam2I.jpg!mobile

其中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。

NnIFn22.jpg!mobile

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

mYNNvi3.jpg!mobile

参考上图的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的帧信息,主要控制帧,另外还有一个特殊的管理帧,如下图所示:

j2q2IbM.jpg!mobile

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

zErq22I.jpg!mobile

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

vimYFb3.jpg!mobile

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

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

EJzaYbf.png!mobile

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK