802.11协议精读32:IEEE 802.11g

喜夏-厌秋 提交于 2020-04-10 13:09:50

序言

802.11g是一个非常经典的802.11版本了,我们大部分人接触Wi-Fi网络其实都是从802.11g的世代开始的。不过802.11g的世代其实协议还是挺繁杂的,本文笔者就是做一个个人笔记。记录经典的Wi-Fi协议版本实际上就是为了更好的读懂协议,毕竟现在802.11协议的内容量确实很大,而且很多都是历史问题了。

另外值得一提的是,802.11g有时候我也喜欢称之为802.11-2003版本。在802.11的发展历史中,初代是802.11-1997,然后后来有其了一个任务组TGm,TGm是用来整理协议总章的,每一个协议制定完后,隔一段时间会被并入总章, 之后协议的单行本就失效了。第一个总章实际上是TGma,a代表第一个,对应的是802.11-2007版本,然后是TGmb,对应的是802.11-2012版本,然后最新的是TGmc,对应的是802.11-2016版本。802.11g的协议实际上是单行版,但是其却是有总章的体量和框架,导致802.11g的制式是整个802.11协议里面最多的一个了。

802.11g的发展历程

这个部分参考TI的一份早期文档《IEEE 802.11g - New Draft Standard Clarifies Future of Wireless LAN》。802.11g是802.11a/b的一个正统续作。

在802.11g的设计中,不是一开始就往着OFDM方向发展的,当时一共有两份提案,一份是TI的PBCC-22,含义就是基于PBCC的22Mbps速率,还有一份是Intersil公司(这个公司实际上是当时并购了Harris的半导体部门,前面说过Harris在早期无线网络发展的时候,非常壮大的公司)提出的CCK-OFDM技术,其实802.11b中的CCK就是Harris和朗讯搞的,而PBCC是TI那个阵营的。然后在投票缓解中,虽然有过半数的公司认同CCK-OFDM的方案,但是协议通过是需要75%的赞成比例,几经商榷之后,最后采取的是一个折中的方案,就是PBCC和CCK-OFDM都会被纳入到802.11g的协议版本中,最后才以76.3的比例通过协议。

其实这个故事到802.11n的世代里面继续上演,还是会分阵营的。等什么时候整理802.11n的时候再整理。

802.11g的协议框架

其实802.11g世代中,MAC层部分其实没有什么改进,主要都是物理层技术的发展。而且参与协议指定的公司都可以发现是一些半导体IC公司,网络设备公司其实参与度倒还没有那么高。所以MAC和更上层的业务部分并没有太多的变化。

802.11g在协议里面的代号为ERP(Extended Rate PHY),扩展物理层速率。

802.11g支持4种物理层制式,分别是ERP-DSSS/CCKERP-OFDMERP-DSSS-OFDM(图上为CCK-OFDM)ERP-PBCC。如下图所示

这里协议默认的是CCK和OFDM两种制式,还有两个扩展的CCK/OFDM和PBCC调制版本。

我们可以先直观的看一下不同协议版本间的速率差异:

上图中,我们可以看到802.11g的兼容范围确实很大,其即包含了802.11b的支持速率,也支持了802.11a的支持速率,在此基础上,还增加了PBCC的22Mbps速率和PBCC的33Mbps速率。

我们之前在协议起源中提到过,802.11g相比于802.11a大部分内容是照搬的,这个是从最后商业市场的应用而言的,从协议的角度而言,802.11g还是有不少内容增加的。

802.11g-Beacon中的ERP元素

从802.11g开始,由于是一种新的物理层协议,所以需要在Beacon中添加ERP元素。

其中主要是三个Bits,Non-ERP Present,Use Protection,Barker Preamble。前面两个是与保护模式有关的,我们谈兼容的时候再说。还有一个Barker Preamble,这个命名虽然是Barker Preamble,但是讨论的问题是Short Preamble还是Long Preamble,如果设置1,那么代表全网可以采用Short Preamble,从而提升一点效率。

802.11g的帧结构

我们前面说了802.11g有4种制式,分别是ERP-DSSS/CCKERP-OFDMERP-DSSS-OFDMERP-PBCC。以下分别列举一下(图来源于权威指南,比协议的图清晰点)

ERP-DSSS/CCK,ERP-PBCC

这个帧结构是继承了802.11b的帧结构,基本上内容都是和802.11b一样的,可以直接做到和802.11b的STA兼容。所以从这个层面而言,802.11g算是重新定义了一次802.11b的帧结构,并包含在其协议内容中。所以我们目前用的最低速率实际上的可以算是“802.11g”的,不过名义上还是属于802.11b定义的。另外,Length字段这里表示的还是时间,单位us。

