首页 > 代码库 > 802.11协议精读12:初探协议性能
802.11协议精读12:初探协议性能
序言
在初始的802.11协议版本之后,陆续更新的802.11e,以及802.11n以及更新的802.11技术,其都是基于改善当前802.11协议的缺陷不断进行改进的。为了理解这些改进,我们首先要理解802.11存在的一些问题,其中一个主要的问题就是性能问题。
本文我们先简单介绍802.11中一个常见问题,即路由器的宣称速率不等于实际速率的问题,然后我们具体分析一下这个宣称速率(即物理层速率)的计算方法。在后面一篇文章中,我们会介绍用数学方法对该吞吐量具体进行估计的方法,即Bianchi模型。
PS:由于不是论文,所以本文还是以理解为主,对于表述和定义不追求毫无瑕疵,故有错误的话,还请见谅。
802.11的实际速率(即MAC层吞吐量)
首先介绍一下802.11实际速率的定义,为了描述准确一些,我们一般称该实际速率为MAC层的吞吐量,如下图(参考Ekahau - Wi-Fi Capacity Analysis for 802.11ac and 802.11n)。
MAC层吞吐量:传输真实数据(即上图的Data,实际上对应MSDU部分)的传输速率,不好包含图上所述的overhead部分。
如同之前我们介绍DCF以及CSMA/CA一样,在DCF的传输过程中,需要经过DIFS,Backoff,PPDU(MPDU+PHY Header),SIFS以及ACK这样几个过程。这些过程实际上都是作为MAC层协议的组成部分,而不属于真正的数据传输部分。我们统称这些MAC层的损耗叫做overhead,如果这些overhead越少且能够保证协议的基本性能(比如冲突概率)不变,那么该MAC协议的性能也就越优。为了更一般的对该性能作为参考,我们可以定义归一化的MAC层吞吐量,即MAC层的效率。
MAC层传输效率:传输真实数据(Data)的时间占总传输时间(Overhead + Data)的比例。
以下我们给出一个具体的示例进行参考:
在上图(左)中,Payload transmission即真实数据部分(即绿色的部分,对应之前图中的Data),该绿色部分只占整个传输时间的大约12%,是很少的一个部分。在上图(右)中,由于采用了帧聚合技术,所以MAC层性能有一定的提高,可以增加到49%左右。
一般路由器上所标注的都是物理层的传输速率,但是这个速率是不可完全到达的,其真实有效的部分实际上是物理层速率乘以MAC层传输效率的一个结果。上图这里的12%与49%仅仅是一个参考,其性能我们可以更准确的用Bianchi模型分析出来。
因为之前在802.11协议精读2:DCF与CSMA/CA,我们已经介绍了DCF的工作模式,所以我们就简单分析Overhead中不同的组成部分:
- Physical layer wait times(对应时序图,DIFS,Backoff,SIFS):这里实际上是指802.11协议定义的接入前需要等待的一段时间。由于无线信道只有一个,好比一个教室一样,如果有两个同学同时说话,那么老师就无法听清楚两者的说话,故需要设置Backoff的机制来避免碰撞。
- Physical layer frame(对应时序图,PHY):一个802.11数据帧的最开始是物理层的头部(PHY),其是用来传递一些具体接收MPDU时候需要的参数。协议中,一般物理层头部都是采用最低速率进行发送(即公共已知的,比如6Mbps),而上层数据的速率是包含在数据包内部的(比如54Mbps)。由于该PHY的采用低速传输,所以占总时间的比重较大。该物理层头部具体的组成可以参考(802.11协议精读6:802.11b的发送过程与接收过程,802.11协议精读7:802.11a/g的发送过程与接收过程)。
- Mac layer overhead(对应时序图,MAC header,FCS,ACK):主要是MAC层中的一些参数,用来标识是哪个节点进行传输以及传输目的为哪个节点,同时还包含了一些MAC层的控制信息,同时该部分时间还包含了ACK反馈的时间。由于MAC头部是以高速率进行发送的,所以占时间的比重较少。
- Retransmission frame(时序图中未体现):在802.11中是有可能存在传输失败的,比如(信号质量差或者发生碰撞)。在冲突之后,节点是需要对数据进行重传。重传的过程是一个完整的重新传输的过程,从而也会浪费更多的时间。为了减少重传时间这样比较大的时间浪费,协议设计时就会尽量减少发生重传的概率。
以上都是一个简单的分析,之后我们会在介绍Bianchi模型时进行更具体的分析。
802.11的物理层速率
前面我们叙述了一下802.11实际速率,即MAC层吞吐量的部分。以下我们着重介绍一下802.11的物理层速率以及其具体计算方法。在802.11中一共规定了4中基本工作模式(DSSS,FHSS,IR,以及OFDM),其中基于DSSS的802.11b以及基于OFDM的802.11a/g/n/ac都被较多的使用。本节我们分别以802.11b以及802.11g举例介绍下计算方式。
DSSS(802.11b)
DSSS是基于直序扩频的工作方式,其中每一个数据Bit都被映射到一个扩频序列进行发送。扩频序列是一个特殊的二元脉冲序列,其中每一个脉冲我们称之为一个码片(chip)。在这个码片内的那个1和0是不承载信息(即数据Bit),信息是通过识别整个码片来传递的,即多个码片代表一个数据Bit。在802.11b中,采用了Barker码和CCK码这两种扩频序列。在802.11b中,码片速率(chip rate)代表每秒发送或者接收的码片数目,协议中为11Mchip/s。
如上图,符号/码片比对应特定的扩频编码方式(包含扩频序列和编码方式)。
DSSS物理层的速率 = 调制阶数 * 码片速率 * 符号/编码比
以上图的802.11b为例,调制阶数是DBPSK即为1,符号/码片比为1/11(即默认的barker码,用11位的扩频序列代表1个bit),故 1 * 1 * 11Mchip/s = 11Mbps。
OFDM(802.11g)
OFDM是采用正交子载波进行工作的一种模式,即将整个数据信道分解成很多个子载波,这些子载波在数学上是正交的,比如在802.11a中,有用的数据子载波就是48个(详细的是64个子载波,其中48个是数据子载波,4个导频子载波,1个DC子载波不使用,其余的都是用来做保护的虚拟子载波,具体图例参考802.11协议精读8:再论802.11a/g的发送过程与接收过程)。
在OFDM机制下,发送方发送的实际上是一个个symbol,比如一个帧就是由 [ symbol_1 symbol_2 symbol_3 ... symbol_xx],这样组成的,当子载波给定的情况下(比如802.11a就是固定48个有效子载波),那么其symbol的周期就是固定的,不会随着速率变化而变化,在802.11a中,该symbol周期就是4us。在给定symbol周期的情况下,发送速率实际上是由这个symbol上所能够携带的信息量决定的,而这个信息量又是又调制方式和编码速率决定的。
如上图,这里的调制就是对应的调制方式,FEC速率就是对应的编码速率。
OFDM物理层的速率 = (数据子载波数目 * 调制阶数 * 编码效率) / (symbol周期)
以上图的802.11a为例,数据子载波数目为48个,调制阶数是16QAM即为4,编码速率为1/2(可以简单理解编码速率为冗余度,即将1个bit传输2次,避免错误),故 [ 48*4*(1/2) ] / 4us = 24Mbps。若速率越高,那么对信号质量的要求越高(即灵敏度要求越高,参考下图,07版协议第617页)。
其中Minimum sensitivity (dBm) 一栏就描述的是接收方需要的接收灵敏度,该数值也高(比如-65dBm就比-82dBm要高17dB)。信号越好,传输速率才可以达到更高。
802.11协议精读12:初探协议性能