一种能量均衡的无线传感网络节点代码分发方法与流程

文档序号:13984825阅读:190来源:国知局
一种能量均衡的无线传感网络节点代码分发方法与流程

本发明涉及无线传感器网络技术领域,更具体地,涉及一种能量均衡的无线传感网络节点代码分发方法。



背景技术:

通常无线网络非常适合部署在环境恶劣、人工难以到达的场合,一旦网络在指定区域部署成功,将会在漫长的无人看管的环境之中执行任务。在最初部署网络时,节点所运行的软件代码镜像通常只是根据当时的需要所设计。然而随着时间的慢慢推移,用户会适时地提出新的网络功能需求或者需要对正在运行的软件代码进行故障修缮,此时就必须对网络中节点所运行的应用程序进行调整,即对节点进行代码镜像更新。传统的做法是,人工回收传感器节点后,利用串行或者并行数据线将pc与节点相连接,通过有线下载烧录的方式对节点执行镜像更新操作。但是当节点处于较为恶劣的环境中、节点分布较为分散、网络规模较大时,采用人工有线方式进行更新就会变得麻烦和不切实际。以无线信道为媒介,通过单跳以及多跳的方式对代码镜像进行分发和升级,进而完成镜像更新是有效途径。

目前国内外的经典的代码分发协议有deluge、sprinkler、mnp等,它们主要是对无线传感网络中的全部节点进行镜像更新。然而使用经典代码分发的方式对网络中的特定节点进行更新时将会引起全网中的大量能量消耗。因此,针对特定节点更新的代码协议出现了,尤其以mdeluge为经典。

mdeluge协议是针对网络中特定节点进行镜像更新的一套方法。mdeluge协议在传输镜像时采用树结构,这个树结构在目的节点向源节点发送req消息时生成,源节点作为树的根节点,目的节点作为叶子节点。树结构的构建参考了aodv路由协议,可以在源节点与目的节点之间创建一条双向路径。正向路径是以源节点为起点、以目的节点为终点,用于传输镜像数据。反向路径则是以目的节点为起点、以源节点为终点,用于传送镜像页请求消息。从源节点开始,镜像数据被依次转发给树的下一层,直到目的节点成功接收镜像。mdeluge协议将请求消息和镜像数据在树结构中进行内网聚合,这有利于减少消息量的传输。然而,固定的路径会给路径上的节点造成大的能量消耗,导致节点能量耗损的不一致,缩短了有限的网络寿命。

目前大部分特定节点更新协议虽然提出了各种各样的路径建立策略,但是无论使用何种策略,一旦路径建立好之后就会一直使用此路径传输镜像数据,除非路径出现断裂才会重建新路径传输。这种固定路径传输策略在传输较小的镜像文件时不会出现问题,但若是传输zigbee大镜像文件时就会很容易过度消耗此条固定路径上的节点能量。当这些节点出现能量枯竭时会因为电量不足而掉网,网络就会被割裂开,网络寿命被缩短。



技术实现要素:

本发明为解决现有技术使用固定路径传输代码镜像文件所导致的固定路径上的节点的能力被过度消耗的技术缺陷,提供了一种能量均衡的无线传感网络节点代码分发方法。

为实现以上发明目的,采用的技术方案是:

一种能量均衡的无线传感网络节点代码分发方法,包括以下步骤:

s1.源节点响应目的节点的更新请求,向全网络广播loc消息;

s2.网络中的接收节点接收到loc消息时,将向其发送loc消息的邻居节点的id加入本地邻居集合,然后计算该邻居节点的备选权重,邻居节点的备选权重由接收节点指向邻居节点的向量和邻居节点指向源节点的向量的乘积决定;在计算邻居节点的备选权重时,若计算出的备选权重值为正值,则将邻居节点id号和权重值添加到正权值邻居表中,若计算出的备选权重值为负值则直接丢弃loc消息;

s3.目的节点接收到loc消息后,广播dreq消息向源节点建立传输路径:此时接收到dreq消息的接收节点会从其正权值邻居表中随机选取一个节点作为反向路径的下一跳节点,然后将dreq消息转发至下一跳节点;重复上述传送过程直至dreq消息被转发至源节点;

s4.源节点在收到dreq消息后,将代码镜像的镜像页沿着建立的传输路径传输至目的节点;

s5.目的节点在接收到镜像页后,广播dreq消息随机建立新的传输路径,并利用新的传输路径传输镜像页;

s6.重复执行步骤s5直至目的节点接收完所有的镜像页。

与现有技术相比,本发明的有益效果是:

