APP下载

基于拥塞控制的无线传感器网络能耗优化路由算法

2020-10-16李建坡张庆华张展图尹月琴张华健

东北电力大学学报 2020年4期
关键词:缓冲区队列数据包

李建坡,张庆华,张展图,尹月琴,张华健

(1.东北电力大学电气工程学院,吉林 吉林 132012;2.西安石油大学,陕西 西安 710000;3.国网陕西省电力公司延安供电公司,陕西 延安 716000)

能耗优化是无线传感器网络中的一项关键技术,其中,合理的路由协议可以有效实现WSN能耗优化[1-2].现有的分簇式路由协议多基于网络层进行能耗优化设计[3],未考虑MAC(Medium Acess Control)层缓冲区队列长度等信息对路由的影响,忽略了拥塞问题,从而导致较高的分组丢失,并且会引发数据传输碰撞以及重传,增加能量消耗.为了解决网络拥塞对路由的影响,DPC(Distributed Power Control)协议[4]在路由中引入了数据包队列触发器,当发生拥塞状况后,节点会通过其控制数据包流,从而解决拥塞的问题;DCCA(Distributed Congestion Feedback Algorithm)协议[5]首先通过在MAC层増加拥塞监控机制,在网络层引入数据包控制方法,来决定如何对数据包进行处理;ACSBMR(Energy-Balanced Multi-path Routing Protocol based on Ant Colony System)协议[6]在路由发现过程中,引入MAC层缓冲区队列长度信息,并且综合考虑节点最小剩余能量、平均剩余能量、节点距离信息等因素作为启发式函数,使节点可以根据缓冲区的长度动态调节自身的路由路径,但是该方法缺少拥塞检测的机制,不能够及时对网络的拥塞情况作出准确判断.

综上所述,针对路由算法中存在的拥塞问题,虽然提出了一些跨层拥塞控制方法,但是这些方法在对拥塞控制机制进行研究的同时,往往缺少对能耗方面的考虑,而且拥塞检测过程较为复杂,在解决拥塞问题的同时产生了许多额外的能量开销.本文通过网络层与MAC层的跨层设计思想,提出了一种基于拥塞控制的无线传感器网络能耗优化路由算法(CCERA),该算法提出了一种基于跨层设计的拥塞控制机制,引入MAC层缓冲区队列长度信息,利用数据传输前的信息交互过程检测网络中的拥塞问题并进行拥塞解除.

1 WSN拥塞控制机制

拥塞控制是WSN中的一项关键技术,通常拥塞控制包括三个步骤.

(1)拥塞检测

(1)

(2)

(3)

(2)拥塞通告

显示拥塞通告是将拥塞信息单独成一类帧,CODA[8]协议(Congestion Detection and Avoidance)使用backpressure帧显式通告.隐式拥塞通告是将拥塞信息捎带在控制帧或普通分组里,在算法ESRT(Event-to-sink Reliable Transport)[9]中,当检测到子节点拥塞后,在相应节点所发送的分组中将拥塞位设置为1,这样即可传递拥塞信息.

(3)拥塞解除

CODA协议综合了开闭环拥塞控制方法.传输路径上某一个节点或区域检测到拥塞后,采用开环逐级拥塞控制,拥塞区域或节点首先调整发送速率,收到拥塞信息的节点降低速率直到拥塞节点或区域不再存在拥塞状况为止.CCF[10]协议(Congestion Control and Fairness)采用基于速率预分配方法.带有拥塞信息的数据帧结构示意图,如图1所示.在数据帧中加入拥塞位,即可判断网络是否处于拥塞状态.

图1 带有拥塞位的数据帧结构图

以上方案都可以有效避免WSN拥塞,但是这些方法不适合事件驱动型的WSN,因为在特殊事件的驱动下,需要数据及时发送出去,通过调节速率会影响消息地及时发送.同时,这些方法也不适用于分簇式路由协议,此外拥塞的检测过程中频繁的信息交互会产生额外的能量消耗,并且检测的实时性差,对缓冲区队列的适应性差.