ERP-DSSS/CCK和ERP-PBCC的帧结构是相同的,只是编码方式不同,这点两个标识在service字段里面的modulation标识。

另外,802.11g的service字段和802.11b还有点小区别,

主体部分和802.11b的service字段相同,但是由于协议进一步提升了直扩模式下的传输速率,PBCC-22Mbps和PBCC-33Mbps,那么length字段的精度会进一步需要提高。所以在service字段里面增加了两位,一共三位用来提升length字段的精度。

ERP-OFDM

ERP-OFDM实际上来源与802.11a的帧结构,基本上是一样的。

然后上图有一个地方标识错了,最上面的Logical PDU的部分描述的是从Signal信号开始的。另外需要注意的是,在802.11g-OFDM世代,其STF和LTF合并称为Preamble,这也是Preamble的原意,然后Signal字段实际上对应的是PLCP Header,代表了物理层相关的解调信息。从802.11n开始,STF,LTF,Signal三个部分合并组成了Preamble,这个是一个定义的问题了。

ERP-DSSS-OFDM

按照协议而言,这种工作模式被命名为DSSS-OFDM,也有时候可以直接称为CCK-OFDM。

这个格式比较特殊,是为了DSSS模式和OFDM模式兼容而设计的。由于802.11g工作在2.4GHz的信道上,这个信道原来只有802.11b的节点,所以向前兼容只需要兼容802.11b就可以了(这里802.11b是和802.11-1997基本是一样的,所以兼容802.11b即可)。

那么为了兼容,在一个ERP-DSSS-OFDM的帧头部,最先要加上802.11b的帧头部,那么包含了PLCP Preamble和PLCP Header,这里的意义实际上是和802.11b的帧一样的。这个扩展的802.11b的头部实际上是给同BSS内,802.11b的节点看的,这些节点看到后就可以主动回避,那么回避时间是记录在PLCP Header中的Length字段,注意这里还是us,同时由于后面的传输速率最高能到54Mbps,所以service里面的扩展字段还是需要用上。

然后针对于兼容802.11b的PLCP Preamble和PLCP Header传输后,那么是802.11a的LTF字段。这里直接是LTF了,因为STF的基本功能,比如帧同步,粗频率同步之类的,可以通过PLCP Preamble来完成,所以就不需要重复做了。然后需要重新传输一遍物理层信息,即Signal字段,这里面也有MCS和Length,注意这里的Length是给802.11g-OFDM的节点看的,所以单位为bits。

另外需要补充的是Signal Extension字段:这里需要注意在ERP-OFDM和ERP-DSSS-OFDM这个部分,PPDU的结构最后还有一个Signal Extension字段,这个字段也是为了OFDM和DSSS兼容性设计的,属于比较细节的内容了,我们在讨论802.11b/g兼容的时候再说。

802.11g的CCA机制

802.11g只支持能量检测,如果信号的能量大于-76dBm,则会检测到信道Busy。其实这点的定义应该是为了当时那个世代好实现吧,因为只做能量检测的话比较简单,而如果在能量检测上做载波检测的话,那么在802.11g世代中需要检测Short Preamble,Long Preamble和STF三种可能性,所以当时为了简化,只定义了能量检测。那么不同Slot时间其对应的参数如下:

这里补充记录下,关于RxTxTurnaroundTime的时间,因为笔者的一些设计类的paper需要考虑到该时间

其实可以发现在半双工的收发切换里面,单纯的天线Switch切换时间是很短的,图中显示<<1us,但是收到发的切换大约为5us,发到收的切换大约为10us,这里的参数是802.11g世代的,每一个世代可能还会有点不同。这里说明了收发切换需要考虑的时间不仅仅是天线的切换时间,应该还包含了RF和基带的切换时间,所以总体时间才“较长”的。

另外,虽然802.11g只采用了能量检测。但是802.11g这个兼容问题一直到现在(2020)还是存在的,所以当下的话应该是能量检测载波检测同时都做的,当时是为了避免复杂,但是后来从802.11n开始,为了协议的稳定性,还是都要做一遍的。

802.11g的Slot和SIFS

最后还有一个Slot时间的兼容问题和SIFS,这两者都是影响到DCF的工作机制的,所以我们需要理清楚。

如上图所示,这里直接截的协议的图,在802.11b/g共存的场景中,Slot时间用长的,即20us,只有802.11g-only(当时叫做Pure-g)的场景下,才用9us的Solt时间。

另外两者的SIFS时间都是一样的,都是10us,SIFS时间实际上是可以决定ACK的制式。这里协议上没有明写,但是从SIFS时间在两种制式下是一样的可以说明,ACK是固定一种制式发送的。

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

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!