本发明提供的方法实现了在源节点和目的节点之间,依据节点计算出的备选权重值,随机选取下一跳节点,建立方向导向的传输路径。这样建立的模糊路径可以使得更多的节点承担代码分发的消息量,从而解决以往协议建立的固定传输路径所存在的使得路径中的节点的能量被过度消耗的技术缺陷,该方法相对于mdeluge协议,大幅度减轻节点承担的平均消息量,优化网络的整体性能均衡,延长网络寿命。

附图说明

图1为消息交互过程图。

图2为路径建立阶段计算备选权重值的说明图。

图3为传输失败重传时的消息交互图。

图4是正常消息交互状态时的方向导向路径图。

图5是传输失败重传状态时的方向导向路径图。

具体实施方式

附图仅用于示例性说明,不能理解为对本专利的限制;

以下结合附图和实施例对本发明做进一步的阐述。

实施例1

图1为消息交互过程图,最终是目的节点接收完所有的镜像页。

图1中所示,源节点为了响应目的节点的代码镜像更新请求,向全网络广播loc消息。开始转发loc消息时,源节点的邻居节点在收到loc消息时,会将发送loc消息的邻居节点的id加入本地邻居集合,同时计算该邻居节点的备选权重。之后,全网中的其他节点的邻居节点在收到loc消息后也执行同样的动作。loc消息包含源节点的id号、当前节点的id号、源节点的坐标信息和当前节点的坐标信息,当一个节点收到loc消息后会存下源节点的坐标信息,并根据该节点坐标、源节点坐标、发送该消息的邻居节点坐标来计算此邻居节点的备选权重。同时loc消息中还包括目的节点的id号、镜像文件总页数,用于在网络中寻找目的节点并通知其镜像文件总页数。

收到发送的loc消息的节点,会根据自身之前是否已经转发过同一邻居节点的loc消息,作出慢转发或快转发的决策。慢转发是指开启一个较长的随机定时器,快转发是指开启一个较短的随机定时器。该随机定时器是指定时自从节点收到loc消息至转发出去loc消息之间的时间段。若是之前还没有转发过该邻居节点的loc消息,则开启快转发;若之前已经转发过同一邻居节点的loc消息,则节点会弃置该loc消息,不转发此次loc消息;若之前已经转发过其他邻居节点的loc消息,则开启慢转发。实行快转发策略,因为当前节点没转发过同一邻居节点的loc消息,表明它周围的相当一部分邻居节点很大可能没有接收过loc消息,让该节点执行快转发可以让loc消息快速覆及网络所有节点。实行慢转发策略,主要用于让该节点的所有邻居节点重新确认该节点发送的loc消息已经被邻居节点们正常接收,该过程不需要快速的执行,使用慢转发策略还能够让自身要发送的loc消息有效地避开网络中被快转发的那部分loc消息,减少了消息冲突的可能。

目的节点在收到loc消息后,在经过一定时延后发起dreq消息,方向导向转发dreq消息,建立方向导向随机路径。dreq消息中包含序列号sequence,每当目的节点发送dreq消息时,就会令序列号sequence字段自增1,表示是新一轮的dreq消息。dreq消息的反向下一跳节点id是在占有不同备选权重的邻居节点中随机选取的,选出反向下一跳节点后,此消息就被发送给对应节点,收到dreq消息的反向下一跳节点会更新序列号并且在节点本地更新正向路由表。dreq消息中还包含源节点id号、请求镜像页号、请求位向量等信息,用于向源节点请求相应的镜像文件数据。

dreq消息的转发是以源节点方位作为导向方位的。dreq消息中有一个反向下一跳节点id字段,当前节点首先将正权值邻居表中的所有节点的备选权重值做归一化处理,随后随机一个0到1之间的随机数,该随机数落到哪个邻居节点的权重值区间内,就把哪个邻居节点作为反向下一跳节点。由于各个备选的下一跳节点都处于靠近源节点的方向上,所以dreq消息建立起的反向路径是逐渐向源节点靠拢的。目的节点将根据各邻居节点所占的权重随机选取一个节点作为路径下一跳节点,被选中的节点将继续根据自身邻居节点的权重选择下一跳节点,重复上述过程直到该dreq消息被转发给源节点。特别要说明的是,若节点发现源节点在它的邻居列表中,则直接把源节点作为反向下一跳节点。当dreq消息到达源节点时,从源节点到目的节点的一条随机的方向导向性的传输路径便建立完毕。