2 基于拥塞控制的WSN跨层路由协议

2.1 基于缓冲区队列长度的拥塞检测策略

在分簇式路由协议的簇间数据传输阶段,如果多个簇头都选择同一个簇头作为中继节点,那么就可能造成中继节点因数据量过大导致缓冲区满而丢失数据从而产生了拥塞问题.在簇头节点收集完自身成员节点数据之后,再将数据发送给其下一跳节点或基站.为了在发送数据前对拥塞情况进行判断,利用数据传输前的控制信息交换阶段来进行拥塞检测.

提出的改进策略是在节点发送RTS消息之前,先计算自身的缓冲区队列长度Lcur-i,然后将其记录在RTS帧中并发送给通过比较转发代价因子而选举出的中继节点j,中继节点j收到RTS消息后,计算Lcur-j,然后再计算节点i和节点j的缓冲区队列长度之和

Lnew-j=Lcur-i+Lcur-j,

(4)

公式中:Lcur-i为簇头i当前缓冲区队列长度;Lcur-j为簇头j当前的缓冲区队列长度;Lnew-j为节点j的缓冲区队列预计长度,其含义为,如果i将数据全部传输之后,节点j的缓冲区队列长度将变为Lcur-i+Lcur-j.在计算完Lnew-j之后,开始进行拥塞检测,如果

Lnew-j≤Lmax,

(5)

说明此时不会发生拥塞;反之,则会发生拥塞,其中Lmax为缓冲区队列最大长度.

但是,如果此时节j还没有完成簇内数据的收集工作,此时,节点j内的成员节点正在向j发送数据,说明此时节点j的缓冲区队列正在增长,也就说明根据Lj判断此时节点j并不处于拥塞状态,但是在节点i向节点j发送数据的时候,节点j由于仍在收集数据,可能会发生拥塞.所以这里引入一个拥塞指数

(6)

公式中:Llast-j为节点j在一个时隙Tslot之前的缓冲区长度,拥塞指数ρ反映的是一段时间缓冲区长度的变化率,在收到第一个RTS的时刻,计算一个时隙之前的缓冲区长度Llast-j,并计算拥塞指数.如果满足ρ=0说明当前缓冲区队列长度未发生变化,簇头节点j已经完成了簇内的数据收集工作;如果ρ>0说明此时簇头节点正在收集成员节点的数据,簇头节点i需要退避一段时间再发送RTS进行拥塞检测,退避的时间表示为

Tbackoff=|ni-nj|·Tslot,

(7)

公式中:Tslot为一个时隙的时间;Tbackoff为退避时间;ni,nj为成员节点数目.在退避Tbackoff之后,再发送RTS给节点j进行拥塞的检测.

通过上述过程,簇头节点j完成了首次拥塞检测,并且在第一次检测处于无拥塞状态后将ρ更新为0.为了节约能量,簇头需要收集所有其他簇头转发过来的数据后再发送给基站,所以在第一次拥塞检测之后,如果检测到此时节点处于无拥塞状态,即将当前的缓冲区队列长度值更新为Lnew-j,如果再有其他节点需向簇头节点j发送数据,节点j收到新的RTS后,在拥塞检测的过程中,将新的Lcur-j作为当前缓冲区队列长度.之后每收到一个新的簇头节点发来的RTS,便将新的簇头节点的缓冲区队列长度与当前缓冲区队列进行求和,并作为新的Lcur-j用于下一个簇头节点的拥塞检测.

通过以上方法,最终制定出一个基于缓冲区队列长度与拥塞指数的联合拥塞检测机制.

图2 带有拥塞位的CTS帧结构图

2.2 拥塞通告与拥塞解除阶段

带有拥塞位的CTS帧结构图,如图2所示.CN即为加入的拥塞位,其他位与图1的数据帧结构类似.CN=0为无拥塞,CN=1为发生拥塞.这种拥塞通告方法不需要节点之间进行频繁的信息交互,而且不需要单独发送拥塞信息,从而避免了由此产生的额外能量开销.

