有关11n only和11bg mixed和11bgn mixed区别问题的记录

这个问题是笔者在知乎上面回答的,这里仅仅为个人做一个笔记,顺序有些乱,且不是很严谨,还请见谅。

这个问题有些繁杂,我们需要慢慢拆分下。这里一共关联到802.11b,802.11g以及802.11n三个协议,还好没有ac,否则更复杂一些。其中802.11b是采用DSSS的物理层,802.11g/n是基于OFDM的。

所以首先第一个问题是802.11b/g的兼容性问题。如果一个AP(也就是路由)是工作在b/g兼容模式下,如果一个802.11g的节点发送数据包给AP,采用OFDM的模式,那么AP可以直接识别,并且接收这个数据。如果一个802.11b的节点则不行,其首先要采用CCK/Barker码的方式(即DSSS中具体的编码方式)发送一个RTS帧给AP,如果AP反馈了CTS帧,那么AP就知道下面有一个兼容的节点需要接入,从而切换对应的解码方式。这里很自然发现,为了兼容802.11b的帧,需要额外的RTS/CTS交换,所以会有性能上的损耗。
第二个问题是g/n的兼容性问题(PS:关于802.11n与802.11b的兼容性实际上和b/g兼容性的解决方案一样,不过这里我没有从底层确定过,所以如果有错误还请指正)。首先我们要知道在802.11n中间一般有两种工作模式,兼容模式(实际上兼容模式这个词并不是特别好,这里包含两种模式,Legacy mode,Mixed mode,由于比较细节,所以不展开了)和绿灯模式(Greenfield mode,这个中文是采用百度百科上的翻译,觉得还是比较贴近的了, 绿地模式_百度百科 )。如果一个网络中仅仅只有802.11n的设备,那么就是工作在绿灯模式下,如果有其他的老设备,那么就工作在兼容模式下。然后我们需要看下其物理层头部(无线数据帧是有物理层头的),这里的图是引自泰克的《Wi-Fi:802.11 物理层和发射机测量概述》,然后图中上面黄色区域应该是L-SIG,这里有个笔误。



在上图中,可以很明显发现两种工作模式下,其具体的物理层头部结构是有区别的。在混合模式下,实际上是在一个简化版本的802.11n的头部添加了一个802.11g的头部,所以能够和802.11g的终端能够兼容工作。而在纯粹的802.11n的头部,即绿灯工作模式下,其删除了多余的兼容的头部,同时还增加了HT-LTFn这个字段,这个字段是为了多条路径的同步,信道估计之类的存在的,在绿灯模式下,802.11n的MIMO模式才可以更好的工作。同时,根据这幅图我们还可以认知到,应该是在绿地模式下的802.11n才可以工作在40MHz带宽信道上,而兼容模式是20MHz带宽上,带宽越大,子载波越多,从而物理层速率越快。
同时关于不同的协议版本之间工作时的性能存在差异,在infocom12年上的论文《AP Association in 802.11n WLANs with Heterogeneous Clients》中也有相应的论述,在其中这个最优化还是一个NP问题。
-----------------------------------------------------------------------------------------------------------------------------
分界线,上面是理论,这里回到现实。
在我的使用中,也是切换到802.11n only的工作模式的时候,性能没有增加,反而降低了。最槽糕的一次是整个就连不上网了。这里我们只能够大致分析下问题,暂时还没想到如何设计个实验确认。
首先第一个可能性在于,我们一般设置工作模式,即11n only,11bgn mixed都是仅仅在路由器上设置的。在前面的理论论述的地方,我们知道其数据帧结构是有差异的,所以如果要启用11n only也就是绿灯模式,那么需要发送方和接收方都工作在绿灯模式,即发一样的数据帧头部的情况下。很有可能是将路由设置成了11n only,但是本地计算机发送数据帧的时候,还是发送的mixed模式下的数据帧头部,所以路由器很少接,甚至直接拒接,从而性能变差。所以可能除了路由要改,那么本地也需要修改成一样的工作模式。
第二个可能性在于帧聚合机制, 有关 @yw zhang 提到的可能中断的机制有可能与帧聚合有关。在802.11协议中,没传输一个数据包是需要反馈ACK的,传统的802.11b/g都是每一次传输,反馈一个ACK。而在802.11n中间则可以采用帧聚合的工作模式,其反馈的是Block ACK。在信道质量好的时候,其可以大大提高网络性能(理论30%左右的提升),而如果信道质量差的时候,其由于把多个ACK集中到一个block ACK中集中的传递,则可能会导致网络接入的不稳定。比如说一种可能性,接收终端接收完数据准备反馈ACK了,但是由于发送ACK的功率比较低,所以导致对端无法接收这个ACK。在传统的模式下,仅仅丢了一个ACK,而在Block ACK的模式下,就相当于丢了多个ACK了。从而不稳定。
上述内容有些表述不是特别严谨,如有错误,还请见谅。
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 代码科技 设计师:Amelia_0503 返回首页