一种可靠有效的无线传感器网络重启方法

文档序号:8002530阅读:213来源:国知局
一种可靠有效的无线传感器网络重启方法
【专利摘要】本发明公开了一种可靠有效的无线传感器网络重启方法。当网络拥有者重启整个无线传感器网络时,SINK节点将其广播包中的ADV信息的版本字段的内容修改为更新版本;各节点各自等时间间隔地广播含有ADV字段的广播包,若广播包中的版本字段的内容比接收到广播包的节点的版本更新,则接收到广播包的节点向广播包的源地址对应的节点发送请求信息,接收到请求信息的节点返回重启命令及相关数据作为回应,收到回应的节点将易失性关键数据存入“持久RAM”后开始重启;完成重启的节点从“持久RAM”中读入易失性关键数据并设置节点的相应参数,完成重启的节点将自身的版本信息和自身广播包中的ADV信息的版本字段的内容修改为更新的版本,之后节点进入正常工作状态。
【专利说明】一种可靠有效的无线传感器网络重启方法【技术领域】
[0001]本发明属于无线通信【技术领域】,涉及一种无线传感器网络可靠有效的重启方法。【背景技术】
[0002]随着无线传感器网络在诸如生态监管,行为习性监控和基建设施保护等领域的应用越来越广泛,对无线传感器网络在无人值守情况下连续正常工作的要求越来越高。因而,无线传感器网络中软件的可靠性也越发吸引研究人员的关注。
[0003]在现实应用中,无线传感器网络会因为各种意想不到的原因而失效,这些原因包括:不可预测的环境因素,链路连接的动态性,复杂的网络交互等。在解决无线传感器网络失效的所有方法中,网络重启是一种有效的方法。然而,现有的网络重启方法并不能保证无线传感器网络可靠有效的重启。现实应用中的大多数无线传感器网络依靠网络泛洪来实施重启,而这样的泛洪方法很难保证整个网络百分之百的可靠重启。还有一些网络重启方法使用了分发协议。但是采用分发协议的方法在实际使用中并不是很有效。因为节点在重启后会丢失状态信息,所以重启后的节点不会继续传播重启命令,也就很难保证整个无线传感器网络所有节点全部重启。

【发明内容】

[0004]本发明的目的是提供一种可靠有效的无线传感器网络重启方法。
[0005]为了达到上述目的,本发明采取的技术方案是:本发明无线传感器网络重启方法如下:
当网络拥有者重启整个无线传感器网络时,发送重启命令给SINK节点让SINK节点将其维护的版本信息和广播包中的ADV信息的版本字段的内容修改为更新版本;
包括SINK节点在内的 各节点各自等时间间隔地广播含有ADV字段的广播包,接收到广播包的节点将广播包中的版本字段的内容与自身维护的版本信息进行比较:如果广播包中的版本字段的内容比接收到广播包的节点的版本更新,则接收到广播包的节点向广播包的源地址对应的节点发送请求信息,接收到请求信息的节点返回重启命令及相关数据作为回应,收到回应的节点将易失性关键数据存入“持久RAM”后开始重启;
完成重启的节点从“持久RAM”中读入之前存入的易失性关键数据,根据读入的易失性关键数据设置节点的相应参数,完成重启的节点将自身的版本信息和自身广播包中的ADV信息的版本字段的内容修改为更新的版本,之后节点进入正常工作状态。
[0006]进一步地,本发明所述“持久RAM”是指在RAM中紧邻.bss块的内存上划分出的重启前后不会丢失数据的内存区块。
[0007]在现有技术中,实现网络重启主要是靠网络泛洪的方式,但是网络泛洪的方法不能保证网络中所有节点全部重启。这些泛洪方法多采用通过三次握手来建立连接的分发协议,仅仅依靠这些协议来实现重启容易丢失节点重启前的状态信息等易失性关键数据,使得重启后的节点不会广播新的重启命令,从而导致整个网络的重启中断。可选的存储易失性关键数据的方案是将节点的状态存储在FLASH闪存上。但在FLASH闪存上进行读写操作需要工作在相对较高的电压下,否则不能保证读写结果的正确性。例如,TelosB节点的正常工作电压是1.8伏,而进行FLASH闪存读写的时候最低电压要求是2.7伏。因此在能量比较宝贵的传感器网络节点上使用这项技术的实际可行性不高。
[0008]与现有技术相比,本发明的有益效果是:本发明提供了一种可靠有效的无线传感器网络重启方法。首先,本发明采用了一致的分发协议来可靠地传播重启命令,保证所有的节点在SINK节点发送重启命令后都能收到这个命令。其次,本发明提供了一种在RAM上进行非易失性存储的方法,通过在RAM上开辟一块内存区域存储易失性关键数据,该内存区域的特点是:只要节点不断电,存储于该区域的数据就不会丢失。此外,在工作状态下内存都是处于使用状态,所以使用开辟的这块内存区域不会额外消耗能量,而进行FLASH闪存读写需要消耗额外的能量。
【专利附图】