源节点在收到带有拥塞信息的CTS消息后,通过读取拥塞位的数值判断节点的拥塞状态.由于中继节点是在得到所有来自上一跳数据后再把它们统一发给基站,所以调节传输速率无法解除拥塞,在检测到拥塞后,源节点直接采用单跳的传输方式将数据发送给基站.拥塞控制机制流程图,如图3所示.

图3 拥塞控制机制流程图

3 仿真结果分析

本算法在NS2环境下进行仿真,在100 m2×100 m2的区域内(M=100 m),随机部署100个节点(N=100),所有的节点初始能量是相等的(Emax=2J),每一轮每一个节点产生的数据包数目为20个.

基于拥塞控制的无线传感器网络能耗优化路由算法(CCERA)与其他算法在发送数据量上性能和生命周期的对比,如图4所示.与LEACH和UCRA算法相比,本算法所发的数据包分别增加了约204.4%和139.2%,网络生命周期分别延长了约240.7%和104.9%;与FPCRA算法相比,虽然网络生命周期缩短了约2.4%,但所发的数据包增加了约7.2%.

CCERA在存活节点数量和网络生命周期方面性能对比,如图5所示.与LEACH和UCRA算法相比,本算法的死亡节点出现时间分别推迟了100%、336.4%;与FPCRA算法相比,亡节点出现时间推迟了20%.这是因为在网络前期,簇头数目较多,出现拥塞的总次数也在增加,用于解除拥塞从而提高数据包数量的能耗也在增加.在网络的中后期,由于节点数目逐渐减少,簇头数目也在逐渐减少,拥塞情况在逐渐降低,用于解除拥塞的能耗逐渐降低.所以,网络生存总周期与FPCRA相差并不多.

图4 数据包发送数量与生命周期上的对比 图5 存活节点数量和网络生命周期上的对比

当部署的节点增加到200个时,CCERA算法与其他算法在发送数据量上性能的对比,如图6所示.与UCRA算法相比,本算法所发的数据包数目增加了约300%,与FPCRA算法相比,所发的数据包增加了约33%.从图中可以看出,在200个节点的情况下,本文所提出的拥塞检测策略更好地避免了拥塞情况的发生.

与UCRA算法相比,存活节点数量和网络生命周期上的对比,如图7所示.由图7可知,本算法的网络生命周期延长了约83%;与FPCRA算法相比,本算法的网络生命周期延长了约16%.从图7中可以看出,本算法提出的基于拥塞控制的簇间传输策略在区域中拥有更多节点的情况下,节能效果更明显.

图6 各算法在数据包发送数目上的对比 图7 存活节点数量和网络生命周期上的对比

4 总 结

本文提出了一种基于拥塞控制的无线传感器网络能耗优化路由算法(CCERA),在基于缓冲区队列长度的拥塞检测机制方面,通过跨层设计思想,在路由算法中引入MAC层缓冲区队列长度信息,提出了拥塞指数的概念来体现缓冲区队列长度的变化趋势,通过数据发送前的控制信息交换阶段完成拥塞的检测;在拥塞通告与拥塞解除方面,本算法采用隐式拥塞通告方法以及单跳传输解除方法.仿真实验表明,本算法相比于LEACH、UCRA、FPCRA算法,数据包发送量至少提高了33%,网络生命周期至少提高了16%.一定程度上解决了拥塞问题,并延长了网络的生命周期.

猜你喜欢

缓冲区队列数据包
二维隐蔽时间信道构建的研究*
民用飞机飞行模拟机数据包试飞任务优化结合方法研究
队列队形体育教案
队列里的小秘密
基于多队列切换的SDN拥塞控制*
C#串口高效可靠的接收方案设计
缓冲区溢出漏洞攻击及其对策探析
青春的头屑
初涉缓冲区
本期导读