基于最小跳数的跨层路由设计与仿真
2015-05-29聂增丽
聂增丽
摘要:本文在分析了最小跳数路由算法的局限性的基础上进行了改进,把能量也作为一个重要的指标加以考虑,提出一种改进方案,基于最小跳数的无线传感器网络路由跨层设计方法,建立了能量约束问题的数学模型,并对能量模型进行了分析,搭建了网络的能量模型、跨层模型和运动模型。利用统计线实现了跨层提取能量数据的方法。利用统计线实现了跨层提取能量数据的方法。综合考虑了能量和路由因素,提出了跨层路由设计方案。最后对该设计方法运用OPNET进行了仿真,证明该方法的正确性和优越性。
关键词:最小跳数;跨层;能量;路由算法
中图分类号:G632文献标识码:B文章编号:1672-1578(2015)05-0005-02
无线传感器网络是由许多分布在工作区域中的体积小,低成本,具有无线通信能力、传输感知和数据处理能力的传感器节点组成的。为了加强对这些节点的控制,还可以设置一个基站,用以获取各个节点的位置信息、探测未知的目标信息。研究无线传感器网络数据传输离不开路由协议,由于传感器节点计算能力、存储空间有限,因此设计的路由协议应该简单有效,使节点能量开销尽量小。
无线传感器网络的路由算法是一个非常活跃的研究领域,基于最小跳数是其中比较重要的研究方向。目前国内外提出了多种基于最小跳数的路由算法。这些路由算法中比较有代表性的是基于最小代价的路由算法。该算法中每个节点只需要维持自己到接收器的最小代价,信息包就可以沿着最小代价路径向网关发送。这个路由算法的缺点是会在网络中引起很多的冗余信息,且没有考虑网络的能量消耗。针对该路由算法的不足和缺点,提出了提出了跨层路由设计方案。
1.最小跳数无线传感器网络建模及仿真
根据最小跳数路由算法的基本原理来搭建我们的仿真平台,画出状态转移图如下图1所示:
(1)当节点开始工作时,首先完成的是对节点的初始化。
(2)节点根据自己的ID号可以知道本节点是不是Sink节点,如果本节点是Sink节点就产生广播包,并发送出去;如果本节点不是,则等待数据包的到达。
(3)节点收到从邻居节点发来的广播包时,比较跳数。如果跳数更小则更新,否则转发。如果节点收到邻居的广播包,而自己正好是这个广播包的源节点,将会丢弃这个广播包,中间节点在第一次从邻居节点收到这个广播包之后,将广播包放置到它自己的广播包缓冲区中,建立指向这个邻居节点的路由表。
依次这样处理广播包就会在网络中进行广播,到达网络广播域的每个节点。再次需要强调的是对于同一个广播包,每个节点只是广播一次,我们在广播包的包格式中加入了序列号,用以区别是不是同一个广播包。
本论文我们用的是OPNET14.5仿真工具,建立无线传感器网络的拓扑模型。OPNET仿真机制在前面一章我们已经讲过,在此不再赘述。我们建立的场景是400m*400m的校园场景如图在此我建立的场景有4个分别是:50,100,150,200个节点,其中传输功率是0.001W,能量门限为-75dBm,节点的最大传输距离:50m,数据包的大小:512bit,整个仿真时间是:100s。Sink节点在最左边,首先是Sink节点以泛洪方式发送广播包,是整个网络的节点都收到广播包,根据最小跳数路由算法建立起节点到Sink节点的路由,5秒后每个节点在0~1秒之间随机向Sink节点发送数据包。并且我们要设置好统计量。如能耗,丢包率,传输时延等。
在不考虑外界因素的影响的前提下,我们运用软件仿真进行通信距离的实际测量得到了通信距离与传感器节点的发射功率的一组数据,如表4.1所示。我们可以看出当我们加大发射功率的时候相应的传送距离也有所增加了,这个符合实际的情况。在本文章以后的研究中我们使用的是传输距离50m,传输的功率是0.001w的这一组。场景中的Sink节点是在场景的最左边,其他的传感器节点随机的分布在400m*400m的场景中。其他的50,150,200场景是类似情况,只是传感器节点的个数,疏密程度不同。
2.基于最小梯度场的路由改进算法
由以上局限性可知,如果数据频繁使用一条路由会使这条路上的节点能量消耗很快,而其他节点得不到利用,造成整个网络负载不均衡。本文在最小跳数算法的基础上,考虑能量因素和负载均衡因素。基于最小跳数的路由算法是其中一个重要分支,它包含两个基本的操作阶段:①路由创建阶段;②数据传送阶段。
2.1路由创建阶段。在路由建立阶段,网关节点sink以flooding方式发送初始化包,在初始化包蔓延传送过程中,建立基于跳数的梯度场[5],一直到采集数据的源节点source;由sink节点在全网广播初始化包,在各传感器节点收到初始化包后建立指向sink节点的反向路由。如图一所示,整个网络由1个sink节点和15个传感器节点组成,初始化包由:源节点地址(src=0),目的节点地址(dest = -1表示广播),下一跳地址(nexthop = 0),跳数(hopcount = 0).sink节点发送初始化包后节点4、节点1和节点8将收到初始化包,收到包后它们分别建立到sink节点的反向路由。例如:节点1的路由表为:src = 1;dest=0;nexthop = 0;hopcount = 1.同理建立节点4、节点8到sink节点的路由表。节点1发送初始化包时只有节点5、节点2和节点9收到,然后做相应的改变即可建立自己到sink节点的路由表。直到全网每个节点都建立了到sink节点的路由表。
从图中我们会发现一些问题,节点9会收到来自节点1和节点8的初始化包,并且这个包是从不同的路径到达的,即节点9到达sink节点有两条不同的路径。如果节点1和节点8同时向节点9发送包会在节点9产生碰撞,从而使节点9收不到某一节点的包,使路由不全,为了避免产生数据包的碰撞,我们应当避免节点1和节点8同时发包。本文使用的是OPNET仿真,可以使用op_pk_send_delayed函数加以解决[6]。节点13等后续节点也是这样处理的。
当然存在某些节点存在多条路径的情况,例如节点9通过节点1到达sink或通过节点8到达sink节点。并且为防止初始化包一直在网络中无限重复传送我们不允许节点发送自己曾经发过的初始化包,并设定max_hopcount加以限制。
2.2数据传送阶段:在数据传送阶段,数据分组以距sink节点的最小跳数为指标,按预先建立的跳数梯度场[7,8],以数据源节点source传送至网关节点sink,传感器节点向sink节点传送数据,选择路由时用距离sink节点的跳数作为标准在有多条路径能够到达sink节点时必须考虑能量因素,避免重复走同一条路径,使某些节点能量迅速耗尽[9]。例如:节点9要往sink节点发数据,会首先向周围节点发送发送数据包请求,发送请求包只能有一跳,即只有邻居节点能够收到。周围节点1,节点8收到请求会将自己的能量剩余值发给节点9,节点9收到能量数据,进行比较,最后决定做那一条路径。
采用文献中的能耗模型,传输k位的数据所消耗的能量为:e=k(e2+e2d2),接收k位的数据所消耗的能量为:e=ke1,其中e1和e2分别是接收和传输系数,通常情况下取e1=50nJ/bit,e2=10pJ/bit/m2 在节点能量低于30%时,我们认为节点死亡[11],该死亡节点向邻居节点发送消息,告诉邻居节点已经死亡,需要重新选路。
3.仿真分析
减少网络中的冗余数据包是节省传感器网络能量的一种很有效的方式。在基于最小跳数的路由算法中,传感器节点需要向所有的邻居节点广播数据包,并有满足要求的节点向sink节点转发[4]。这个过程中将不可避免的产生大量的冗余数据包,基于能量的最小跳数算法通过从nexthop可用节点集中选择一个邻居节点进行数据包的转发,成功克服了广播导致的数据包冗余。节点对路由有较强的控制能力。
本文利用OPNET 14.5进行仿真,建立的场景是1000m×1000m的校园场景,传输功率是0.03w,能量门限为-73.5dBm,节点的最大传输距离是250m,数据包的大小为1024bit,整个仿真时间是100s.从仿真的图像可以看出由于事先建立好了路由使得发送的比特数与接收的比特数相吻合,丢包率很小,如图3所示。
由于加入了能量因素,在发送往下一跳的时候要先进行能量的比较决定下一跳的路径,使得端到端的时沿有所增加,如图4,但是网络端到端的时延也是随着仿真的进行不断趋于稳定,基本保持在0.19s.保证了数据包传输的可靠性。
从图5、图6可以看出网络的节点能耗、生命周期很稳定基本达到了预期的目标。整个网络的性能得到了提高。
参考文献:
[1]毛乐琦.基于隐马尔科夫模型的无线传感网节点故障诊断算法[J].计算机应用与软件. 2014,1:132
[2]李余琪.无线传感网中一种基于压缩感知的数据存储机制[J]. 计算机应用与软件.2014,4:111
[3]李晋. 无线传感网中基于和声搜索和局部搜索的节点定位问题的研究[J]. 计算机应用与软件.2014,9:129
[4]姚永国.基于最小跳数的无线传感器网络路由算法研究[D].重庆:重庆邮电大学,2012.
[5]Zhao Zhe,RESEARCH ON PROLONGING WIRELESS SENSOR NETWORK LIFETIME BASED ON NODES COOPERATION[J].computer applications and software.2014,8:126
[6]徐立鸿。温室无线传感器网络节点发射功率自适应控制算法[J]。农业工程学报。2014,8:126
[7]张瑞琴.无线传感器网络中基于时效的最优数据包长[J].计算机应用与软件.2014,5:119
[8]陶志勇.基于ZigBee的修正加权质心定位算法研究与实现[J].计算机应用与软件.2014,1.123