【附图说明】
[0009]图1是本发明涉及的内存区域的基本结构图。
【具体实施方式】
[0010]首先说明以下【具体实施方式】所涉及的各符号的含义。
[0011]SINK -无线传感器网络根节点 N1-编号为i的节点
Nj -编号为j的节点
ADV -数据包中包含版本字段等信息的特定数据结构 下面结合附图和实施例对本发明做进一步说明。
[0012]在无线传感器网络进行重启前,每个节点都处于正常工作状态。处于正常工作状态的每个节点除了会点对点的传送数据,还会周期性地广播含有ADV信息的数据包来传递SINK节点的命令或者交换信息。每个节点会在自己的内存中维护一个版本信息。每个节点发送的广播包中ADV信息中的版本字段与自己维护的版本信息一致。每个节点通过接收到的广播包中的相关信息(例如,新镜像标志位为真、修改广播包间隔标志位为真)来判断是否有新的命令到达,根据广播包中的信息更改自己的状态。节点发送广播包的频率可以根据需要来设定。广播含有ADV字段的数据包的规则是:每个节点设置固定的时间间隔来广播数据包。在两次广播的间隙,如果任意的某一节点Ni侦听到其他节点Nj或者SINK广播的含有ADV字段的数据包,并且节点Ni即将广播的数据包的ADV字段的内容与侦听到的相同,则节点Ni取消该周期内接下来的广播数据包的发送,由此可以避免发送相同的广播包,减少信道中数据包的数量。节点Ni继而以取消发送的时间为起点,以前述设置的时间间隔为周期,周期性地发送含有ADV字段的广播包。
[0013]当网络拥有者重启整个无线传感器网络时,SINK节点在人工干预或者自主控制下更新自己的版本信息,并修改SINK的广播包中的ADV信息的版本字段使其与版本信息保持—致。
[0014]在节点Ni接收到SINK节点发送的含有ADV字段的广播包后,若节点Ni发现该广播包的ADV信息中的版本字段比节点Ni自己维护的版本信息更新,则节点Ni准备向SINK节点发送请求信息。此处“更新”的定义是:若网络拥有者设定数字越大表明越新,则SINK节点广播包的ADV信息中的版本字段中的数字比节点Ni维护的版本信息内的数字更大表明SINK节点广播包的ADV信息中的版本字段更新;若网络拥有者设定数字越小表明越新,则SINK节点广播包的ADV信息中的版本字段中的数字比节点Ni维护的版本信息内的数字更小表明SINK节点广播包的ADV信息中的版本字段更新。在节点Ni接收到SINK节点发送的含有ADV字段的广播包后,若节点Ni发现该广播包的ADV信息中的版本字段与节点Ni自己维护的版本信息相同。则节点Ni按照原来的工作方式继续工作,不进行重启。需要说明的是,节点处于正常工作状态时会周期性的发送含有ADV字段的广播包。
[0015]节点Ni在向SINK节点发送请求信息之前侦听到有邻居节点发送了请求信息,则延迟自己的请求信息的发送,以免产生冲突;若没有邻居节点发送请求信息,则节点Ni向SINK节点发送请求信息。
[0016]接收到请求信息的SINK节点,将重启命令及相关数据放入数据包中作为回应返回给节点Ni。此处的“相关数据”包括节点重启后要使用的新的程序镜像、节点重启后要设置的状态数据等,但不限于以上内容,具体由网络拥有者决定。节点Ni接收并缓存收到的数据。
[0017]图1显示了一个典型的程序的内存结构。RAM中包括.data区块和.bss区块。在程序开始执行时,会先执行一个初始化器。初始化器会将.data区块和.bss区块的内容初始化,而其他RAM区域的内容则保持不变。在紧邻.bss区块的RAM中开辟一块名为.pram的区块,并在数据存储阶段将状态数据存入.pram区块,从而保证了节点重启后,程序开始执行时,能得到重启前的状态数据。
[0018]参照图1,节点Ni在RAM中紧邻.bss区块的部分划分一块内存区域,本实施例中取名为.pram,.pram即为“持久RAM”,由于RAM中此区域的数据在保证供电的情况下不会因节点重启而改变,从而保证了重启前后信息不丢失。然后节点Ni将易失性关键数据放入.pram,此处“易失性关键数据”包括但不限于节点重启前后需要维持不变的状态信息、节点Ni维护的版本信息、节点重启后新的配置参数、表示节点本身已发包数目的包序列号、邻节点表等。然后节点Ni重启。
[0019]重启完毕的节点Ni从.pram中读入之前存入的易失性关键数据,根据读入的易失性关键数据设置相应参数,“相应参数”包括表示节点本身已发包数目的包序列号、邻节点表等信息。进而节点Ni恢复维护的版本信息,将自己维护的版本信息修改成与接收到的SINK节点广播包的ADV信息中的版本字段相一致的数字,从而将自身的版本信息和自身广播包中的ADV信息的版本字段的内容修改为更新的版本。之后节点Ni进入正常工作状态。
[0020]节点Nj接收到节点Ni发送的含有ADV字段的广播包后,若节点Nj发现该广播包的ADV信息中的版本字段比节点Nj自己维护的版本信息更新,则节点Nj准备向SINK节点发送请求信息,接下来Nj与Ni的交互过程与前述Ni与SINK的交互过程相同,不再赘述;若节点Nj发现该广播包的ADV信息中的版本字段与节点Nj自己维护的版本信息相同或者比Nj自己维护的版本信息更旧,则节点Nj按照原来的工作方式继续工作,不进行重启。
【权利要求】
1.一种无线传感器网络重启方法,其特征是: 当网络拥有者重启整个无线传感器网络时,发送重启命令给SINK节点让SINK节点将其维护的版本信息和广播包中的ADV信息的版本字段的内容修改为更新版本; 包括SINK节点在内的各节点各自等时间间隔地广播含有ADV字段的广播包,接收到广播包的节点将广播包中的版本字段的内容与自身维护的版本信息进行比较:如果广播包中的版本字段的内容比接收到广播包的节点的版本更新,则接收到广播包的节点向广播包的源地址对应的节点发送请求信息,接收到请求信息的节点返回重启命令及相关数据作为回应,收到回应的节点将易失性关键数据存入“持久RAM”后开始重启; 完成重启的节点从“持久RAM”中读入之前存入的易失性关键数据,根据读入的易失性关键数据设置节点的相应参数,完成重启的节点将自身的版本信息和自身广播包中的ADV信息的版本字段的内容修改为更新的版本,之后节点进入正常工作状态。
2.根据权利要求1所述的无线传感器网络重启方法,其特征在于:所述“持久RAM”是指在RAM中紧邻.bss块的内存上划分出的重启前后不会丢失数据的内存区块。
【文档编号】H04W24/04GK103428740SQ201310305267
【公开日】2013年12月4日 申请日期:2013年7月21日 优先权日:2013年7月21日
【发明者】陈纯, 卜佳俊, 董玮, 张学锋, 黄超 申请人:浙江大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1