本发明涉及一种支持广播的无线传感网广播协议HR-MM(Hopcount Reduced Broadcasting with Multiple Metrics)的实现方法,属于无线传感器网络中MAC层协议设计,用于解决无线传感网中异步占空比操作模式下的广播问题。
背景技术:
无线传感器网络(WSN)是由部署在监测区域内的大量节点,通过无线传输形成的多跳自组织网络,用来协作地采集、处理和传输感知信息。MAC协议在传感器节点之间分配有限的无线通信资源,决定信道的使用方式,是连接物理层硬件和上层软件协议的枢纽,是无线传感器网络中最重要的技术之一。
WSN中一种重要的通信方法是广播。多跳广播对于WSN来讲是一项很重要的网络服务,尤其对于代码更新,远程网络配置和路由发现等应用场景。因为广播是一项涉及网络内每一个节点的通信服务,所以会消耗大量能量。尽管广播问题对于永久在线(always-on)的网络已经被广泛研究,但是对于以占空比技术为基础,其中每个节点只在某个时间槽保持唤醒,节点不同时唤醒的WSN网络,很难有效广播。这个问题在异步唤醒的情景下尤其突出。
异步占空比MAC协议由于节点之间的异步唤醒,广播难以有效完成。在WSN中,MAC协议一般用单播代替广播,将广播包依次发布到所有邻节点。本来需要一次广播完成的操作需要多次完成,造成了数据广播的冗余传输和多余的能耗。高性能广播协议ADB基于RI-MAC协议,采用单播方案完成广播服务。ADB不断更新广播的进度信息,通过使用链路质量较好的代理广播使得节点避免了不必要的传输。而且ADB基于链路质量选择转发节点,这一选择在节省能量的同时也会导致网络负载不均衡。
在低占空比的WSN中,如果节点数较少,所有的节点在采用全局同步的情形下仍然可以保证全员同时唤醒。然而,对于大规模WSN,节点的同步本身就是一个难题,预先决定一个严格的调度表也很复杂。无线传感器网络的可靠性依赖于节点的可靠性,负载不均衡导致部分节点能量迅速耗竭,导致部分节点提前死亡,使得传感网络的可靠性大大降低。尤其是在广播模式下,异步低占空比带来的节点唤醒不同步,引起了广播的高度冗余传输,消耗了多余的能量,而ADB广播协议的链路算法更是加剧了这一现象。
技术实现要素:
本发明的目的是提供一种面向异步传感器网络HR-MM广播协议的实现方法,在不过多的影响广播端对端延迟的条件下,在一定程度上降低广播转发的比例和跳数(Hopcount),并且延长网络的寿命,降低节点的平局能耗,提高网络的可靠性。
为实现上述目的,本发明采用的技术方案为:
一种面向异步传感器网络HR-MM广播协议的实现方法,包括以下步骤:
步骤一,首先,通过维护邻节点的广播状态,平衡广播转发比和端对端延迟,在不增加延迟的基础上有效地降低广播转发比;
步骤二,其次,采用链路质量和节点剩余能量的多标准平衡机制,延长节点的平均寿命;
步骤三,最后,通过延迟转发机制进一步减少广播转发数,减少冗余转发。
步骤一通过网络延迟和转发数的平衡算法来实现,所述网络延迟和转发数的平衡算法具体为:
(1.1)唤醒消息处理:一旦接收到唤醒消息,节点将发送唤醒消息的邻节点加入到WakeUpSet,根据唤醒消息中隐含的邻节点活跃时间设置计时器;当计时器触发,节点将邻节点从WakeUpSet去除;同时,邻节点的LastRcvNO和RcvSet被附加在唤醒消息后,如果LastRcvNO和CurrentNO均小于LastRcvNO,意味着邻节点一定已经接收到了当前节点还没有接受到的广播消息,那么这个节点把它自身的CurrentNO设置为邻节点的LastRcvNO,根据新的CurrentNO创建该广播消息的RcvSet和CoverSet,然后将这个邻节点和其他属于此邻节点的RcvSet的节点加入到RcvSet和CoverSet;否则,如果当前节点的CurrentNO等于邻节点的LastRcvNO,那么该节点将把这个邻节点和其他属于此邻节点的RcvSet的节点加入到RcvSet和CoverSet;如果邻节点的LastRcvNO小于节点的LastRcvNO,意味着邻节点还没有接收到新的广播消息,此时节点将邻节点从CoverSet中去掉完成更新操作;
(1.2)广播消息处理:一旦从邻节点收到广播消息,节点首先比较广播消息的序列号和自己的CurrentNO;如果其CurrentNO小于序列号,意味着节点接收到新的广播消息,它将CurrentNO和LastRcvNO设为消息的序列号,根据新的CurrentNO创建RcvSet和CoverSet,将这个邻节点和其他属于此邻节点的RcvSet的节点加入到RcvSet和CoverSet,把这个消息覆盖的所有活跃节点加入CoverSet;否则,如果消息序列号等于CurrentNO,节点直接更新当前RcvSet和CoverSet;
(1.3)动态转发调度:如果节点的RcvSet有过任何的更新操作,节点将检查其他所有的邻节点是否收到了广播消息,如果其他节点都已经收到了消息,那么广播结束,节点删除RcvSet和CoverSet;否则,节点检查WakeUpSet和CoverSet;如果集合中存在还没被覆盖的活跃邻节点,节点进一步检查自身或者这些活跃邻节点是否将迅速进入睡眠,并检查是否所有未覆盖邻节点都处于活跃状态;如果其中一项成立,那么节点发起消息转发;消息转发后,节点更新CoverSet,添加刚刚被转发的邻节点。
步骤二通过链路质量和节点剩余能量的平衡算法实现,所述链路质量和节点剩余能量的平衡算法包括:
(2.1)能量水平:基于能量的剩余能量追踪节点的能量状态,节点的能量采用公式(1)按比例在0-1的范围内;
其中,Er是剩余能量,Emax是节点可以获得的最大能量;能量值在0到1之间变化,其中0代表1代表能量满,0代表能量空即死亡节点;
(2.2)链路质量:在选择候选节点时测量信号的强弱;链路质量通过公式(2)规划到0到1的范围内;
其中,Sp是接收数据包的信号强度,Smax是可获得的最大信号强度;通过这种方式,参数链路质量在0到1之间变化,1代表最佳链路质量;
(2.3)遵循加性结合原则:采用以下线性公式(3)将ETL值附加到每一个节点;
ELTnode=WE*E+WL*LQ (3)
ETL值被附加在广播包后的footer内,节点选择具有最大ETL值的链路进行转发;改进MAC协议使用能量和链路信息代替单纯的链路信息以此使得网络负载更加均衡,不至于因为广播导致部分链路质量良好的节点死亡。
步骤三中,所述的延迟转发机制为:节点推迟广播δ时间,其中δ=1个时间槽。
有益效果:本发明由于采取以上技术方案,其具有以下优点:
1.在不影响网络端对端延迟的条件下有效地降低广播转发比和广播转发数,降低节点平均功耗
2.平衡网络负载,避免节点链路质量优良的节点过早死亡,延迟网络寿命。
3.对于大规模,低占空比网络性能优良。
附图说明
图1是网络延迟和转发数的平衡算法示意图;
图2是延迟转发算法示意图。
具体实施方式
下面结合附图对发明的技术方案进行详细的说明。
一种面向异步传感器网络HR-MM广播协议的实现方法,包括以下步骤:
步骤一,首先,通过维护邻节点的广播状态,平衡广播转发比和端对端延迟,在不增加延迟的基础上有效地降低广播转发比;
步骤二,其次,采用链路质量和节点剩余能量的多标准平衡机制,延长节点的平均寿命,进而延长网络的寿命;
步骤三,最后,通过延迟转发机制进一步减少广播转发数,减少冗余转发,降低广播碰撞的概率,降低节点的平均功耗。
步骤一通过网络延迟和转发数的平衡算法来实现,所述网络延迟和转发数的平衡算法具体为:
定义:在描述细节之前,首先给出一些用于描述算法的名词和定义。对于节点和它的邻节点,源节点知道的已经接收到广播消息的节点集合称作Receiving Set,简称RcvSet。如果RcvSet等于全部邻节点,那么意味着所有的邻节点都已经接收到了广播消息。如果在某一邻节点的唤醒周期,节点知道消息已经在邻节点的通信范围内被广播,那么该邻节点被处于covered状态,这种状态的节点的集合是CoverSet。同时,邻节点如果已经被知道接收到了广播消息,那么该节点是covered。需要注意的一点是,由于无线通信的不可靠性,RcvSet可能只是CoverSet的子集。WakeUpSet是一个用来追踪节点的唤醒和睡眠的集合。当节点接收到邻节点的唤醒消息,该邻节点被加到这个集合。当邻节点睡眠时,它将被移除这个集合。
我们假设每次只有一条消息通过网络广播。在我们采用的算法中,每一个节点都维护了周围邻节点的ID列表。相应地,每一个邻节点也维护他们的邻节点的ID列表。假设这些ID列表可以像IP或者MAC地址一样以确定的顺序排序。所以通过使用C++bitmap模板,RcvSet可以被压缩至几个字节附加早广播消息或者唤醒消息后。其次,我们假设每一个网络上的广播消息都有一个序列号,独一无二表征该消息。而且序列号以递增顺序连续分配给广播消息。对于每一个节点,有两个序列号比较重要。一个是最后接收到的序列号(LastRcvNO),该序列号是该节点所有接受到的广播消息的序列号中最大的数。另一个是当前序列号(CurrentNO),该序列号是该节点所知道的广播过程中的消息序列号。同时,节点可以将LastRcvNO附加在唤醒消息来辅助更新RcvSet和CoverSet。
该算法分为三个部分,唤醒消息处理,广播消息处理和动态转发调度。算法可以基于接收到或者无意偷听到的唤醒消息和广播消息动态的调度消息转发以适应邻节点的开关规律。
如图1所示,唤醒消息处理:一旦接收到唤醒消息,节点将发送唤醒消息的邻节点加入到WakeUpSet,根据唤醒消息中隐含的邻节点活跃时间设置计时器。当计时器触发,节点将邻节点从WakeUpSet去除。同时,邻节点的LastRcvNO和RcvSet被附加在唤醒消息后。如果LastRcvNO和CurrentNO均小于LastRcvNO,意味着邻节点一定已经接收到了当前节点还没有接受到的广播消息,那么这个节点把它自身的CurrentNO设置为邻节点的LastRcvNO,根据新的CurrentNO创建该广播消息的RcvSet和CoverSet,然后将这个邻节点和其他属于此邻节点的RcvSet的节点加入到RcvSet和CoverSet。否则,如果当前节点的CurrentNO等于邻节点的LastRcvNO,那么该节点将把这个邻节点和其他属于此邻节点的RcvSet的节点加入到RcvSet和CoverSet;如果邻节点的LastRcvNO小于节点的LastRcvNO,意味着邻节点还没有接收到新的广播消息,此时节点将邻节点从CoverSet中去掉完成更新操作。
广播消息处理:一旦从邻节点收到广播消息,节点首先比较广播消息的序列号和自己的CurrentNO。如果其CurrentNO小于序列号,意味着节点接收到新的广播消息,它将CurrentNO和LastRcvNO设为消息的序列号,根据新的CurrentNO创建RcvSet和CoverSet,将这个邻节点和其他属于此邻节点的RcvSet的节点加入到RcvSet和CoverSet,把这个消息覆盖的所有活跃节点加入CoverSet。否则,如果消息序列号等于CurrentNO,节点直接更新当前RcvSet和CoverSet。
动态转发调度:如果节点的RcvSet有过任何的更新操作,节点将检查其他所有的邻节点是否收到了广播消息。如果其他节点都已经收到了消息,那么广播结束,节点删除RcvSet和CoverSet。否则,节点检查WakeUpSet和CoverSet。如果集合中存在还没被覆盖的活跃邻节点,节点进一步检查自身或者这些活跃邻节点是否将迅速进入睡眠,并检查是否所有未覆盖邻节点都处于活跃状态。如果其中一项成立,那么节点发起消息转发。消息转发后,节点更新CoverSet,添加刚刚被转发的邻节点。
步骤二通过链路质量和节点剩余能量的平衡算法实现,所述链路质量和节点剩余能量的平衡算法包括:
能量水平:能量对于电池供电的无线传感器网络来讲是一种珍贵的资源。因为网络的寿命直接取决于它们可以获得的能量的多少。某些涉及到多次多跳传输的节点(比如靠近Sink的节点)能量会被迅速耗竭。所以改进的新协议应该着重考虑广播路径的选择,尽量选择能量最高的节点以尽可能的增加网络寿命。基于能量的剩余能量追踪节点的能量状态。节点的能量采用公式1按比例在0-1的范围内。
其中Er是剩余能量,Emax是节点可以获得的最大能量。能量值在0到1之间变化,其中0代表1代表能量满,0代表能量空(死亡节点)。
链路质量:智能无线传感网络操作在外界环境。即使在节点静止的环境中,中继节点也会崩溃,导致网络性能恶化。最短路径不一定总是最佳路径,因为通过恶劣路径传输数据导致数据包丢失和重传。因此,在选择候选节点时测量信号的强弱。链路质量也通过公式2规划到0到1的范围内。
其中Sp是接收数据包的信号强度,Smax是可获得的最大信号强度。通过这种方式,参数链路质量在0到1之间变化,1代表最佳链路质量。
遵循加性结合原则。我们可以将多个标准结合为一个标准以获得提高的性能。大多数MAC协议使用加权方法来结合多重标准。采用以下线性公式3将ETL值附加到每一个节点。
ELTnode=WE*E+WL*LQ (3)
ETL值被附加在广播包后的footer内,节点选择具有最大ETL值的链路进行转发。改进MAC协议使用能量和链路信息代替单纯的链路信息以此使得网络负载更加均衡,不至于因为广播导致部分链路质量良好的节点死亡。
步骤三中,所述的延迟转发机制为:
采用了延迟转发技巧来进一步减小单跳广播数目。延迟转发意味着节点在接收到第一个唤醒邻节点的beacon消息或者wake-up消息时不会立即转发广播消息。为了确保更多的邻节点接收到广播消息,节点推迟广播δ时间,其中δ=1个时间槽。通过这种方式,第一个唤醒的邻节点仍然可以接收广播消息,而在推迟时间之前唤醒的邻节点也可以接收到广播消息。所以延迟转发结合了投机转发和无线广播的优点。
如图2所示,假设对于发送节点有3个需要广播的接收节点。而通过延迟转发,发送节点只需要广播2次以确保所有的节点都接收到广播消息。这种方式会比纯粹的投机机制更高效。
以上所述仅是本发明的优选实施方式,应当指出:对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。