静态分片机制是802.11一开始引入的一个机制,早期的作用是为了DSSS模式下,一个帧长度太长,同时因为传输较慢,所以被干扰概率大,所以采用分片一段一段传。随着OFDM的Wi-Fi技术主流后,分片技术逐渐用处变弱,目前主要是为了一些和其他网络兼容的情况,才进行分片,因为802.11的最大PPDU大小实际上是大于二层以太网数据帧(1500B)或者其他网络的MTU的,所以这里也会用到分片。同时,针对于帧分片的传输机制,实际上我觉得应该是TXOP传输机制的前身。

那么这一次我们单独把静态分片拿出来回顾一下,主要是为了对应802.11ax中的动态分片技术。在802.11ax(Wi-Fi 6)中,为了优化UL-OFDMA/DL-OFDMA接入机制,其协议引入了动态分片的机制。所以本文我们先回顾下静态分片机制。

静态帧分片机制

Fragment分片机制是802.11早期就已经存在的,这里的分片指的是二层分片,是基于无线MAC帧进行分片,然后重组。请注意,这个和基于IP的分片机制不是同一个,在网络协议中,每一个层面都可以引入分片机制,但是不能够将其混淆。

在802.11协议中,引入分片技术目的在于:减少BER所带来的损失,由于初期的无线传输容易收到干扰或者噪声影响,所以不适合传输较长的数据帧。如果数据帧越长,那么发生错误的概率就越大。反之,通过分片技术,将一个长帧切分成多个小帧,由于每一个小帧长度较短,从而就不容易发生错误。因此,最后在接收端合并,从而实现成功传输。

相比于有线网络,IP层需要分片主要是由于有线MAC层的MTU大小限制,相对于有线网络,无线的MAC层MTU会大很多,而应用层以上的分片的原因就更多,比如说负载均衡之类。故无线分片和有线的分片还是有本质的差别。

在直到802.11-2016版本中,802.11协议仅仅支持静态分片技术,即通过设置的一个固定threshold阈值(dot11FragmentationThreshold),如果数据帧(一般指的是MPDU)大于threshold,那么就会把数据帧分片。

静态帧分片的标志位

帧分片技术的实现主要有两个标志位,一个是位于Frame Control中的More Frag字段,其与分片模式下的传输机制有关,另外一个是用于维护分片序列片段的序列号,位于Seq-ctl字段。

802.11协议精读25:静态帧分片(Frame Fragment)机制 - 知乎-LMLPHP

在802.11中Seq-ctl字段主要包含了两个部分。一个部分是用于分片的序列号(Fragment Number),其初始为0,每新增一次分片其会增加1。另外一个部分是Sequence Number,这个序列号主要是为了维护ACK的,也是从0开始计数,如果满了以后那么循环为0,重新计数。

802.11协议精读25:静态帧分片(Frame Fragment)机制 - 知乎-LMLPHP

静态帧分片的接入机制

静态帧分片的传输是早期802.11引入的,其早期的传输是一种连续传输的机制。如下图所示:

802.11协议精读25:静态帧分片(Frame Fragment)机制 - 知乎-LMLPHP

一个完整的MAC层数据MSDU,被帧分片技术分成了多个帧,其中每一个帧就是一个独立的MPDU。每一个MPDU按照背靠背(back-to-back)的顺序依次传输,每一个帧都会反馈ACK。直到所有的MPDU都在接收方接收到以后,接收方才会根据frag number,也就是分片序列号进行重组,获取完整的MSDU。

802.11协议精读25:静态帧分片(Frame Fragment)机制 - 知乎-LMLPHP

背靠背(back-to-back)的传输方式可以认为是TXOP机制的一个前身,这是一种典型的突发传输(Burst Transmission),意思为当某个STA竞争获取到信道以后,接连传输,直到整个帧被全部传完。该技术的实现是通过NAV技术实现的。

如上图所示,节点Station 1抢占到信道后,发送了Data frag 1,该帧中的Duration被设置了Data 2+2×ACK+3×SIFS,通常情况下,经过静态帧分片的几个PPDU,在传输时都会采用相同的物理层参数(即传输速率设置),由因为Station 1有整个帧分片的全部信息,所以该Duration的时间设置可以包含了完整MSDU在物理层传输所需的全部时间。同时,该分片帧中,还需要进行More Fragment字段的置位,代表还有分片字段待传。

在该帧传输后,接收方反馈ACK,并在ACK中继续通过Duration字段进行NAV设置。其设置方法就是在Data frag 1的Duration参数上减去SIFS和ACK的传输时间,如上图,ACK1是设置为Data 2+1×ACK+2×SIFS的时间,并在More Fragment字段置位。以此类推,直到最后一个ACK的传输,此时由于整个帧分片被传输完成,所以最后的ACK的Duration设置为0,同时More Fragment也被置0,代表整个传输过程完成。

802.11协议精读25:静态帧分片(Frame Fragment)机制 - 知乎-LMLPHP

另外,如果RTS threshold的设置小于帧分片的大小的时候,那么只有第一个帧在竞争胜利后,先采用RTS进行设置。由于RTS/CTS的基理和分片不同,所以RTS/CTS交换时,其NAV仅仅会设置首个Fragment 0的片段的,其后的背靠背传输是利用帧分片本身设置的Duration参数来实现的。

由于二层帧分片关联到Duration的参数设置,一般是由硬件实现的,通常Fragment Threshold(dot11FragmentationThreshold)的设置和RTS Threshold是一样的。因此,关于重传机制,也是立即重传的。也就是如果某个帧分片传输错误,那么就立刻进行该帧分片的重传。重传时,Duration设置的NAV时间也会被增加,会把重传的时间重新加入在内,该点也是和TXOP传输机制的区别。

因此,802.11协议中规定了两个参数dot11MaxTransmitMSDULifeTime(发送方)和aMaxReceiveLifetime(接收方),通过这两个参数,维护了帧分片传输的最大时长,避免了帧分片在错误模式下无止尽的传输。当发送或者接收方传输时间大于这两个参数,都是进行直接丢包,放弃这一次帧分片的传输。

在后来的802.11协议中,由于OFDM物理层技术的应用,帧分片的原来使用场景基本上不太存在了,主要是为了和其他协议的数据帧长度兼容,所以要用到帧分片。同时,由于引入了帧聚合技术,所以帧分片大多都仅仅是一种分片的结构,其传输机制依赖于其他的传输方法,比如帧聚合的传输机制。


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

802.11协议精读25:静态帧分片(Frame Fragment)机制 - 知乎-LMLPHP

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

08-31 19:09