DCF 机制是 IEEE 802.11 协议的 MAC 层接入机制的核心。对其进行理论分析式进行 IEEE 802.11 协议改进与重新设计的基础。Bianchi [1] 的一篇经典论文提出了一种基于 Markov 模型的 DCF 机制性能分析方法。这篇经典论文有超过 1 万次应用,可以说是相关领域的必读论文。这篇文章针对这个 Markov 模型进行简单介绍。读者应当自行具备 Markov 模型的基本知识。
1 关于 DCF 机制
DCF 机制的全称是 Distributed coordination function,这个机制的核心是指数退避方法,并且定义了 ACK,RTS,CTS 机制来进一步增强接入过程的可靠性。这个机制是 IEEE 802.11 协议基础中的基础。笔者在这里不做过多叙述,可以阅读相关论文和技术标准。
2 一维马尔科夫模型
一维马尔科夫链主要应用于广播消息的性能分析。在广播通信中,不存在 ACK 机制,因此发送者无法判断发送是否,因此也就无法增加退避窗口并且发起重传。这里整理的一维马尔科夫过程的研究主要来自于[2],同时包含饱和以及不饱和场景的性能分析。
网络结构为的单跳 Adhoc 网络,节点总数为。传输环境为:a two-ray propagation model with no hidden terminal or capture effects,即所有的包丢失都是由于碰撞(Collision)导致的。假设每个节点每次只能缓存一个数据包,且包的到达过程为到达率为的 Poisson 过程,
如 图 1 所示,退避窗口为,意味着退避状态一共有个,以及一个额外的 Idle 状态(记为)。同时记包的到达概率为,信道繁忙的概率为,则有下面的概率转移矩阵:
下面求解稳态分布(Idle 状态的稳态概率为),我们通过转移概率可以得到如下的方程:
当 backoff counter 为 0 时节点开发发送,则为传输概率(transmission probability) 。通过上面的三个公式组成的方程,我们可以得到:
在得到传输概率以后,通过经典文章[1]我们可以计算吞吐率性能。不过我们在这里的模型中增加了 Idle 状态,因此分析会有一点不同。
记为信道繁忙的概率,为传输成功的概率,则:
按照[1]的方法,将两次 backoff 状态之间的间隔定义为一个 slot(virtual slot),则 virtual slot 可能包含一个空的 slot,一次冲突,或者一次成功的发送。那么有:
由于在广播中,没有 RTS/CTS,也没有 ACK,那么一次冲突和一次成功发送占用信道的时间是一样的:
这里为物理层帧头和 MAC 层帧头的大小,为发送速率。由于我们假定包的生成过程是 Poisson 过程,则
通过联立求解非线性方程组,我们可以得到归一化吞吐率性能
上面描述的是非饱和状态下的性能计算过程,但是当 趋近于无穷大,即 趋向于 1 时,即可以得到饱和场景下的通信性能。
3 二维马尔科夫模型
3.1 System Model
沿用了 Bianchi 的假设条件,包括有限数量的通信节点(个)以及理想信道条件。这篇文章中研究的是饱和条件下的稳态性能。饱和条件意味着对于每个节点,当其完成一次传输时,立刻就有一个新的包等待传输。
文章采用的 DCF 机制是经典的 DCF 机制,核心特点包括指数增长的退避窗口,在退避期间信道繁忙时,退避计数器的值冻结。退避窗口到达最大以后,停止增长。若发送失败,则窗口保持最大值。反之,如果发送成功,则重置退避窗口。
随机变量的定义则如下:定义为在 t 时隙上的退避计数器取值。每个节点退避窗口的定义为 即共有个退避阶段(backoff stage)。为用来表示退避阶段的随机变量。那么二元随机过程构成二维离散马尔科夫链。记条件碰撞概率为,信道繁忙概率为。假定与与退避过程无关。当和比较大时此假设更加准确。
二元随机过程的状态值记为。其中, 其中。模型中还存在另一个状态。这个状态代表当退避计数器为 0,且经过 DIFS 时间后信道空闲时,节点会在当前时隙立即发送数据。这个状态刻画了此行为。这个状态未在 Bianchi 的模型中引入。
概率转移图如下:
转移概率为:
其中:
- 第一项指经过前一个成功的发送之后又观察到信道空闲并立刻发送当前数据包;
- 第二项指经过前一个成功的发送之后发送当前数据包时发现信道繁忙或者发送产生了碰撞,从而进入退避状态;
- 第三项表示在退避计数器递减过程中发现信道繁忙,故冻结计数器值;
- 第四项表示退避计数器在空闲信道下递减;
- 第五项表示退避计数器到 0 之后,当前包发送成功,但是发现发送下一个数据包时信道繁忙;
- 第六项表示退避计数器到 0 之后,当前包发送成功且被成功接收,且检测到信道空闲。
- 第七项表示退避计数器到 0 之后传输失败,增加退避窗口;
- 第八项表示达到了最大退避窗口后,传输失败,但是退避窗口不再增加。
接下来我们需要计算稳态概率分布。记平稳分布为。对于平稳分布我们有如下的关系:
然后使用正则化条件
经过推导可以得到
已知平稳分布以后,我们可以计算对于某个节点任意时隙的传输概率
当退避计数器到 0 时,节点即会尝试发送数据包。
这个公式全部展开也非常长,不过也是简单的多项式计算
进而得到碰撞概率为
信道繁忙的概率为
将及代入可以得到关于的非线性方程。此方程可以通过数值方法求解。
3.2 性能分析
类似 Bianchi 的做法,这里认为对于每一次传输,无论成功与非,都视为一个更新过程。因此,可以计算相邻两次传输之间的 CSMA/CA 协议的吞吐率。此时吞吐率可以表达为:
其中,为 Payload 的平均大小。为成功传输的平均时间,为冲突的平均持续时间。为传输成功的概率。而则表示在传输发生之前由于退避引入的空余时隙的长度。一般我们假定包的大小都是相同的,即。和的值取决于具体的 DCF 机制:
其中为帧头,为传输延时。传输成功要要求有且仅有一个节点参与传输,故
最后:
注意这里的所有时间变量都是表示的时隙数量。通过上面的式子我们可以计算出吞吐率。
更新过程: 相比泊松过程,更新过程约束更少,算是对泊松过程的一个推广。我们知道下面的几个定义是可以推出泊松过程的:
- 随机变量独立同分布(i.i.d),服从的是参数为指数分布;对应到达时间间隔
- 随机变量;对应到达时间
- 随机过程。对应发生次数。
类比过程,可以得到更新过程的定义,仅仅把 1 中的随机变量服从的指数分布去掉,不指定具体的分布,后续的 2,3 保持不变,这样的过程就是更新过程。而泊松过程是更新过程的一个特例吧! 来源
3.3 延时分析
令随机变量代表延时,其均值为。平均延时可以通过如下公式进行计算:
其中为一个数据包在最终被接收前经过的冲突的次数。为在繁忙的信道条件下,一个节点在访问信道前经过的退避延时的平均值(包含在空闲条件下需要等待的时隙以及在繁忙条件下需要冻结退避计数器的时长)。为在发生碰撞时,再次访问信道前需要等待的时间。而和的定义与上一部分吞吐率分析中定义的一致。平均碰撞次数可以用简单一维马尔科夫链的方法计算得到:
平均退避掩饰则取决于退避计数器的值及冻结时长。假设退避状态为,则需要等带个空时隙才能发送。那么平均退避延时可以按照如下方式计算:
根据 System Model 中得到的平稳分布我们可以得到
另外我们还需要计算冻结退避计数器的时间。这一时间的平均值为。为了计算这一均值,我们需要先计算,即退避计数器到 0 前会检测到的传输次数。注意到为退避计数器退避到 0 的平均时间(时隙数),而为一次传输前需要经过的空闲时隙的数量,则我们可以计算
则
结合和,可以得到
最后,的取值规则如下:
至此我们计算得到了延时需要的所有参数。