文献标识码:A
文章编号: 0258-7998(2012)07-0140-04
ZigBee网络协议在PHY层和MAC层采用802.15.4协议标准,在EWK(网络)层和APL(应用)层则采用由ZigBee联盟定义的ZigBee协议标准,具有低功耗、低速率、高稳健、可靠、灵活的特点[1]。随着ZigBee协议的不断升级,基于ZigBee技术的无线传感网络(简称ZigBee网络)将在家庭网络、工业控制、工业无线定位、汽车自动化、楼宇自动化和医疗设备等多个领域实现更广泛的应用[2-3]。本文研究的重点是将ZigBee网络与其他网络进行链接,提出一种有效降低节点能耗、增加网络安全、延长网络生存时间的高效路由算法。结合AODVJr(按需路由协议的简化版)和树路由算法,并将SRP(安全远程密码协议)算法[4]加以考虑,提出一种具有降低网络开销、提高网络安全的路由安全协议。
1 节能算法的提出
ZigBee网络中,若路由节点的电池能量消耗较大,会导致网络分割时刻提前,使网络的吞吐量、传输时延等性能指标急剧恶化。适当地降低网络路由节点的能量开销对于网络具有更大的优化效果。
AODVJr算法继承了AODV(按需路由协议)算法的特性,同时在AODV算法基础上取消了Hello包的发送,并规定只有目的节点对RREQ(路由请求)包进行应答,中间节点不会产生RREP(路由响应)。通过采用这种端到端的通信方式,可以大大降低网络的开销。虽然AODVJr算法在寻找路径的过程中有较大的优势,然而该算法在路由发现过程中仍然会产生一些多余的RREQ分组,该分组虽然也参与了路由发现过程,然而却对最终结果却不起任何作用,如果在路由发现过程中去除掉这些RREQ包,将会有效地降低节点的开销,增加网络的生存时间。
问题的提出:
(1)按照图1所示的树路由传输规律,节点3发送数据给节点17要经过3跳,如果在RREQ分组跳数大于4的情况下仍然继续泛洪,则对最终找到路径没有任何作用;
(2)当节点12需要发送数据到节点7时,若节点12没有到节点7的路由表项,则节点12向其所有的邻居节点发送RREQ分组进行路由发现过程。由于节点7并不是节点12的后裔节点,所以节点12向其后裔节点发送RREQ分组对于需找到节点7的最优路径丝毫不起任何作用;
(3)若节点12发送数据到其后裔节点19,从而节点12发送RREQ分组到其父节点3来寻找最优路径所起的作用也不大。
(4)由于AODVJr协议过于简化,没有考虑路由的安全性,使得路径信息可能被更改,数据在传输过程中也极有可能被丢弃或者篡改,不利于安全机制的运行。
针对这些问题,本文将TR算法和AODVJr算法相结合,并适当限制路由过程中RREQ分组的泛洪,规定在改进算法中RREQ的最大传输范围为网络最大深度L的2倍,这样当RREQ的传输范围超过2L时,节点便丢弃接收到的RREQ分组。
2 降低能耗的安全算法设计
在上述提出降低能耗的基础上,结合SRP安全算法,使得改进的算法既起到降低能耗又能保障路径传输数据的安全。由于SRP与AODVJr在路由机制上略有差异,本文在此对SRP算法也进行了一些适用于AODVJr的改进:
(1)考虑到AODVJr协议禁止中间节点对路由请求作出响应,本文也将SRP算法限制中间节点对路由请求作出响应。
(2)根据AODVJr协议中的“最快即最好”原则,本文同样对SRP进行一些设定,即目的节点只响应最先收到的RREQ,对之后接收到的全部丢掉。
(3)考虑到AODVJr协议中的RREP(路由响应)报文只能以单播的方式传送回源节点,因此在SRP算法中,目的节点发出的RREP包只能以逆着接收到RREQ报文来的路径传回到源节点。
在SRP和AODVJr协议基础上,对RREQ分组中增加flag标志位和随机问询标志QID,flag=0表示当前节点的父节点不应该转发RREQ分组,flag=1表示当前节点的后裔节点不宜转发RREQ分组。为避免中间节点将同一问询转发多次或者目的节点对同一问询作出多次响应,应使源节点在同一次发出的问询获得相同的标志。结合树路由算法、AODVJr协议和SRP协议的改进路由算法步骤如下:
(1)如果ZigBee网络中的RFD(终端)节点要发送数据到该网络中的其他节点,则RFD首先将数据发送给其具有路由功能的父节点,再由其父节点进行转发。
(2)如果具有路由功能的FFD节点要发送数据到网络中的其他节点,则RFD首先查看目的节点是否在邻居列表中,如果没有则启动路由发现请求;否则,直接进行数据转发。
(3)将源节点IP地址、目的节点IP地址、问询标示QID地址、flag标志位、SRP消息识别码MAC和初始值为0的跳数值hops加入到RREQ包中。其中QID是在源节点发起RREQ时激发产生的一个32 bit随机问询标志,在路由发现阶段,中间节点通过该标志来识别路由请求,如果转发成功,则跳数值hops加1。而MAC码是由目的节点地址,源节点地址和共享的钥匙KS、D作为单向散列函数的输入,通过计算其输出[6],可以获得相应的MAC码。
(4)当源节点需要与另一节点进行通信而又没有通往该节点的路径信息时,源节点便向邻居节点广播一个路由请求消息RREQ发起一个路径寻找过程[5]。
(5)假如节点M作为中间转发节点收到节点N发送来的RREQ包时,首先查看分组RREQ分组里的跳数值和对随机问询标志QID提取,如果跳数hops>2L或者是当QID与节点问询表的某个入口相符合时,则丢弃该RREQ包。
(6)否则若QID与节点问询表的某个入口不相符合且hops<2L时,节点M继续提取出源节点和目的节点地址,与QID一起在问询表中创建一个入口,且同时查看RREQ包里的flag值:如果flag=0,则说明N的父节点不适合转发此RREQ包;如果flag=1,说明N的子节点不适合转发RREQ。
(7) 路径上的每个中间节点都会重复步骤(5)~(6),同时检测从邻节点接收到问询的频率次数。检测到的频率次数大于预先设定的一个频率次数值时,可以将该邻居节点看成一个坏节点而丢弃,这样坏节点就达不到消耗网络资源、消耗网络性能的目的了。
(8) 当目的节点接收到RREQ包时,利用改进的SRP算法来验证该RREQ是否有效,如果有效则目的节点开始构造响应的路由响应RREP,并将该响应RREP逆着RREQ来的路径传输回源节点。
(9) 当接收到来自目的节点的路由响应时,源节点先检查RREP中源节点地址、目的地址和问询标志QID,如果与当前最迫切的问询不一致,则将RREP丢弃;若一致,则源节点利用参考文献[6]计算消息识别码MAC。若结果与RREP中的MAC码相符合,则源节点就会认为路由请求确实完好无损地到达了目的节点,并且目的节点的响应能够沿着该路径被源节点S成功,从而证实了该连接信息的有效性。具体的实现过程如图2、图3、图4所示。
3 改进算法的仿真及图形分析
网络仿真软件采用NS-2对改进后的ZigBee算法进行模拟实验。模拟的区域是1 000 m×1 000 m,节点的总数为100个,随机分布在这个区域内,每个节点的初始能量均为1 000 J,数据包长度为128 bit,信道传输数据的传输率为250 kb/s。将改进安全算法与传统AODVJr算法的仿真结果进行比较,如图5和图6所示。
图5中,曲线1表示传统的AODVjr路由算法运行时网络消耗的总能量,曲线2表示改进算法运行时网络消耗的总体能量。由于改进算法引入了邻居列表,在路由传输的过程中综合考虑了路由跳数并限制了路由泛洪,在网络运行到6 s时大约节省17.0%的网络总能量。
图6中,曲线3表示传统网络在受到恶意节点攻击时,数据包的丢失率随恶意节点的增多而变化的曲线。曲线4表示由于考虑了网络的路由安全,将SRP算法与AODVJr算法相结合,提高了网络的安全性,即使存在恶意节点的攻击时,数据包的丢失率相对曲线3和会减少很多。而在初始时刻,不存在恶意节点时,曲线3曲线4几乎相聚于零点,因而可以得出在无攻击的恶意节点时,两种算法的丢包率接近,且都非常小。
针对传统的ZigBee路由算法,本文提出一种在传统的ZigBee路由算法的基础上,引入邻居表,在数据传输过程中,考虑了跳数hops,并与SRP算法相结合,通过实验验证了该算法降低了网络总能耗,提高了网络安全。但是该算法仅仅考虑了局部的路由跳数而没有考虑整体的路由跳数的最优化,同时只采用了传统的SRP算法,面对恶意节点的攻击时还不能很好地保护传输数据。今后的工作中,可以在这两方面做进一步的研究。
参考文献
[1] ZigBee Alliance. ZigBee Specification(version 1.1)[S].2006.
[2] 谢川. 基于ZigBee的AODVjr算法研究[J].计算机工程. 2011,37(10):87-89.
[3] 钟永锋,刘永俊. ZigBee无线传感网络[M].北京:北京邮电大学出版社,2011:93-95.
[4] MARSHALL J. An analysis of SRP for mobile Ad Hoc networks[C].Proceeding of the 2002 Internation Multi Conference in Computer Science. Las Vegas,USA.2002.
[5] 戴逸民, 王培康, 陈巍. 通信网的安全理论与技术[M].北京:清华大学出版社,2006:126-246.
[6] 郑东,李祥学,黄征.密码学—密码算法与协议[M].北京:电子工业出版社,2009:84-90.