CSMAca算法.docx
《CSMAca算法.docx》由会员分享,可在线阅读,更多相关《CSMAca算法.docx(11页珍藏版)》请在冰豆网上搜索。
![CSMAca算法.docx](https://file1.bdocx.com/fileroot1/2023-1/30/47a8cca9-a0ed-4cbf-8500-2b3004e6f574/47a8cca9-a0ed-4cbf-8500-2b3004e6f5741.gif)
CSMAca算法
CSMAca算法
CSMA/CA算法
CSMA/CA(CarrierSenseMultipleAccesswithCollisionAvoidance)属于随机竞争类MAC协议,具有算法简单、性能好的特点。
CSMA/CA多用于无线通讯协议,它的中文名称是载波侦听多路访问/冲突避免.它有三个基本的过程:
1)载波侦听,在特定载波频率侦听,空闲时隙发送。
2)多路访问,可以在多个载波频道传输和接收数据。
3)冲突避免,用避免冲突的方式来实现数据可靠传输。
CSMA/CA利用ACK信号来避免冲突的发生,也就是说,只有当客户端收到网络上返回的ACK信号后才确认送出的数据已经正确到达目的地址。
CSMA/CA协议的工作流程分为两个分别是:
1.送出数据前,监听媒体状态,等没有人使用媒体,维持一段时间后,才送出数据。
由於每个设备采用的随机时间不同,所以可以减少冲突的机会。
2.送出数据前,先送一段小小的请求传送报文(RTS:
RequesttoSend)给目标端,等待目标端回应CTS:
CleartoSend报文后,才开始传送。
利用RTS-CTS握手(handshake)程序,确保接下来传送资料时,不会被碰撞。
同时由於RTS-CTS封包都很小,让传送的无效开销变小。
在CAP内发送命令帧之前和数据发送时都要求使用CSMA/CA算法来竞争信道。
确认帧,信标帧和CFP内传输的数据帧不需要使用CSMA/CA算法。
在使用信标的PAN中,MAC层采用时隙CSMA/CA算法在CAP内传输数据;而在不使用信标的PAN中,MAC采用非时隙CSMA/CA算法访问信道。
这两种形式的CSMA/CA算法实现都要用到退避周期的单位时间间隔,这个时间由PIB属性值设置。
在时隙的CSMA/CA算法中,PAN中的每个退避周期的开始边界都应与超帧中的每个时隙开始边界对齐。
并保证物理层的所有数据发送开始于退避周期的边界处。
而非时隙的CSMA/CA算法则与时隙边界无关。
当节点有数据发送时,就要使用CSMA/CA算法进行信道访问,算法的第一步是对三个参数进行初始化设置,然后节点在[0~2macMinBE-1]区间内随机退避几个单位时隙周期,在退避时隙结束后,立即执行信道扫描(CCA),若信道空闲,则CW值减1。
当连续两次都检测到空闲则表示信道空闲。
若检测信道不空闲则CW值置为2,NB的值加1,BE的值在允许范围内加1,若超过最大值,则不再增加。
此时要判断NB的值是不是已经达到设置的最大值,若不是则返回并退避2BE-1个时隙后执行CCA,若是则此次信道接入失败。
时隙CSMA/CA定义了3种信道空闲监测模式:
载波检测,能量门限检测,载波联合能量检测。
1>载波检测——若检测到符合IEEE802.15.4调制和扩频特征的信号,则表示信道忙,否则信道空闲。
2>能量门限检测——直接检测信道信号的能量强度,若能量值大于设定的门限值表示信道忙,否则信道空闲。
3>载波联合能量检测——检测到信道中同时出现以上两个特征时,表示信道忙,否则信道空闲。
一个设备所采用的CCA模式由物理层PIB属性phyCCAMode决定,协议规定CCA中ED门限不得超过接收灵敏度10dB,CCA检测时间为8个符号周期。
不同的参数对网络吞吐量的影响
1.最大退避次数(NB)对吞吐率的影响
CSMA/CA算法中NB值表示信道接入前退避的次数,NB的值初始化0,最大值为MAC层属性设置的macMaxCSMABackoffs值。
当NB值达到最大值时信道还没有检测到连续的2次空闲,则表示尝试信道接入失败。
所以NB
的值的影响由macMaxCSMABackoffs值表现出来。
它的默认值为
4,我们设置macMaxCSMABackoffs值为2,3,4,5分别进行仿真,得到下图:
当节点的网络负载较小时,竞争信道的节点比较少,数据不易产生冲突,网络的平均吞吐率的增长率比较大;随着仿真时间的增加,发送数据的节点增多,网络负载变大,竞争信道的节点比较多,网络的数据碰撞比较大,网络的平均吞吐量的增长率降低。
当设置最大退避次数较小时,成功竞争到信道的概率降低,所以随着最大退避次数的增加,网络的平均吞吐量也相应地增大。
2.退避指数BE的初始化对ZigBee网络吞吐率的影响
当分析BE的值时要考虑两个参数的影响:
一个是minBE;另一个是maxBE。
minBE是每次尝试信道接入时设置的初始值,minBE的默认值为3,分别设置minBE的值为2,3,4进行网络仿真。
分析数据得到吞吐量的仿真如下图:
minBE值固定时,网络吞吐量逐渐增长到一个稳定的值,但是minBE的默认值不是最佳值,随着minBE值的增加,增大了退避时隙(0~2BE-1)的范围,减小了数据碰撞的概率。
网络稳定时,minBE取4时网络的吞吐量比取其他两值大。
maxBE默认值为5,仿真时设置其值为4,5,6。
吞吐量的增长率随着网络运行时间的增长而减小,最终到达一个稳定值。
退避指数较大碰撞较小,在一定程度上提高网络的吞吐量。
在IEEE802.15.4的MAC层中规定所有节点的初始指数一致(macMinBE)。
退避时间在初始范围[0~2macMinBE-1]内随机选取。
BE变化范围由minBE和maxBE值决定,当该算法的其它参数不变的情况下,这两个值决定的范围越大,碰撞的概率越小,吞吐量越大。
初始值设置越大能带来的起始碰撞概率越小,数据传输的越稳定。
3.退避窗口(竞争窗口)CW的值对网络吞吐量的影响
退避窗口CW的值一定时,网络的平均吞吐量会随着网络负载的增加而增大到一个恒定的值。
改变CW的值,网络的吞吐量也会随着值的改变作相应的改变。
CW表示连续信道扫描为空闲的次数,若这个值越大,表示节点竞争信道的时间越长,单位时间网络传输的数据量越小,即网络的平均吞吐量越小。
不同的参数对网络时延的影响
最大退避次数NB对网络平均时延Delay的影响
退避次数的增加加大了网络时延。
因为退避次数的最大值越大,表示一次尝试接入信道可能退避的次数越多,那么因竞争信道而退避消耗的时间越多。
则网络平均时延会相应地增加。
在网络稳定的情况下,当退避次数的最大值固定时,网络的整体趋势是比较稳定的。
退避指数BE的初始化对ZigBee网络平均时延的影响
当minBE值设置得较小时,由于退避时间比较小则产生的时延也比较小,但丢包严重的部分数据要反复的竞争信道或重发才能发送成功,这时导致某些时段数据的时延很大。
minBE值设置相对大时,退避时间较长,产生的时延也较大。
当改变maxBE的值时,网络的时延会随着maxBE的增大而增加。
当网络中maxBE值设置为6时,由于多次竞争失败导致BE值增加,maxBE的值越大,BE取值的上限越大,带来的退避时隙也会越大,由于退避时隙是指数增长的,所以不同值下的网络时延也呈现指数规律。
同时由于某些时段的数据包能达到最大值,则这个时段会产生较大的延时,即时延起伏比较大,对网络产生较大的负面影响。
3.退避窗口CW的值对网络平均时延的影响
当CW等于3时,表示连续三次检测到信道空闲才认为信道是空闲并可以占用信道。
相对于一次检测得到信道空闲来说,连续三次检测到信道空闲的概率较小,需要竞争信道的时间更长,所以延时相对较大。
CW的值设置太大或者太小都会带来网络时延的起伏,使网络不够稳定。
不同的参数对网络丢包率的影响
1.最大退避次数对网络丢包率loss的影响
网络启动后在第8s起节点开始请求发送数据。
此时开始,丢包率的增长较快,当网络达到稳定后,丢包率达到一个稳定的值,当设置为默认值时网络的丢包率约为48%,数据丢包严重。
当设置较大的macCSMABackoffs的值后,再对网络进行仿真,分析得到了较小的丢包率。
相反设置较小的值时,由于竞争信道的次数变小,所以竞争成功的几率变小。
2.退避指数BE的初始化对ZigBee网络丢包率的影响
初始情况下网络经过一个过程到达某一稳定的状态,在这个过程中,丢包率的增长率较大,后期所有节点都启动发送数据,丢包率的增长率逐渐减小到0,达到一个恒定值。
可以得出较大的BE范围边界值能带来相对较小的碰撞,同时也能带来较小的丢包率。
3.退避窗口CW的值对网络丢包率的影响
较大的竞争窗口,能带来较小的冲突概率和丢包率,反之则会带来较大的丢包率,仿真结果表明这个丢包率与窗口大小不呈线性关系。
改进型CSMA/CA机制
当节点进行第i次退避时,退避时间在原算法的基础上除以i-1次退避的次数。
即i次退避的时隙根据i的退避次数自适应地数调整自己的退避时间,提高节点竞争信道的能力。
假设每个节点退避次数相同的概率为pNB,每个节点退避指数相同的率为PBE,两者同时发生的概率为ps,有Ps=PNB*PBE。
那么两者同时发生才会导致发送数据碰撞的可能性。
相对于原算法的退避机制,改进算法在一定程度上减少了节点的碰撞的概率。
在iw中,它体现了数据的优先等级,减少了数据碰撞的概率,通过这两个值能得到更优的退避时间。
竞争类协议的吞吐量S的表达式:
G值描述节点上数据帧的大小和流量。
网络吞吐量S在G2406.0处取得最大值。
马尔可夫模型