摘 要:针对AODVjr算法在路由发现过程中会产生RREQ洪泛,导致节点能量消耗过快的问题,提出了一种改进的ZigBee网络路由算法。改进算法通过邻居表限定RREQ传输范围和父子节点的传递方向,计算路由代价并根据节点剩余能量动态划分所处的能量区域,根据3种能量区域进行差异化路由发现,动态回避剩余能量较低的节点并发现能量较高的节点。仿真实验结果表明,改进算法能实现节点的能量动态平衡,有效控制网络的总体能量消耗,减少死点个数和减缓死点出现的频率。
关键词:ZigBee;能量平衡;剩余能量;路由代价
ZigBee技术是一种近距离、低复杂度、低功耗、低速率和低成本的双向无线通信技术,主要用于距离短、功耗低且传输速率不高的各种电子设备之间进行数据传输以及典型的有周期性数据、间歇性数据和低反应时间数据传输的应用[1-2]。它可工作在2.4 GHz、868 MHz和915 MHz 3个频段上,分别具有最高250 kb/s、20 kb/s和40 kb/s的传输速率,传输距离在10~75 m的范围内。
1 问题提出
ZigBee支持AODVjr算法[3],该算法在路由发现过程中会产生冗余的RREQ,这些多余的RREQ无助于路由发现,反而容易引起RREQ洪泛,增加网络功耗。直接丢弃这些多余的RREQ就能有效避免RREQ洪泛[4-5]。
与AODVjr算法相比,Clsuter-Tree算法仅考虑转发节点与父节点和子节点之间的关系,忽略了邻居节点的跳数优化。这样即使目的节点就在发送节点的一跳范围之内,数据包也必须按照原始拓扑结构传送到目的节点,而不能直接传送到目的节点,导致RREQ叠加洪泛效应非常严重。
另外,距离中心协调器ZC越近的FFD节点,网络深度越小,通信负担越重,需要转发的数据量越多,消耗的能量越多,节点电池能量会过早耗尽。当节点剩余能量少于正常工作所需的能量时,节点自身就不能与其他节点通信,即产生死点,这样,网络断开的可能性就大大增加。
基于以上这些问题,本文提出了一种基于能量优化的ZigBee网络路由算法。
2 算法分析
2.1 路由代价
路由代价是路由发现中当前节点被选择为新路由节点所消耗的能量。路由代价越大,消耗能量越大,成为路由节点的可能性就越低。
结合ZigBee网络,对FFD节点定义统一的路由代价[6],即:
2.3 差异化能量区域
根据最小剩余能量、节点剩余能量和能量充足阈值的定义,划分能量值为能量充足、能量低和能量报警3个区域。
参考文献[7]定义的最小剩余能量对节点网络深度没有进行区分,而网络深度和能量消耗恰好成反比。深度越小的节点,转发的数据量越多,消耗的能量越多,所以要为深度越小的节点预留更多的最小剩余能量。
假设节点初始能量为energy,定义任意节点i的最小剩余能量Emin residual:
(5)更新路由代价、剩余能量值。
(6)方向标志位mark判断。
如果mark=0,说明目的节点位置处于当前节点的后裔节点。如果当前节点是上一节点的父节点,当前节点立即丢弃RREQ;如果当前节点不是上一节点的父节点,则判断目的节点是否是当前节点的后裔节点。如果是,当前节点直接转发RREQ,并更新自身Eresidual;如果不是,更新mark=1,当前节点继续转发RREQ,并更新自身Eresidual。
如果mark=1,说明目的节点位置处于当前节点的父节点。如果当前节点是上一节点的后裔节点,当前节点立即丢弃RREQ;如果当前节点不是上一节点的后裔节点,则判断目的节点是否是当前节点的父节点。如果是,当前节点直接转发RREQ,并更新自身Eresidual;如果不是,更新mark=0,当前节点继续转发RREQ,并更新自身Eresidual。
(7)按照上述流程继续转发RREQ,直到到达目的节点。
(8)目的节点收到RREQ,不再判断剩余能量在哪个能量区域,直接返回RREP。
(9)源节点收到目的节点返回的RREP,即表示当前路由发现成功,立即按照该路径进行数据传输。
4 仿真实验结果
将改进算法与原AODVjr算法以及参考文献[6]算法进行数据比对,得出网络总体能耗以及死点个数比对数据。
仿真试验基于OMNET++平台实现,网络覆盖面积为100 m×100 m,网络节点数为50个,节点随机分布,网络参数Cm=5,Rm=4,Lm=5,每个节点的初始能量为1 000 J。仿真实验结果如图2和图3所示。
仿真结果表明,随着网络持续运行,网络深度较低的节点频繁转发数据,能量消耗逐渐增大。改进算法引入跳数限制和邻居表,将节点剩余能量进行网络深度动态划分,选择局部最小路由跳数的路径进行传输数据,避免把数据传送给能量较低的节点,从而达到节省能量的目的。
在初始阶段,每个节点的能量都处于能量充足区域,没有死点产生。随着时间推移,改进算法能够平衡节点剩余能量,所以出现死点的时间最晚,添加深度影响因子能更有效避开剩余能量低的节点,继而选择能量多的节点进行数据转发,避免网络深度较低的节点过早死亡。
针对ZigBee网络AODVjr算法所产生的RREQ洪泛,提出一种改进路由算法,引入邻居表限定RREQ传输范围和父子节点的传递方向,计算路由代价并根据节点剩余能量动态划分所处的能量区域,根据3种能量区域进行差异化路由发现,动态回避剩余能量较低的节点并发现能量较高的节点。收集所有FFD节点能量,将节点最小剩余能量匹配到网络深度进行动态调整,并动态更新能量区域以优化死点出现频率,根据所处能量区域选择路由策略。
参考文献
[1] ZigBee Alliance. ZigBee specification 2008[DB/OL]. http://www.zigbee.org,2012-08-01.
[2] 瞿雷,刘盛德,胡咸斌.ZigBee技术及应用[M].北京:北京航空航天大学出版社,2007.
[3] AKKAYA K, YOUNIS M. A survey on routing protocols for wireless sensor networks[J]. Ad Hoc Networks, 2005, 3(3): 325-349.
[4] IEEE STD 802.15.4-2006, Wireless Medium Access Control (MAC) and Physical Layer(PHY) Specifications for Low Rate Wireless Personal Area Networks(WPANs)[S].
[5] FECHNER J. Using ZigBee for industrial control systems[C]. International Conference on Power Electronics Intelligent Motion and Power Quality, 2006:61-62.
[6] 李予东,黄宏光,向西西. 基于能量平衡的ZigBee路由算法优化[J].计算机工程与设计,2011,32(2):397-400.
[7] 班艳丽,柴乔林,王琛.基于能量平衡的ZigBee网络树路由算法[J].计算机应用,2008,28(11):2791-2794.
[8] 谢川.基于ZigBee的AODVjr算法研究[J].计算机工程,2011,37(10):87-89.