CN101635975A - 无线传感器网络数据收集路由方法及装置 - Google Patents
无线传感器网络数据收集路由方法及装置 Download PDFInfo
- Publication number
- CN101635975A CN101635975A CN200910023498A CN200910023498A CN101635975A CN 101635975 A CN101635975 A CN 101635975A CN 200910023498 A CN200910023498 A CN 200910023498A CN 200910023498 A CN200910023498 A CN 200910023498A CN 101635975 A CN101635975 A CN 101635975A
- Authority
- CN
- China
- Prior art keywords
- node
- time
- neighbor
- bag
- ack
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Abstract
一种无线传感器网络数据收集路由方法及装置,包括路由建立阶段、生成休眠调度阶段和数据收集阶段,有以下步骤:基站发出hello包,节点收到hello包,建立邻居表,广播hello包;节点等待随机时间,广播hello包或广播路由修复包;更新邻居表;节点监听无线信道,按照收到的数据包的类型等待邻居节点醒来后执行转发环境数据包或更新邻居表信息或发送hello包的动作。本发明的方法及装置基于异步休眠调度的机制,利用接收到的hello包与自身监听时间的差确定邻居节点的休眠周期,避免了时间同步引起的额外开销;且能在短时间内修复局部路由,并对定时器偏移累计引起的发送失败问题进行自适应修复。
Description
技术领域
本发明涉及无线传感器网络技术领域,尤其涉及一种无线传感器网络的数据收集路由方法及装置。
背景技术
近年来,无线传感器网络发展迅速,无线传感器网络由部署在一定区域内的多个传感器节点组成,通过无线通信方式组成一个多跳的网络系统,对网络覆盖区域内的数据进行搜集处理并将之发送给用户或观察者。它具有广阔的应用前景:环境监测和预报、医疗护理、智能家居、监控、交通、探索以及物流管理和安全检测等。
路由协议是无线传感器网络中网络层的核心技术,也是当今国内外研究的热点之一,其主要目的是实现能量有效性路由的制定,即在把数据从源节点可靠地传送到汇聚节点的基础上,尽可能地使网络生命周期最大化。目前的无线传感器网络的路由协议根据网络结构主要分为三类:平面路由协议(flat-based)、层次路由协议(hierarchical-based)和基于位置(location-based)的路由协议。
在平面路由协议中,所有网络节点不存在等级和层次差异,它们的地位是平等的,节点通过相互之间的局部操作和信息反馈来生成路由。在这类协议中,汇聚节点向监测区域的节点发出查询命令,监测区域内的节点收到查询命令后,向目的节点发送监测数据。
Flooding协议是一种经典的平面路由协议,在该协议中,节点将采集或收到的数据向所有的邻节点广播,这些数据包只有在过期或到达目的地时才停止传播。该协议的优点是实现简单,不需要为保持网络拓扑信息和实现复杂的路由发现方法而消耗计算资源,方法具有很高的可靠性和健壮性。但是该协议同时具有严重的缺陷:1、内爆,即节点几乎同时从邻节点收到多份相同数据;2、交叠,节点先后收到监控同一区域的多个节点发送的几乎相同的数据;3、资源利用盲目,节点不考虑自身资源限制,在任何情况下都转发数据。这些缺陷会导致节点能耗消耗过快,网络生存周期太短,不符合长时间工作的需求。
Gossiping协议是对Flooding协议的改进,在该协议中,节点将产生或收到的数据随机转发,虽然避免了内爆的问题,但增加了时延。随着网络节点的增加,该协议的时延会越来越大,效率越来越低,不符合在至少具有几十个节点的应用环境中高效和实时性的需求。
SPIN是一种以数据为中心的自适应通信路由协议,它引入了两个新思路:协商(negotiation)和资源自适应(resource-adaptation),以此来解决传统路由协议在传感器网络中可能存在的问题。在该协议中,传输数据之前,节点之间要先进行协商,只有有用的数据才会传输;同时,每个节点都有一个资源管理器负责管理节点资源损耗,根据节点所拥有的资源状况,资源管理器控制节点在处理和传输数据时采取不同的行为。但是,SPIN协议中,度数(即相邻节点的个数)较大的节点消耗能量较多,如果该节点处在关键位置上,它的“死亡”可能会对网络造成较大影响;并且,在传输新数据的过程中,直接向邻居节点广播数据包,而没有考虑其邻居节点如果由于自身能量的原因不愿承担起转发新数据的功能时,则新数据将无法传输而出现“数据盲点”,进而影响整个网络信息的收集。SPIN协议的该缺点会导致网络负载不均,部分节点过早死亡,影响数据的正常传输,不符合对网络负载均衡和数据传输的可靠性要求。
层次路由协议采用簇(cluster)的形式将网络进行划分,它与平面路由协议相对应。所谓簇就是具有某种关联的网络节点集合。每个簇由一个簇首(cluster head)和多个簇内成员(cluster member)组成。簇与簇之间可以通过簇首进行通信,簇首管理或控制整个簇内成员,协调成员节点之间的工作与通信,负责收集簇内节点的信息并对这些信息进行融合处理。簇首之间的连接构成上一级网络的骨干节点。
低功耗自适应集簇分层型协议(Low Energy Adaptive ClusteringHierarchy,下称LEACH协议)是MIT的Chandrakasan等人为无线传感器网络设计的低功耗自适应聚类路由方法,它是第一个在无线传感器网络中提出的层次式路由协议。该协议定义了“轮”(round)的概念,一轮由初始化和稳定工作两个阶段组成。为了避免额外的处理开销,稳定态一般持续相对较长的时间。在初始化阶段,簇首是通过下面的机制产生的:节点生成(0,1)之间的随机数,如果大于阈值T,则选该节点为簇首。该协议在计算阈值T时未考虑节点的剩余能量,如果被选为簇首的节点剩余能量很低,即将死亡,整个簇的数据可能会无法传送到汇聚节点,导致数据丢失。此外,该方法假设簇首均可直接与汇聚点通信,在该假设不成立的监测环境中则无法应用该方法。
HEED(hybrid energy-efficient distributed clustering)协议针对LEACH协议簇首分布不均匀的问题进行了改进,其基本思路是将节点最大剩余能量和平均最小可达能量(average minimum reach ability power,下称AMRP)作为选择簇首的参数,通过迭代的方式周期性地选取出较合理的簇首分布。平均最小可达能量是指一个簇内所有其他节点与簇首通信所需的最小功率的平均值。它以簇内平均可达能量AMRP作为衡量簇内通信成本的标准。HEED协议虽然使网络的能量均衡消耗,簇首的分布更合理,但由于簇首选举采用迭代的方式,簇首生成时间较长,通信开销较大。
因此,人们需要一种能够长时间监测数据且数据传输可靠的路由技术,并解决上述相关技术中的问题。
发明内容
本发明的目的是提供一种基于异步休眠调度的无线传感器网络数据收集路由方法及装置。
根据本发明的一方面,提供了一种无线传感器网络数据收集路由方法,其技术方案是:
一种无线传感器网络数据收集路由方法,包括以下步骤:
路由建立阶段S101,其包括以下步骤:
步骤S101-1:基站发出hello包,所述hello包的内容包括节点的节点号、自己到基站的跳步数、剩余能量及LEAF标识;其中,基站到自己跳步数为0,其它节点到基站的跳步数初始化为无穷大,如果节点为LEAF节点,则LEAF标示为真,否则为假;
步骤S101-2:节点判断是否收到hello包,如果是则执行步骤S101-3;
步骤S101-3:确定本节点到基站的跳步数,建立邻居表,所述邻居表的内容包括邻居节点的节点号、邻居节点到基站的跳步数、邻居节点剩余能量、到邻居节点的链路质量指示,执行步骤S101-4;
步骤S101-4:判断自己到基站的跳步数是否比之前未更新的跳步数小,如果是则广播自身的hello包;
步骤S101-5:如果节点在路由建立阶段S101都没有收到hello包,则判定自己为新加入的节点,执行生成休眠调度阶段S102中的步骤S102-1b;
生成休眠调度阶段S102,其包括以下步骤:
所述生成休眠调度阶段S102中包括随机时间和第一周期,所述第一周期包括监听时间和休眠时间,其中,随机时间<休眠时间:
步骤S102-1:节点等待随机时间,开始自身的监听时间并广播hello包,如果节点收到hello包,执行步骤S102-2;
步骤S102-1b:节点等待随机时间,开始自身的监听时间并按第二周期为周期广播路由修复包,到数据收集阶段S103开始时则停止发送路由修复包,其中,第二周期<监听时间,执行数据收集阶段S103中的步骤S103-7;所述路由修复包的内容包括本节点当前时间距最近一次开始时间的时间差、自己到基站的跳步数、剩余能量及节点的节点号;
步骤S102-2:在邻居表中记录邻居节点监听时间和自身节点监听时间的启动时间差;
数据收集阶段S103,其包括以下步骤:
节点周期性进入监听时间和休眠时间:
步骤S103-1:判断节点是否处于监听时间,如果是则执行步骤S103-2a;如果不是则执行步骤S103-2b;
步骤S103-2a:节点监听无线信道,判断收到的数据包类型;如果收到环境数据包,执行步骤S103-3;如果收到路由修复包,执行步骤S103-6;如果收到hello包,执行步骤S103-7;
步骤S103-2b:节点关闭监听,进入休眠状态;
步骤S103-2c:节点判断是否有自身产生的环境数据包需要发送,如果是则执行步骤S103-3;
步骤S103-3:节点从邻居表选择下一跳节点,选择策略为:节点遍历邻居表一次计算所有邻居节点的转发代价Ci,选出Ci最小的节点作为下一跳将消息发出去,执行步骤S103-4;
步骤S103-4:等待邻居表中记录的与该节点的时间差的时间,即等待下一条节点进入监听状态发送环境数据包,执行步骤S103-5;
步骤S103-5:节点在Tw时期向下一跳节点转发环境数据包;
步骤S103-6:更新邻居表信息,其中邻居节点与本节点的时间差(t)的计算公式为Δt1-Δt2,其中Δt1为发送节点发送的路由修复包中包含的时间差,Δt2为本节点当前时间距最近一次监听时间(Tw)开始时间的时间差;如果收到的路由修复包中的跳步数为无穷大,回复一个路由修复包;
步骤S103-7:更新节点本身到基站的跳步数,该跳步数为邻居表中最小的跳步数加1;如果跳步数比之前未更新的跳步数小的话,则等待邻居节点各自进入监听状态时依次发送hello包。
优选的,所述步骤S103-2a中节点如果收到环境数据包,执行步骤S103-3a;
步骤S103-3a:判断是否Trcv>P*Tw,其中,P=1/2,Trcv是收到的环境数据包时间,Tw是监听时间,如果是则执行步骤S103-3b;如果否则执行步骤S103-3c;
步骤S103-3b:回复ACK,在ACK包中加入收到包的当前时间和最近一次Tw的启动时间的时间差Trcv-Tw,执行步骤S103-3;
步骤S103-3c:回复ACK,在ACK包中不含时间差Trcv-Tw,执行步骤S103-3;
所述步骤S103-5中,节点向下一跳节点转发环境数据包后,等待确认ACK;如果接收到下一跳节点返回的ACK,执行步骤S103-5a;如果没有收到ACK,执行步骤S103-5b;
步骤S103-5a:记录收到ACK的时间为邻居节点监听时间的开始时间,重新计算邻居节点和本节点的启动时间差,更新邻居表,路由转发结束;
步骤S103-5b:隔t1后重发数据包,发N次,其中,t1<<Tw,如果在此期间收到ACK,执行步骤S103-5a,如果仍然没有收到ACK,判断该邻居节点已经失效,从邻居表中删除该邻居节点信息,执行步骤S103-3。
优选的,所述步骤S102-2中启动时间差t的计算公式为:如果t3≥t2,则t=(t3-t2)%(Tw+Ts);否则t=(t3+nT-t2)%(Tw+Ts);其中,t2为本节点记录的本节点Tw启动时间,t3为本节点收到邻居节点hello包的当前时间,n是使得(t3+nT)≥t2的最小自然数。
优选的,所述步骤S103-3中转发代价Ci的计算公式为:
其中,Hi为邻居节点到Sink节点的跳步数,Ei为邻居节点剩余能量,LQIi为到该邻居节点的链路质量,α,β分别为剩余能量和链路质量权重指数。
优选的,所述步骤S103-5a中的启动时间差t的计算公式为:如果ACK中包含发送ACK节点收到包的当前时间和最近一次Tw的启动时间的时间差Trcv-Tw,则t=t-(Trcv-Tw);否则t=t-(t4-t5);其中,t4为本节点收到邻居节点ACK的当前时间,t5为本第一周期T内第一次向邻居节点发送环境数据包的时间。
根据本发明的另一方面,提供了一种由无线传感器网络数据收集路由方法得到的路由装置,该路由装置映射到每一个节点,至少由路由建立模块、生成休眠调度模块及数据收集模块依次连接组成,各模块分别实现如下功能:
路由建立模块:
基站发出hello包,所述hello包的内容包括节点的节点号、自己到基站的跳步数、剩余能量及LEAF标识;其中,基站到自己跳步数为0,其它节点到基站的跳步数初始化为无穷大,如果节点为LEAF节点,则LEAF标示为真,否则为假;节点判断是否收到hello包,如果是则确定本节点到基站的跳步数,建立邻居表,所述邻居表的内容包括邻居节点的节点号、邻居节点到基站的跳步数、邻居节点剩余能量、到邻居节点的链路质量指示;判断自己到基站的跳步数是否比之前未更新的跳步数小,如果是则广播自身的hello包;如果路由建立模块中节点都没有收到hello包,则判定自己为新加入的节点;
生成休眠调度模块:
所述生成休眠调度模块中包括随机时间和第一周期,所述第一周期包括监听时间和休眠时间,其中,随机时间<休眠时间;
节点等待随机时间,开始自身的监听时间并广播hello包,如果节点收到hello包,在邻居表中记录邻居节点监听时间和自身节点监听时间的启动时间差;
判定自己为新加入的节点等待随机时间,开始自身的监听时间并按第二周期为周期广播路由修复包,到数据收集阶段开始时则停止发送路由修复包,其中,第二周期<监听时间;所述路由修复包的内容包括本节点当前时间距最近一次开始时间的时间差、自己到基站的跳步数、剩余能量及节点的节点号;
数据收集模块:
节点周期性进入监听时间和休眠时间:判断节点是否处于监听时间,如果是则监听无线信道;如果不是节点关闭监听,进入休眠状态;或者节点判断是否有自身产生的环境数据包需要发送,如果有,则节点从邻居表选择下一跳节点,选择策略为:节点遍历邻居表一次计算所有邻居节点的转发代价Ci,选出Ci最小的节点作为下一跳将消息发出去,等待邻居表中记录的与该节点的时间差的时间,在监听时间向下一跳节点转发环境数据包;
节点监听无线信道时,判断收到的数据包类型;如果收到环境数据包,节点从邻居表选择下一跳节点,选择策略为:节点遍历邻居表一次计算所有邻居节点的转发代价Ci,选出Ci最小的节点作为下一跳将消息发出去,等待邻居表中记录的与该节点的时间差的时间,即等待下一条节点进入监听状态发送环境数据包,节点在Tw时期向下一跳节点转发环境数据包;
如果收到路由修复包,更新邻居表信息,其中邻居节点与本节点的时间差(t)的计算公式为Δt1-Δt2,其中Δt1为发送节点发送的路由修复包中包含的时间差,Δt2为本节点当前时间距最近一次监听时间Tw开始时间的时间差;如果收到的路由修复包中的跳步数为无穷大,回复一个路由修复包;
如果收到hello包,更新节点本身到基站的跳步数,该跳步数为邻居表中最小的跳步数加1;如果跳步数比之前未更新的跳步数小的话,则等待邻居节点各自进入监听状态时依次发送hello包。
优选的,数据收集模块中节点监听无线信道时,如果收到环境数据包,判断是否Trcv>P*Tw,其中,P=1/2,Trcv是收到的环境数据包时间,Tw是监听时间,如果是则回复ACK,在ACK包中加入收到包的当前时间和最近一次Tw的启动时间的时间差Trcv-Tw,然后再从邻居表选择下一跳节点;如果否则回复ACK,在ACK包中不含时间差Trcv-Tw,然后再从邻居表选择下一跳节点;
当节点向下一跳节点转发环境数据包后,等待确认ACK;如果接收到下一跳节点返回的ACK,记录收到ACK的时间为邻居节点监听时间的开始时间,重新计算邻居节点和本节点的启动时间差,更新邻居表,路由转发结束;如果没有收到ACK,则隔t1后重发数据包,发N次,其中,t1<<Tw,如果在此期间收到ACK,记录收到ACK的时间为邻居节点监听时间的开始时间,重新计算邻居节点和本节点的启动时间差,更新邻居表,路由转发结束;如果仍然没有收到ACK,判断该邻居节点已经失效,从邻居表中删除该邻居节点信息,从邻居表选择下一跳节点。
优选的,所述生成休眠调度模块邻居表中的启动时间差t的计算公式为:如果t3≥t2,则t=(t3-t2)%(Tw+Ts);否则t=(t3+nT-t2)%(Tw+Ts);其中,t2为本节点记录的本节点Tw启动时间,t3为本节点收到邻居节点hello包的当前时间,n是使得(t3+nT)≥t2的最小自然数。
优选的,所述转发代价Ci的计算公式为:
其中,Hi为邻居节点到Sink节点的跳步数,Ei为邻居节点剩余能量,LQIi为到该邻居节点的链路质量,α,β分别为剩余能量和链路质量权重指数。
优选的,如果接收到下一跳节点返回的ACK,记录收到ACK的时间为邻居节点监听时间Tw的开始时间,重新计算邻居节点和本节点的启动时间差t,所述启动时间差t的计算公式为:如果ACK中包含发送ACK节点收到包的当前时间和最近一次Tw的启动时间的时间差Trcv-Tw,则t=t-(Trcv-Tw);否则t=t-(t4-t5);其中,t4为本节点收到邻居节点ACK的当前时间,t5为本第一周期T内第一次向邻居节点发送环境数据包的时间。
根据上述技术方案,本发明实现如下技术效果:
在路由建立阶段,节点在切换到工作节点广播hello包,同时记录接收到的其它节点hello包时间,通过接收hello包的时间和节点广播hello包的时间差维护邻居节点的休眠调度,解决时间同步引起的额外开销;
节点新加入或者更换电池后,局部路由信息丢失,为了使新加入节点能快速融入网络,通过判断在路由建立阶段是否接收到hello包来判断本身是否为新加入节点,并在生成休眠调度阶段中节点按周期T1广播路由修复包,收到路由修复包的节点会在下一节点切换到工作状态时广播hello包,从而对局部路由进行修复;
节点向邻居节点转发环境数据包后等待ACK,如果未收到ACK,则隔t 1后重发,持续n次重发,如果重发n次后仍未收到ACK那么重新选择下一个邻居为下一跳,当收到ACK后,记录收到ACK的时间为邻居节点更新后的开始工作时间;如果节点接收到邻居发来的环境数据包时间Trcv>P*Tw,那么回复ACK时,在ACK包中加入时间差Trcv-Tw,解决节点硬件的石英晶体振荡器随着时间产生偏移累计,会造成节点维护的邻居休眠调度时间产生误差,导致路由失效的问题。
由以上方案可见,与现有的路由方法相比,本发明路由方法的优点有:
1、不需要时间同步而达到休眠调度,利用接收到的hello数据包与自身Tw时间差确定邻居节点的休眠周期,避免了时间同步引起的额外开销;
2、标识为LEAF节点是人员不方便到达的节点,尽可能不转发数据,把网络的能耗负载加到容易更换电池的节点上;
3、更换电池或者新加入的节点能在小于Ttopo+2T+Trandom时间内修复局部路由,有很好的可扩展性和收敛性;
4、能对定时器偏移累计引起的发送失败问题进行自适应修复,具有很好的鲁棒性;
5、控制信息种类少,只有hello包和路由修复包两种,而且不要求节点之间频繁交换控制信息,只在建立路由阶段、生成休眠调度阶段、定时器偏移累计引起的发送失败和新节点加入时交换控制信息,提高了能量利用率;
6、在低于1%的占空比(监听时间/(监听时间+休眠时间))时也能良好工作,很好地保存节点能量;
7、对应用层隐藏了路由方法的具体实现,通过接口为应用层提供透明的服务。
附图说明
图1是根据本发明的拓扑生成示意图;
图2是根据本发明的无线传感器网络数据收集路由方法的流程图;
图3是根据本发明的无线传感器网络数据收集路由装置的方框图;
图4是根据本发明的无线传感器网络数据收集路由方法中路由建立阶段的流程图;
图5是根据本发明的无线传感器网络数据收集路由方法中生成休眠调度阶段的流程图;
图6是根据本发明的无线传感器网络数据收集路由方法中数据收集阶段的基本流程图;
图7为根据本发明的无线传感器网络数据收集路由方法中数据收集阶段带ACK确认机制的流程图;
图8为定时器前向偏移修复示意图;
图9为定时器后向偏移修复示意图;
图10是本发明方法三个阶段示意图。
以下结合附图对本发明的具体实施方式作进一步详细地说明。
具体实施方式
本发明是一种基于异步休眠调度的无线传感器网络数据收集路由方法(aData collection Routing algorithm based on Asynchronous Duty-cyclein Wireless Sensor Networks,以下简称DRAD)及装置,在本发明的方法中共有3种数据包:hello包、环境数据包以及路由修复包(RouteRepaire)。在以下的实施例说明中,将本发明的方法及装置应用于如下网络模型:
1.所有节点随机分布于一个三维空间中,汇聚节点(基站)在区域外侧,汇聚节点只有一个;
2.所有节点与汇聚节点均保持静止,局部节点能补充能量;
3.所有节点均同构,具有唯一ID,并具有数据融合的功能;
4.长期监测环境数据,对数据的实时性没有特别要求,可以容忍一定的数据延迟;
5.网内的数据传输表现为普通节点发送到基站的数据收集。
图2示出了根据本发明的无线传感器网络数据收集路由方法的流程图,图3示出了根据本发明的无线传感器网络数据收集路由装置的方框图。
参照图2及图10,本发明的方法包括以下阶段及步骤:
路由建立阶段S101的时间为Ttopo,参照图4,路由建立阶段S101包括以下步骤:
步骤S101-1:基站发出hello包,该hello包的内容包括节点的节点号、自己到基站的跳步数、剩余能量及LEAF标识;其中,基站到自己跳步数为0,其它节点到基站的跳步数初始化为无穷大;如果节点为LEAF节点,则LEAF标示为真,否则为假;
步骤S101-2:节点判断是否收到hello包,如果是则执行步骤S101-3;
步骤S101-3:确定本节点到基站的跳步数(mhop),建立邻居表,邻居表的内容包括邻居节点的节点号、邻居节点到基站的跳步数、邻居节点剩余能量、到邻居节点的链路质量指示;执行步骤S101-4;
步骤S101-4:判断自己到基站的跳步数是否比之前未更新的跳步数小,如果是则广播自身的hello包;
步骤S101-5:如果节点在Ttopo期间都没有收到hello包,则判定自己为新加入的节点,执行生成休眠调度阶段S102中的步骤S102-1b;
参照图5,生成休眠调度阶段S102中包括随机时间Trandom和第一周期T,该第一周期T包括监听时间Tw和休眠时间Ts,即T=Tw+Ts,且Trandom<Ts。生成休眠调度阶段S102包括以下步骤:
步骤S102-1:节点等待随机时间,开始自身的Tw,广播hello包,如果节点收到hello包,执行步骤S102-2;
步骤S102-1b:节点等待随机时间Trandom后,开始监听时间Tw,按第二周期T1为周期广播路由修复包,到数据收集阶段S103开始时停止发送路由修复包,其中T1<Tw,然后执行数据收集阶段中的步骤S103-7;该路由修复包的内容包括本节点当前时间距最近一次Tw开始时间的时间差Δt、自己到基站的跳步数、剩余能量及节点的节点号;
步骤S102-2:在邻居表中记录邻居节点监听时间Tw和自身节点监听时间Tw的启动时间差t;在该步骤中,启动时间差t的计算公式为:如果t3≥t2,则t=(t3-t2)%(Tw+Ts);否则t=(t3+nT-t2)%(Tw+Ts);其中,t2为本节点记录的本节点Tw启动时间,t3为本节点收到邻居节点hello包的当前时间,n是使得(t3+nT)≥t2的最小自然数。
参照图6,在数据收集阶段S103中,节点周期性地进入Tw和Ts时期,其中,Tw期间节点打开监听,可接收信息;Ts期间节点关闭监听,无法接收信息;
数据收集阶段S103包括以下步骤:
步骤S103-1:判断节点是否处于Tw期间,如果是则执行步骤S103-2a;如果不是则执行步骤S103-2b;
步骤S103-2a:节点监听无线信道,判断收到的数据包类型;如果收到环境数据包,执行步骤S103-3;如果收到路由修复包,执行步骤S103-6;如果收到hello包,执行步骤S103-7;
步骤S103-2b:节点关闭监听,进入休眠状态;
步骤S103-2c:节点判断是否有自身产生的环境数据包需要发送,如果是则执行步骤S103-3;
步骤S103-3:节点从邻居表选择下一跳节点,选择策略为:节点遍历邻居表一次计算所有邻居节点的转发代价Ci,选出Ci最小的节点作为下一跳将消息发出去,执行步骤S103-4;
可选的,Ci的计算公式为:
其中,Hi为邻居节点到Sink节点的跳步数,Ei为邻居节点剩余能量,LQIi为到该邻居节点的链路质量,α,β分别为剩余能量和链路质量权重指数。标识有LEAF的节点,只有当邻居表中没有其他非LEAF节点时,才能选为下一跳;
步骤S103-4:等待邻居表中记录的与该节点的时间差的时间,即等待下一条节点进入监听状态发送环境数据包,执行步骤S103-5;
步骤S103-5:Tw时期向下一跳节点转发环境数据包;
步骤S103-6:如果收到的路由修复包中的跳步数为无穷大,回复一个路由修复包,并更新邻居表信息;
步骤S103-7:更新节点本身到基站的跳步数,该跳步数为邻居表中最小的跳步数(hop_min)加1;如果跳步数比之前未更新的跳步数小的话,则等待邻居节点各自进入监听状态时依次发送hello包。
以上为对流程中不带ACK(Acknowledge Character,确认字符)确认机制的本发明方法的说明,参照图7,图7为是根据本发明的无线传感器网络数据收集路由方法中数据收集阶段带ACK确认机制的流程图,其与上述不带ACK确认机制的方法不同之处在于:
在数据收集阶段S103的步骤S103-2a中:节点监听无线信道,判断收到的数据包类型;如果收到环境数据包,执行步骤S103-3a;
步骤S103-3a:判断收到的环境数据包时间Trcv是否大于P*Tw,其中,P=1/2,如果是执行步骤S103-3b;如果否,执行步骤S103-3c;
步骤S103-3b:回复ACK,在ACK包中加入收到包的当前时间和最近一次Tw的启动时间的时间差Trcv-Tw,执行步骤S103-3;
步骤S103-3c:回复ACK,在ACK包中不含时间差Trcv-Tw,执行步骤S103-3;
步骤S103-4:等待邻居表中记录的与该节点的启动时间差t的时间,即等待下一条节点进入监听状态发送环境数据包,执行步骤S103-5;
步骤S103-5:节点在Tw时期向下一跳节点转发环境数据包;等待确认ACK;如果接收到下一跳节点返回的ACK,执行步骤S103-5a;如果没有收到ACK,执行步骤S103-5b;
步骤S103-5a:记录收到ACK的时间为邻居节点Tw的开始时间,重新计算邻居节点和本节点的启动时间差t,更新邻居表,路由转发结束;在该步骤中,启动时间差t的计算公式为:如果ACK中包含发送ACK节点收到包的当前时间和最近一次Tw的启动时间的时间差Trcv-Tw,则t=t-(Trcv-Tw);否则t=t-(t4-t5);其中,t4为本节点收到邻居节点ACK的当前时间,t5为本第一周期T内第一次向邻居节点发送环境数据包的时间;
步骤S103-5b:隔t1后重发数据包,其中,t1<<Tw,重发N次,优选的,N=5;如果在此期间收到ACK,执行步骤S103-5a;如果仍然没有收到ACK,判断该邻居节点已经失效,从邻居表中删除该邻居节点信息,执行步骤S103-3。
如图3所示,根据本发明的无线传感器网络数据收集路由方法的装置,该装置映射到每一个节点上,至少由路由建立模块201、生成休眠调度模块202及数据收集模块203依次连接组成,各模块分别实现如下功能:
路由建立模块201:
基站发出hello包,所述hello包的内容包括节点的节点号、自己到基站的跳步数、剩余能量及LEAF标识;其中,基站到自己跳步数为0,其它节点到基站的跳步数初始化为无穷大,如果节点为LEAF节点,则LEAF标示为真,否则为假;节点判断是否收到hello包,如果是则确定本节点到基站的跳步数,建立邻居表,所述邻居表的内容包括邻居节点的节点号、邻居节点到基站的跳步数、邻居节点剩余能量、到邻居节点的链路质量指示;判断自己到基站的跳步数是否比之前未更新的跳步数小,如果是则广播自身的hello包;如果路由建立模块201中节点都没有收到hello包,则判定自己为新加入的节点;
生成休眠调度模块202:
所述生成休眠调度模块包括随机时间Trandom和第一周期T,第一周期T包括监听时间Tw和休眠时间Ts,其中,随机时间Trandom<休眠时间Ts;
节点等待随机时间,开始自身的监听时间Tw并广播hello包,如果节点收到hello包,在邻居表中记录邻居节点监听时间Tw和自身节点监听时间Tw的启动时间差t,该启动时间差t的计算公式可为:如果t3≥t2,则t=(t3-t2)%(Tw+Ts);否则t=(t3+nT-t2)%(Tw+Ts);其中,t2为本节点记录的本节点Tw启动时间,t3为本节点收到邻居节点hello包的当前时间,n是使得(t3+nT)≥t2的最小自然数;
判定自己为新加入的节点等待随机时间,开始自身的监听时间Tw并按第二周期T1为周期广播路由修复包,到数据收集阶段S103开始时则停止发送路由修复包,其中,第二周期T1<监听时间Tw;所述路由修复包的内容包括本节点当前时间距最近一次Tw开始时间的时间差Δt、自己到基站的跳步数、剩余能量及节点的节点号;
数据收集模块203:
所述数据收集模块203节点周期性进入监听时间Tw和休眠时间Ts:判断节点是否处于监听时间Tw,如果是则监听无线信道;如果不是节点关闭监听,进入休眠状态;或者节点判断是否有自身产生的环境数据包需要发送,如果有,则节点从邻居表选择下一跳节点,选择策略为:节点遍历邻居表一次计算所有邻居节点的转发代价Ci,选出Ci最小的节点作为下一跳将消息发出去,等待邻居表中记录的与该节点的时间差的时间,在Tw时期向下一跳节点转发环境数据包;
节点监听无线信道时,判断收到的数据包类型;如果收到环境数据包,节点从邻居表选择下一跳节点,选择策略为:节点遍历邻居表一次计算所有邻居节点的转发代价Ci,选出Ci最小的节点作为下一跳将消息发出去,等待邻居表中记录的与该节点的时间差的时间,即等待下一条节点进入监听状态发送环境数据包,节点在Tw时期向下一跳节点转发环境数据包;
如果收到路由修复包,更新邻居表信息,其中邻居节点与本节点的时间差(t)的计算公式为Δt1-Δt2,其中Δt1为发送节点发送的路由修复包中包含的时间差,Δt2为本节点当前时间距最近一次监听时间Tw开始时间的时间差;如果收到的路由修复包中的跳步数为无穷大,回复一个路由修复包;
如果收到hello包,更新节点本身到基站的跳步数,该跳步数为邻居表中最小的跳步数加1;如果跳步数比之前未更新的跳步数小的话,则等待邻居节点各自进入监听状态时依次发送hello包。
更进一步的方案为,数据收集模块中节点监听无线信道时,如果收到环境数据包,判断是否Trcv>P*Tw,其中,P=1/2,Trcv是收到的环境数据包时间,Tw是监听时间,如果是则回复ACK,在ACK包中加入收到包的当前时间和最近一次Tw的启动时间的时间差Trcv-Tw,然后再从邻居表选择下一跳节点;如果否则回复ACK,在ACK包中不含时间差Trcv-Tw,然后再从邻居表选择下一跳节点;
当节点向下一跳节点转发环境数据包后,等待确认ACK;如果接收到下一跳节点返回的ACK,记录收到ACK的时间为邻居节点监听时间的开始时间,重新计算邻居节点和本节点的启动时间差,更新邻居表,路由转发结束,该步骤中启动时间差t的计算公式为:如果ACK中包含发送ACK节点收到包的当前时间和最近一次Tw的启动时间的时间差Trcv-Tw,则t=t-(Trcv-Tw);否则t=t-(t4-t5);其中,t4为本节点收到邻居节点ACK的当前时间,t5为本第一周期T内第一次向邻居节点发送环境数据包的时间;如果没有收到ACK,则隔t1后重发数据包,发N次,N=5,其中,t1<<Tw,如果在此期间收到ACK,记录收到ACK的时间为邻居节点监听时间的开始时间,重新计算邻居节点和本节点的启动时间差,更新邻居表,路由转发结束;如果仍然没有收到ACK,判断该邻居节点已经失效,从邻居表中删除该邻居节点信息,则从邻居表选择下一跳节点。
更进一步的方案为,转发代价Ci的计算公式为:
其中,Hi为邻居节点到Sink节点的跳步数,Ei为邻居节点剩余能量,LQIi为到该邻居节点的链路质量,α,β分别为剩余能量和链路质量权重指数。
以下结合附图以具体的例子对本发明作进一步的说明:
实施方式一
路由建立阶段:
步骤1:基站发出hello包,包的内容为节点的节点号、自己到基站的跳步数、剩余能量及LEAF标识;其中,基站到自己跳步数为0,其它节点到基站的跳步数初始化为无穷大;
步骤2:节点接收hello包,建立邻居表,邻居表的内容包括邻居节点的节点号、邻居节点到基站的跳步数、邻居节点剩余能量、到邻居节点的链路质量指示;
步骤3:如果自己到基站的跳步数减小,则广播自身的hello包;
生成休眠调度阶段:
步骤4-1:节点等待随机时间后开始自身的Tw,广播hello包,如果节点收到hello包,执行步骤5;
步骤5:在邻居表记录邻居节点监听时间Tw和自身节点监听时间Tw的启动时间差t;t的计算公式为:如果t3≥t2,则t=(t3-t2)%(Tw+Ts);否则t=(t3+nT-t2)%(Tw+Ts);其中,t2为本节点记录的本节点Tw启动时间,t3为本节点收到邻居节点hello包的当前时间,n是使得(t3+nT)≥t2的最小自然数;
数据收集阶段:节点周期性进入Tw和Ts时期,其中,Tw期间节点打开监听可接收信息,Ts期间节点关闭监听无法接收信息;
步骤6-1:进入Tw期间,如果节点在此阶段收到环境数据包,执行步骤7;
步骤7:如果收到的环境数据包时间Trcv<P*Tw,直接回复一个ACK,执行步骤8;
步骤8:节点收到环境数据后从邻居表选择下一跳节点,选择策略为:节点遍历邻居表一次计算所有邻居节点的转发代价Ci,选出Ci最小的节点作为下一跳将消息发出去。可选的,该Ci的计算公式为:
其中,Hi为邻居节点到Sink节点的跳步数,Ei为邻居节点剩余能量,LQIi为到该邻居节点的链路质量,α,β分别为剩余能量和链路质量权重指数,标识有LEAF的节点,只有当邻居表中没有其他非LEAF节点时,才能选为下一跳;
步骤9:等待下一跳节点进入Tw,向下一跳节点转发环境数据包,发送后如果接收到下一跳节点返回的ACK,执行步骤10-1;
步骤10-1:记录收到ACK的时间为邻居节点监听时间Tw的开始时间,重新计算邻居节点和本节点监听时间Tw的启动时间差t,更新邻居表,路由转发结束;t的计算公式为如果ACK中包含发送ACK节点收到包的当前时间和最近一次Tw的启动时间的时间差Trcv-Tw,则t=t-(Trcv-Tw);否则t=t-(t4-t5);其中,t4为本节点收到邻居节点ACK的当前时间,t5为本第一周期T内第一次向邻居节点发送环境数据包的时间。
实施方式一中,对时间差的计算均是通过相对时间而进行计算的,能够有效避免节点时间不同步所产生的问题。
实施方式二:本实施方式与实施方式一所述的路由方法区别在于,如果节点在Ttopo期间都没有收到hello包时,执行步骤4-2;
步骤4-2:节点等待随机时间Trandom,开始监听时间Tw,并以T1为周期广播路由修复包,路由修复包内容包括本节点当前时间距最近一次Tw开始时间的时间差Δt、自己到基站的跳步数、剩余能量及节点的节点号,其中T1<Tw;到数据收集阶段开始则停止发送,执行步骤11;
步骤11:更新节点本身到基站的跳步数,跳步数为邻居表中最小的跳步数加1;如果跳步数比之前未更新的跳步数小的话,等待邻居节点各自进入监听状态时依次发送hello包;
实施方式二中,对新加入节点和更换电池节点进行判断,如果在路由建立阶段接都没有收到Hello包,则判断节点本身为新加入或者更换电池节点,并在生成休眠调度阶段中广播路由修复包,在进入数据收集阶段的第一个Tw时给邻居节点分别发送hello包,使得新加入节点的邻居能够得到新加入节点的信息。
实施方式三:本实施方式与实施方式一所述的路由方法区别在于,当步骤6-1中,收到的是路由修复包时,执行步骤12;
步骤12:更新邻居表信息,其中邻居节点与本节点的时间差t的计算公式为Δt1-Δt2,其中Δt1为发送节点发送的路由修复包中包含的时间差,Δt2为本节点当前时间距最近一次Tw开始时间的时间差;如果收到的路由修复包中的跳步数为无穷大,回复一个路由修复包;
实施方式三中,节点在数据收集阶段收到路由修复包,则判断有新节点加入,回复一个路由修复包,其中包含包括本节点当前时间距最近一次Tw开始时间的时间差Δt、自己到基站的跳步数、剩余能量及节点的节点号,便于新加入节点更新邻居表,并且计算时间差的公式能避免节点时间不同步造成的问题。
实施方式四:本实施方式与实施方式一所述的路由方法区别在于,当所述步骤6-1中,收到的是Hello包时,执行步骤11;
实施方式四中,在路由建立阶段接收到Hello包导致自己到基站跳步数变小的情况下,则在下一个周期T时以Hello包的形式在邻居节点进入Tw时分别告知各邻居节点。
实施方式五:参见图8,本实施方式与实施方式一所述的路由方法区别在于,当步骤7收到数据包时间Trcv>P*Tw,执行步骤7-1;
步骤7-1:在ACK包中加入收到包的当前时间和最近一次Tw的启动时间的时间差Trcv-Tw,返回ACK,执行步骤8;
实施方式五中,对节点硬件定时器向后偏移累计误差引起的路由中断问题进行修复,当节点接收到数据包超过1/2*Tw时间,则对源节点进行通知,进行时间校正。
实施方式六:参见图9,本实施方式与实施方式一所述的路由方法区别在于,当步骤9未收到ACK,执行步骤10-2;
步骤10-2:隔t1后重发数据包,其中,t1<<Tw,重发N次,N可等于5或10,如果在此期间收到ACK,执行步骤13;如果仍然没有收到ACK,则判断该邻居已失效,从邻居表中删除该邻居信息,执行步骤8;
步骤13:收到ACK,记录收到ACK的时间为邻居节点Tw的开始时间,重新计算邻居节点和本节点的启动时间差t,更新邻居表。
实施方式六中,对节点硬件定时器向前偏移累计误差引起的路由中断问题进行修复,多次重传成功后,由于t1<<Tw,使用重传成功后受到的ACK时间为修正的邻居节点Tw开始时间,并且判断了节点是否失效,更新了邻居表信息。
根据本发明的方法,解决了无线传感器网络数据收集中的如下问题:
1、异步的休眠调度
技术问题:
时间同步往往会引起额外开销,而之前的路由方法都是在时间同步的基础上进行休眠调度。
本方法的解决方案:
在生成休眠调度阶段,节点在Trandom结束时广播hello包,而记录接收到的其他节点hello包的时间,通过接收hello包时间和节点广播hello包的时间差维护邻居节点的休眠调度。
2、新节点加入或者更换电池后路由修复
技术问题:
节点新加入或者更换电池后,局部路由信息丢失,因此要求新加入节点能快速融入网络。
本方法的解决方案:
节点新加入网络,通过判断在路由建立阶段接收的数据包是hello包还是普通环境数据包判断本身是否为新加入节点,节点按周期T1(T1<Tw)广播路由修复包,收到路由修复包的节点会在下一周期切换到工作状态时广播hello包,从而对局部路由进行修复。
3、定时器偏移累计引起路由失效
技术问题:
节点硬件的石英晶体振荡器随着时间会产生偏移累计,因此会造成节点维护的邻居休眠调度时间产生误差,导致路由失效。
本方法的解决方案:
节点向邻居节点转发数据包后增加等待ACK的步骤,如果未收到ACK,则隔t1后重发,持续n次重发,如果重发n次后仍未收到ACK那么重新选择下一个邻居节点为下一跳,当收到ACK后,记录收到ACK的时间为邻居节点更新后的开始工作时间;如果节点接收到邻居发来的环境数据包时间Trcv>P*Tw,那么回复ACK时,在ACK包中加入时间差Trcv-Tw。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选的,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者以其它集成方式实现。这样,本发明不限制于任何特定的硬件和软件结合。应该明白,这些具体实施中的变化对于本领域人员来说是显而易见的,不脱离本发明的精神保护范围。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1、一种无线传感器网络数据收集路由方法,其特征在于,包括以下步骤:
路由建立阶段S101,其包括以下步骤:
步骤S101-1:基站发出hello包,所述hello包的内容包括节点的节点号、自己到基站的跳步数、剩余能量及LEAF标识;其中,基站到自己跳步数为0,其它节点到基站的跳步数初始化为无穷大,如果节点为LEAF节点,则LEAF标示为真,否则为假;
步骤S101-2:节点判断是否收到hello包,如果是则执行步骤S101-3;
步骤S101-3:确定本节点到基站的跳步数,建立邻居表,所述邻居表的内容包括邻居节点的节点号、邻居节点到基站的跳步数、邻居节点剩余能量、到邻居节点的链路质量指示,执行步骤S101-4;
步骤S101-4:判断自己到基站的跳步数是否比之前未更新的跳步数小,如果是则广播自身的hello包;
步骤S101-5:如果节点在路由建立阶段S101都没有收到hello包,则判定自己为新加入的节点,执行生成休眠调度阶段S102中的步骤S102-1b;
生成休眠调度阶段S102,其包括以下步骤:
所述生成休眠调度阶段S102中包括随机时间(Trandom)和第一周期(T),所述第一周期(T)包括监听时间(Tw)和休眠时间(Ts),其中,随机时间(Trandom)<休眠时间(Ts);
步骤S102-1:节点等待随机时间(Trandom),开始自身的监听时间(Tw)并广播hello包,如果节点收到hello包,执行步骤S102-2;
步骤S102-1b:节点等待随机时间(Trandom),开始自身的监听时间(Tw)并按第二周期(T1)为周期广播路由修复包,到数据收集阶段S103开始时停止发送路由修复包,其中,第二周期(T1)<监听时间(Tw),执行数据收集阶段S103中的步骤S103-7;所述路由修复包的内容包括本节点当前时间距最近一次(Tw)开始时间的时间差(Δt)、自己到基站的跳步数、剩余能量及节点的节点号;
步骤S102-2:在邻居表中记录邻居节点监听时间(Tw)和自身节点监听时间(Tw)的启动时间差(t);
数据收集阶段S103,其包括以下步骤:
节点周期性进入监听时间(Tw)和休眠时间(Ts):
步骤S103-1:判断节点是否处于监听时间(Tw),如果是则执行步骤S103-2a;如果不是则执行步骤S103-2b;
步骤S103-2a:节点监听无线信道,判断收到的数据包类型;如果收到环境数据包,执行步骤S103-3;如果收到路由修复包,执行步骤S103-6;如果收到hello包,执行步骤S103-7;
步骤S103-2b:节点关闭监听,进入休眠状态;
步骤S103-2c:节点判断是否有自身产生的环境数据包需要发送,如果是则执行步骤S103-3;
步骤S103-3:节点从邻居表选择下一跳节点,选择策略为:节点遍历邻居表一次计算所有邻居节点的转发代价Ci,选出Ci最小的节点作为下一跳将消息发出去,执行步骤S103-4;
步骤S103-4:等待邻居表中记录的与该节点的启动时间差(t)的时间,即等待下一条节点进入监听时间(Tw)发送环境数据包,执行步骤S103-5;
步骤S103-5:节点在监听时间(Tw)向下一跳节点转发环境数据包;
步骤S103-6:更新邻居表信息,其中邻居节点与本节点的时间差(t)的计算公式为Δt1-Δt2,其中,Δt1为发送节点发送的路由修复包中包含的时间差,Δt2为本节点当前时间距最近一次监听时间(Tw)开始时间的时间差;如果收到的路由修复包中的跳步数为无穷大,回复一个路由修复包;
步骤S103-7:更新节点本身到基站的跳步数,该跳步数为邻居表中最小的跳步数加1;如果跳步数比之前未更新的跳步数小的话,则等待邻居节点各自进入监听时间(Tw)时依次发送hello包。
2、根据权利要求1所述的无线传感器网络数据收集路由方法,其特征在于:
所述步骤S103-2a中,节点如果收到环境数据包,执行步骤S103-3a;
步骤S103-3a:判断是否Trcv>P*Tw,其中,P=1/2,Trcv是收到的环境数据包时间,Tw是监听时间,如果是则执行步骤S103-3b;如果否则执行步骤S103-3c;
步骤S103-3b:回复ACK,在ACK包中加入收到包的当前时间和最近一次Tw的启动时间的时间差Trcv-Tw,执行步骤S103-3;
步骤S103-3c:回复ACK,在ACK包中不含时间差Trcv-Tw,执行步骤S103-3;
所述步骤S103-5中,节点向下一跳节点转发环境数据包后,等待确认ACK;如果接收到下一跳节点返回的ACK,执行步骤S103-5a;如果没有收到ACK,执行步骤S103-5b;
步骤S103-5a:记录收到ACK的时间为邻居节点监听时间(Tw)的开始时间,重新计算邻居节点和本节点的启动时间差(t),更新邻居表,路由转发结束;
步骤S103-5b:隔t1后重发数据包,发N次,其中,t1<<Tw,如果在此期间收到ACK,执行步骤S103-5a,如果仍然没有收到ACK,判断该邻居节点已经失效,从邻居表中删除该邻居节点信息,执行步骤S103-3。
3、根据权利要求1所述的无线传感器网络数据收集路由方法,其特征在于:
所述步骤S102-2中启动时间差(t)的计算公式为:如果t3≥t2,则t=(t3-t2)%(Tw+Ts);否则t=(t3+nT-t2)%(Tw+Ts);其中,t2为本节点记录的本节点Tw启动时间,t3为本节点收到邻居节点hello包的当前时间,n是使得(t3+nT)≥t2的最小自然数。
4、根据权利要求1所述的无线传感器网络数据收集路由方法,其特征在于:
所述步骤S103-3中转发代价Ci的计算公式为:
其中,Hi为邻居节点到Sink节点的跳步数,Ei为邻居节点剩余能量,LQIi为到该邻居节点的链路质量,α,β分别为剩余能量和链路质量权重指数。
5、根据权利要求2所述的无线传感器网络数据收集路由方法,其特征在于:
所述步骤S103-5a中的启动时间差(t)的计算公式为:如果ACK中包含发送ACK节点收到包的当前时间和最近一次监听时间(Tw)的启动时间的时间差Trcv-Tw,则t=t-(Trcv-Tw);否则t=t-(t4-t5);其中,t4为本节点收到邻居节点ACK的当前时间,t5为本第一周期(T)内第一次向邻居节点发送环境数据包的时间。
6、实现权利要求1所述的无线传感器网络数据收集路由方法的装置,其特征在于:该装置映射到每一个节点,至少包括依次连接的路由建立模块(201)、生成休眠调度模块(202)及数据收集模块(203),所述模块分别实现如下功能:
路由建立模块(201):
基站发出hello包,所述hello包的内容包括节点的节点号、自己到基站的跳步数、剩余能量及LEAF标识;其中,基站到自己跳步数为0,其它节点到基站的跳步数初始化为无穷大,如果节点为LEAF节点,则LEAF标示为真,否则为假;节点判断是否收到hello包,如果是则确定本节点到基站的跳步数,建立邻居表,所述邻居表的内容包括邻居节点的节点号、邻居节点到基站的跳步数、邻居节点剩余能量、到邻居节点的链路质量指示;判断自己到基站的跳步数是否比之前未更新的跳步数小,如果是则广播自身的hello包;如果路由建立模块(201)中节点都没有收到hello包,则判定自己为新加入的节点;
生成休眠调度模块(202):
所述生成休眠调度模块(202)中包括随机时间(Trandom)和第一周期(T),所述第一周期(T)包括监听时间(Tw)和休眠时间(Ts),其中,随机时间(Trandom)<休眠时间(Ts);
节点等待随机时间(Trandom),开始自身的监听时间(Tw)并广播hello包,如果节点收到hello包,在邻居表中记录邻居节点监听时间(Tw)和自身节点监听时间(Tw)的启动时间差(t);
判定自己为新加入的节点等待随机时间(Trandom),开始自身的监听时间(Tw)并按第二周期(T1)为周期广播路由修复包,到数据收集阶段S103开始时则停止发送路由修复包,其中,第二周期(T1)<监听时间(Tw);所述路由修复包的内容包括本节点当前时间距最近一次(Tw)开始时间的时间差(Δt)、自己到基站的跳步数、剩余能量及节点的节点号;
数据收集模块(203):
节点周期性进入监听时间(Tw)和休眠时间(Ts):判断节点是否处于监听时间(Tw),如果是则监听无线信道;如果不是节点关闭监听,进入休眠状态,或者节点判断是否有自身产生的环境数据包需要发送,如果有,则节点从邻居表选择下一跳节点,选择策略为:节点遍历邻居表一次计算所有邻居节点的转发代价Ci,选出Ci最小的节点作为下一跳将消息发出去,等待邻居表中记录的与该节点的时间差的时间,在监听时间(Tw)向下一跳节点转发环境数据包;
节点监听无线信道时,判断收到的数据包类型;如果收到环境数据包,节点从邻居表选择下一跳节点,选择策略为:节点遍历邻居表一次计算所有邻居节点的转发代价Ci,选出Ci最小的节点作为下一跳将消息发出去,等待邻居表中记录的与该节点的时间差的时间,即等待下一条节点进入监听时间(Tw)发送环境数据包,节点在监听时间(Tw)向下一跳节点转发环境数据包;
如果收到路由修复包,更新邻居表信息,其中,邻居节点与本节点的时间差t的计算公式为Δt1-Δt2,其中Δt1为发送节点发送的路由修复包中包含的时间差,Δt2为本节点当前时间距最近一次监听时间(Tw)开始时间的时间差;如果收到的路由修复包中的跳步数为无穷大,回复一个路由修复包;
如果收到hello包,更新节点本身到基站的跳步数,该跳步数为邻居表中最小的跳步数加1;如果跳步数比之前未更新的跳步数小的话,则等待邻居节点各自进入监听时间(Tw)时依次发送hello包。
7、根据权利要求6所述的无线传感器网络数据收集路由方法的装置,其特征在于:所述数据收集模块(203)中节点监听无线信道时,如果收到环境数据包,判断是否Trcv>P*Tw,其中,P=1/2,Trcv是收到的环境数据包时间,Tw是监听时间,如果是则回复ACK,在ACK包中加入收到包的当前时间和最近一次Tw的启动时间的时间差Trcv-Tw,然后再从邻居表选择下一跳节点;如果否则回复ACK,ACK包中不含时间差Trcv-Tw,然后再从邻居表选择下一跳节点;
当节点向下一跳节点转发环境数据包后,等待确认ACK;如果接收到下一跳节点返回的ACK,记录收到ACK的时间为邻居节点监听时间(Tw)的开始时间,重新计算邻居节点和本节点的启动时间差(t),更新邻居表,路由转发结束;如果没有收到ACK,则隔t 1后重发数据包,发N次,其中,t1<<Tw,如果在此期间收到ACK,记录收到ACK的时间为邻居节点监听时间(Tw)的开始时间,重新计算邻居节点和本节点的启动时间差(t),更新邻居表,路由转发结束;如果仍然没有收到ACK,判断该邻居节点已经失效,从邻居表中删除该邻居节点信息,则从邻居表选择下一跳节点。
8、根据权利要求6所述的无线传感器网络数据收集路由方法的装置,其特征在于:
所述生成休眠调度模块(202)邻居表中的启动时间差(t)的计算公式为:如果t3≥t2,则t=(t3-t2)%(Tw+Ts);否则t=(t3+nT-t2)%(Tw+Ts);其中,t2为本节点记录的本节点监听时间(Tw)启动时间,t3为本节点收到邻居节点hello包的当前时间,n是使得(t3+nT)≥t2的最小自然数。
9、根据权利要求6所述的无线传感器网络数据收集路由方法的装置,其特征在于:
所述转发代价Ci的计算公式为:
其中,Hi为邻居节点到Sink节点的跳步数,Ei为邻居节点剩余能量,LQIi为到该邻居节点的链路质量,α,β分别为剩余能量和链路质量权重指数。
10、根据权利要求7所述的无线传感器网络数据收集路由方法的装置,其特征在于:
如果接收到下一跳节点返回的ACK,记录收到ACK的时间为邻居节点监听时间(Tw)的开始时间,重新计算邻居节点和本节点的启动时间差(t),所述启动时间差(t)的计算公式为:如果ACK中包含发送ACK节点收到包的当前时间和最近一次Tw的启动时间的时间差Trcv-Tw,则t=t-(Trcv-Tw);否则t=t-(t4-t5);其中,t4为本节点收到邻居节点ACK的当前时间,t5为本第一周期T内第一次向邻居节点发送环境数据包的时间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100234982A CN101635975B (zh) | 2009-08-04 | 2009-08-04 | 无线传感器网络数据收集路由方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100234982A CN101635975B (zh) | 2009-08-04 | 2009-08-04 | 无线传感器网络数据收集路由方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101635975A true CN101635975A (zh) | 2010-01-27 |
CN101635975B CN101635975B (zh) | 2011-10-26 |
Family
ID=41594976
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009100234982A Expired - Fee Related CN101635975B (zh) | 2009-08-04 | 2009-08-04 | 无线传感器网络数据收集路由方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101635975B (zh) |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102256268A (zh) * | 2010-05-19 | 2011-11-23 | 北京兴科迪科技有限公司 | 无线传感网中基于随机行走的容错方法 |
CN102256267A (zh) * | 2010-05-19 | 2011-11-23 | 北京兴科迪科技有限公司 | 无线传感网络中能量优先的节点分簇方法 |
CN102497440A (zh) * | 2011-12-20 | 2012-06-13 | 山东大学 | 一种低延时数据聚合算法 |
CN102651898A (zh) * | 2011-02-24 | 2012-08-29 | 香港科技大学 | 异步传感器网络中时延受限且能量高效的在线路由方法 |
CN102761894A (zh) * | 2012-06-30 | 2012-10-31 | 华为技术有限公司 | 获取路径的方法、装置及系统 |
CN103491590A (zh) * | 2013-09-26 | 2014-01-01 | 常熟理工学院 | 一种下一代无线传感器网络路由的实现方法 |
CN103501526A (zh) * | 2013-09-29 | 2014-01-08 | 北京天公瑞丰科技有限公司 | 一种无线传感器节点和一种无线传感器网络 |
CN103532845A (zh) * | 2013-10-17 | 2014-01-22 | 西北大学 | 用于间歇性连通无线传感器网络的路由协议 |
CN103596239A (zh) * | 2013-10-09 | 2014-02-19 | 西北大学 | 一种基于传输方向的无线传感器网络路由方法及装置 |
WO2015101026A1 (zh) * | 2013-12-31 | 2015-07-09 | 华为技术有限公司 | 分布式流处理系统的容错方法、节点及系统 |
CN105022276A (zh) * | 2015-06-03 | 2015-11-04 | 泰凌微电子(上海)有限公司 | 智能家居系统及其数据交互方法 |
CN105142239A (zh) * | 2015-07-21 | 2015-12-09 | 西北大学 | 基于数据价值动态估计的无线传感网移动sink数据收集方法 |
CN105554807A (zh) * | 2016-01-26 | 2016-05-04 | 北京博信视通科技有限公司 | 一种设备到设备通信的方法和装置 |
CN106658633A (zh) * | 2016-11-16 | 2017-05-10 | 珠海中慧微电子股份有限公司 | 一种微功率无线多跳链路建立方法 |
CN106851766A (zh) * | 2017-03-02 | 2017-06-13 | 西北大学 | 一种高鲁棒性低延迟的无线传感网路由方法 |
CN107276684A (zh) * | 2017-07-19 | 2017-10-20 | 河海大学常州校区 | 水下传感器网络中基于auv位置预测的数据收集方法 |
CN108882144A (zh) * | 2018-05-30 | 2018-11-23 | 常熟理工学院 | 一种高效的物联网构建方法 |
CN105072563B (zh) * | 2015-07-28 | 2019-01-22 | 北京博信视通科技有限公司 | 一种设备到设备通信的方法和装置 |
CN110113783A (zh) * | 2019-05-31 | 2019-08-09 | 中国科学技术大学 | 一种实现联合感知驱动的卫星网络多跳路由的方法 |
CN110958580A (zh) * | 2019-12-11 | 2020-04-03 | 中国科学院计算机网络信息中心 | 一种低功耗的多功能数据汇聚网关及其数据汇聚传输方法 |
CN111246534A (zh) * | 2018-11-28 | 2020-06-05 | 中国科学院声学研究所 | 一种不需要时钟同步的水下移动节点网络自组织方法 |
-
2009
- 2009-08-04 CN CN2009100234982A patent/CN101635975B/zh not_active Expired - Fee Related
Cited By (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102256268A (zh) * | 2010-05-19 | 2011-11-23 | 北京兴科迪科技有限公司 | 无线传感网中基于随机行走的容错方法 |
CN102256267A (zh) * | 2010-05-19 | 2011-11-23 | 北京兴科迪科技有限公司 | 无线传感网络中能量优先的节点分簇方法 |
CN102256268B (zh) * | 2010-05-19 | 2015-08-05 | 北京兴科迪科技有限公司 | 无线传感网中基于随机行走的容错方法 |
CN102256267B (zh) * | 2010-05-19 | 2016-03-23 | 北京兴科迪科技有限公司 | 无线传感网络中能量优先的节点分簇方法 |
CN102651898A (zh) * | 2011-02-24 | 2012-08-29 | 香港科技大学 | 异步传感器网络中时延受限且能量高效的在线路由方法 |
CN102651898B (zh) * | 2011-02-24 | 2015-08-12 | 香港科技大学 | 异步传感器网络中时延受限且能量高效的在线路由方法 |
CN102497440B (zh) * | 2011-12-20 | 2014-04-09 | 山东大学 | 一种低延时数据聚合算法 |
CN102497440A (zh) * | 2011-12-20 | 2012-06-13 | 山东大学 | 一种低延时数据聚合算法 |
CN102761894A (zh) * | 2012-06-30 | 2012-10-31 | 华为技术有限公司 | 获取路径的方法、装置及系统 |
CN102761894B (zh) * | 2012-06-30 | 2015-01-21 | 华为技术有限公司 | 获取路径的方法、装置及系统 |
CN103491590A (zh) * | 2013-09-26 | 2014-01-01 | 常熟理工学院 | 一种下一代无线传感器网络路由的实现方法 |
CN103491590B (zh) * | 2013-09-26 | 2015-12-02 | 常熟理工学院 | 一种下一代无线传感器网络路由的实现方法 |
CN103501526A (zh) * | 2013-09-29 | 2014-01-08 | 北京天公瑞丰科技有限公司 | 一种无线传感器节点和一种无线传感器网络 |
CN103596239B (zh) * | 2013-10-09 | 2016-04-20 | 西北大学 | 一种基于传输方向的无线传感器网络路由方法及装置 |
CN103596239A (zh) * | 2013-10-09 | 2014-02-19 | 西北大学 | 一种基于传输方向的无线传感器网络路由方法及装置 |
CN103532845A (zh) * | 2013-10-17 | 2014-01-22 | 西北大学 | 用于间歇性连通无线传感器网络的路由协议 |
CN103532845B (zh) * | 2013-10-17 | 2017-03-15 | 西北大学 | 用于间歇性连通无线传感器网络的路由方法 |
WO2015101026A1 (zh) * | 2013-12-31 | 2015-07-09 | 华为技术有限公司 | 分布式流处理系统的容错方法、节点及系统 |
US10205630B2 (en) | 2013-12-31 | 2019-02-12 | Huawei Technologies Co., Ltd. | Fault tolerance method for distributed stream processing system |
CN105022276A (zh) * | 2015-06-03 | 2015-11-04 | 泰凌微电子(上海)有限公司 | 智能家居系统及其数据交互方法 |
CN105142239B (zh) * | 2015-07-21 | 2018-07-24 | 西北大学 | 基于数据价值动态估计的无线传感网移动sink数据收集方法 |
CN105142239A (zh) * | 2015-07-21 | 2015-12-09 | 西北大学 | 基于数据价值动态估计的无线传感网移动sink数据收集方法 |
CN105072563B (zh) * | 2015-07-28 | 2019-01-22 | 北京博信视通科技有限公司 | 一种设备到设备通信的方法和装置 |
CN105554807A (zh) * | 2016-01-26 | 2016-05-04 | 北京博信视通科技有限公司 | 一种设备到设备通信的方法和装置 |
CN105554807B (zh) * | 2016-01-26 | 2019-02-05 | 北京博信视通科技有限公司 | 一种设备到设备通信的方法和装置 |
CN106658633A (zh) * | 2016-11-16 | 2017-05-10 | 珠海中慧微电子股份有限公司 | 一种微功率无线多跳链路建立方法 |
CN106658633B (zh) * | 2016-11-16 | 2019-11-08 | 珠海中慧微电子股份有限公司 | 一种微功率无线多跳链路建立方法 |
CN106851766A (zh) * | 2017-03-02 | 2017-06-13 | 西北大学 | 一种高鲁棒性低延迟的无线传感网路由方法 |
CN106851766B (zh) * | 2017-03-02 | 2020-07-31 | 西北大学 | 一种高鲁棒性低延迟的无线传感网路由方法 |
CN107276684A (zh) * | 2017-07-19 | 2017-10-20 | 河海大学常州校区 | 水下传感器网络中基于auv位置预测的数据收集方法 |
CN108882144A (zh) * | 2018-05-30 | 2018-11-23 | 常熟理工学院 | 一种高效的物联网构建方法 |
CN108882144B (zh) * | 2018-05-30 | 2020-07-31 | 常熟理工学院 | 一种物联网构建方法 |
CN111246534A (zh) * | 2018-11-28 | 2020-06-05 | 中国科学院声学研究所 | 一种不需要时钟同步的水下移动节点网络自组织方法 |
CN111246534B (zh) * | 2018-11-28 | 2021-11-09 | 中国科学院声学研究所 | 一种不需要时钟同步的水下移动节点网络自组织方法 |
CN110113783A (zh) * | 2019-05-31 | 2019-08-09 | 中国科学技术大学 | 一种实现联合感知驱动的卫星网络多跳路由的方法 |
CN110958580A (zh) * | 2019-12-11 | 2020-04-03 | 中国科学院计算机网络信息中心 | 一种低功耗的多功能数据汇聚网关及其数据汇聚传输方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101635975B (zh) | 2011-10-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101635975B (zh) | 无线传感器网络数据收集路由方法及装置 | |
Xu et al. | Improvement of LEACH protocol for WSN | |
CN102149160B (zh) | 一种用于无线传感网络的能量感知路由算法 | |
Wu et al. | Energy-efficient wake-up scheduling for data collection and aggregation | |
CN102404817B (zh) | 多汇聚节点无线传感器网络组网方法及其系统 | |
CN101895956B (zh) | 多层分布式无线传感器网络数据传输方法 | |
CN102548038A (zh) | 一种微功率无线网络组网方法 | |
CN102761931B (zh) | 异步占空比无线传感器网络中进行动态数据传输的方法 | |
CN102340838B (zh) | 无线体域网中延长网络生存时间的媒体接入控制方法 | |
Nguyen et al. | Two energy-efficient cluster head selection techniques based on distance for wireless sensor networks | |
CN102665171A (zh) | 基于大规模wsn突发事件监测的路由控制方法 | |
CN105246117A (zh) | 一种适用于移动无线传感网的节能路由协议的实现方法 | |
CN101364945A (zh) | Ad Hoc网络上实现基于跨层机制的单播节能路由协议的方法 | |
CN108353464A (zh) | 网状网络连接性 | |
CN102946626B (zh) | 一种多对一分簇无线传感器网络环境下节点睡眠调度方法 | |
CN105072657A (zh) | 基于数据命名为中心的无线传感器网络异步休眠调度方法 | |
CN100486195C (zh) | 无线自组网的节能方法 | |
CN102186229B (zh) | 一种独立基本服务组ibss系统及其功率管理方法 | |
Atero et al. | A low energy and adaptive architecture for efficient routing and robust mobility management in wireless sensor networks | |
Azim et al. | Hybrid LEACH: A relay node based low energy adaptive clustering hierarchy for wireless sensor networks | |
Cengiz et al. | Low energy fixed clustering algorithm (LEFCA) for wireless sensor networks | |
CN102983948A (zh) | 一种无线传感网络自适应聚类传输发法及其装置 | |
CN106412997B (zh) | 一种面向异步传感器网络hr-mm广播协议的实现方法 | |
CN101867988A (zh) | Ad Hoc网络中的集中式自适应网管节点选择算法 | |
CN104010339A (zh) | 一种基于丢包率测量的wsn分簇方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20111026 Termination date: 20210804 |
|
CF01 | Termination of patent right due to non-payment of annual fee |