源节点在收到dreq消息后,开始沿方向导向性路径传输dreq中请求的镜像页数的data消息。data消息就是镜像块消息,若干个连续的镜像块消息组成一个镜像页。data消息中包含的序列号sequence就是目的节点发送的dreq消息中sequence字段的值。收到data消息的节点会判断sequence字段与自身序列号是否一致,只有两者一致时才会查询正向路由表向正向路径下一跳转发data消息。data消息中还包含目的节点id号、镜像页号、位向量、镜像数据、crc校验值等字段,用于告知目的节点此次传输的镜像块的相关信息。目的节点在收到该镜像页后,对镜像数据页进行校验。如果成功,则再经过一定的时延开始请求下一页的镜像页;否则,再次请求该页的镜像页传输。再次转发dreq消息,建立一条新的方向导向路径,再由此路径转发请求的镜像页数据消息data。之后重复上述过程,直到目的节点接收完所有的镜像页。

图2是路径建立阶段计算备选权重值的说明图

以图2所示情形,实例说明备选权重值的计算过程。收到loc消息的节点会将发送该消息的邻居节点id加入本地邻居集合,同时计算该邻居节点的备选权重。该邻居节点的备选权重其实就是图2中的向量和向量的乘积,其中表示由loc消息接收节点指向上述邻居节点的向量,表示由邻居节点指向源节点的向量。

图中2节点有b、c、d、e四个邻居节点,当它收到b节点广播的loc消息时,就会计算作为备选权重。由于已知a节点坐标、b节点坐标和源节点坐标,所以备选权重可用如下公式计算:

计算出的权重值若为正值,则将邻居节点id号和权重值添加到正权值邻居表中,若计算出负值则直接丢弃消息。这是因为只有靠近源节点方向的邻居才能作为备选反向下一跳节点,若计算值为负表明此邻居位于远离源节点的方向,不应该成为反向下一跳节点。如图2所示,a节点会将b、c节点加入正权值邻居表中,而会丢弃d、e节点发送的loc消息。从图中可以看出,b邻居节点的向量在向量上的投影要比c邻居节点的长,所以b邻居节点的备选权重值要比c邻居节点大一些。

图3是传输失败重传时的消息交互图。

由于节点掉网或者目的节点未能够接收到完整的镜像文件时,进入传输失败重传状态,目的节点重新发起一个dreq消息重新请求接收失败的镜像页。目的节点在发送dreq消息之后将开启一个重传定时器,若定时时间到仍没有收到完整的镜像页,那么认为这个镜像页传输失败。此时,目的节点将重新发送一个新的dreq消息,并同时开启重传定时器。该dreq消息将重新建立起新的正向路径,再次进行镜像传输。如果收到请求重传完整的镜像页,校验成功则关闭重传定时器;否则,再次发送dreq消息请求传输失败的镜像页。如果目的节点对同一个镜像页连续三次都接收失败,则不再继续申请重传,放弃此次镜像更新。

图4是正常消息交互状态时的方向导向路径图。

图5是传输失败重传状态时的方向导向路径图。

同时,在以上基础上,本发明还进行了具体的仿真实验,实验的仿真平台是ns2,ns2是一个使用tcl语言与c++语言共同编写、基于离散事件处理的网络仿真器。仿真器使用一个轮询机制处理网络中各种事件,当全部事件均被处理之后,仿真过程才算结束。该仿真软件能够设计网络拓扑结构、配置各个节点底层属性、定义节点运行时逻辑行为、监测并生成网络日志文件。图4、图5是在ns2平台上对本发明进行的仿真性验证的结果图。实验选取88的格型网络拓扑,水平和竖直节点间距设置为5m,节点功率半径设置为9m,网格左下角的0号节点为代码分发的源节点。为了让实验效果比较明显,在离源节点较远的地方选取目的节点。当目的节点接收到完整的100个镜像页后,代码分发过程可以认为顺利结束。

图4利用本发明的代码分发办法,设置传输100个镜像页将形成100条传输路径,选取建立的其中四条镜像页传输路径。本发明代码分发办法建立的每一条路径基本都是不同的,因为每条路径都是在传输一个镜像页之前即时建立的,在传输完一个镜像页之后该路径就完成了自己的使命。

图5利用本发明的代码分发办法,设置4号节点在传输第45个镜像页时掉网以验证本发明的重传机制。4号节点掉网导致52号节点不能收到完整的第45个镜像页,一旦52号节点接收第45个镜像页的重传定时器超时,该节点就会再次发送一个带有最新序列号的dreq消息重新建立传输第45个镜像页的路径,图中黑色箭头所经过的路径便是该dreq消息所建立的第45个镜像页的重传路径。

显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1