
这个问题有些繁杂,我们需要慢慢拆分下。这里一共关联到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模式下的数据帧头部,所以路由器很少接,甚至直接拒接,从而性能变差。所以可能除了路由要改,那么本地也需要修改成一样的工作模式。
第二个可能性在于帧聚合机制, 有关
提到的可能中断的机制有可能与帧聚合有关。在802.11协议中,没传输一个数据包是需要反馈ACK的,传统的802.11b/g都是每一次传输,反馈一个ACK。而在802.11n中间则可以采用帧聚合的工作模式,其反馈的是Block ACK。在信道质量好的时候,其可以大大提高网络性能(理论30%左右的提升),而如果信道质量差的时候,其由于把多个ACK集中到一个block ACK中集中的传递,则可能会导致网络接入的不稳定。比如说一种可能性,接收终端接收完数据准备反馈ACK了,但是由于发送ACK的功率比较低,所以导致对端无法接收这个ACK。在传统的模式下,仅仅丢了一个ACK,而在Block ACK的模式下,就相当于丢了多个ACK了。从而不稳定。
-----------------------------------------------------------------------------------------------------------------------------
再来一个分界线,关于这个数据包头部如何看,如果是用wireshark抓包的话实际上是可以简单知道大致什么数据包头的,比如下面就是一个802.11b和802.11g的头部,实际上是通过本地网卡收信号的时候所添加的radiotap header给反馈过来
如果用omnipeek来抓包的话,还没有发现方法,因为omnipeek直接把radiotap header给解析成packer info了,所以信息量少很多。
上述内容有些表述不是特别严谨,如有错误,还请见谅。
-------------------------------------------------------------------------------------------------------------------------------
分界线,最近看协议上有一点当时没有注意到,若在AP设置为mixed模式,下面的节点是全部处于mixed模式,还是存在mixed模式和greenfield模式的组合?答案是前者,这里主要整个网络的mixed模式,即兼容模式的同步是通过beacon帧完成的。在beacon帧中,在ERP有一个字段
通过该位打开或者关闭802.11g对802.11b或者802.11的兼容模式。参考CWNA教材,这里ERP设备即是802.11g的设备,而非ERP设备即是采用DSSS基带的模式,即802.11b或者802.11的设备。有关802.11n的兼容目前还没去查具体的位。通过beacon帧的广播(同时在Mixed模式下,通过抓包可以发现,beacon都是通过802.11b最低速率1M发送的,估计也是为了全BSS内都能识别到),让全网的802.11g的STA都默认工作在Mixed模式下,之所以这样做,目前理解可能是为了carrier sense,不过这点还不是特别确定。
同时有关AP像节点发送的时候,如何采用兼容模式的,从驱动里面目前能够理解一些,具体见连接:
--------------------------------------------------------------------------------------------------------------------------------
继续分界线,前面所述的Non-ERP Not Present是针对802.11g对802.11b的兼容性而言的。在802.11n的兼容这里并没有提及。目前发现应该是在802.11n的beacon中的HT Capability Info位,中有一位是Device is Not Able to Receive PPDUs with GF Preamble ,该中GF Preamble就是greenfield preamble,从而即是是否兼容绿地模式。
