背景技术
地理位置路由是一种仅依靠周边邻居节点位置信息进行路径选取的路由算法,由于该类协议受网络规模的影响小、可扩展性好,因此在大规模无线传感器网络中有广阔的应用前景。
地理位置路由中普遍采用贪婪算法机制。节点使用贪婪算法时,通过选取比自身更接近目的节点的邻居节点作为其下一跳,如果不存在这样的节点,则出现局部极小值问题,或称路由空洞问题。克服路由空洞的方法主要有两类,一类是降低贪婪算法的失效比例,如利用邻居节点位置的平局值来取代自身位置的算法,利用距特定锚节点的距离重新建立各节点位置信息的算法。另一类是采用贪婪算法和恢复模式相结合的机制,该类路由首先工作在贪婪模式,在出现路由空洞后进入恢复模式,通过恢复模式找到更接近目的节点的节点后,路由再次进入贪婪模式。如利用贪婪模式和面路由模式相结合的路由算法,通过对网络进行划分进而利用子网络进行周边路由的路由算法。
上述第一类算法虽然可以提高传输成功率,但仍然会有部分节点无法克服路由空洞,如果其中有关键节点存在,则会对系统功能的完整性和有效性造成致命影响。此外,由于需要洪泛、回溯等机制完成位置信息的重建或空洞栅栏的设立,因此会导致较大的控制包开销,不利于网络节能。第二类方法虽然能使数据包顺利绕过空洞,但由于路径长度往往较大且随着网络规模的增大,节点需要耗费较多资源维护网络的链路拓扑图,所以不利于无线传感器网络的扩展;并且恢复模式需要较多的控制包开销,因此数据包经过空洞时频繁进入恢复模式会导致控制开销增大。
发明内容
本发明提出一种无线传感器网络路由空洞处理方法,该无线传感器网络路由空洞处理方法能使数据包顺利绕开空洞,复杂度低,计算量小,便于实施。
本发明的技术解决方案如下:
一种无线传感器网络路由空洞处理方法,包括以下步骤:
步骤1:发现节点(发现节点指贪婪算法失效的节点)发起探测包标定空洞边缘节点。
步骤2:发现节点把空洞边缘节点映射到一虚拟圆上得到相应的虚拟坐标,并发起分发包分发至各节点。
步骤3:对当前空洞周边区域进行划分,在不同区域中执行不同的策略来选取下一跳节点,绕开无线传感器网络中的空洞。
所述步骤1的具体步骤为:
发现节点在发现路由空洞后首先缓存当前要转发的数据包,随后生成空洞探测包并发起空洞探测过程,空洞探测算法使用右手法则(或左手法则)。各边缘节点在收到空洞探测包后,将自身ID和坐标追加到空洞探测包尾部,然后再转发到下一个边缘节点。
当同一空洞内出现两个或两个以上的空洞探测包时,以探测包内记录的空洞发现时间先后为依据,保留较早产生的探测包,丢弃较晚产生的探测包,确保一个空洞区域仅有一个发现节点。
在空洞探测算法执行过程中,发现节点将始终侦听探测包的转发,若其直接收到探测包或者侦听到探测包被发往已收到过探测包并转发的节点,则判断步骤1结束。
所述步骤2的具体步骤为:
首先根据空洞探测包内包含的空洞边缘节点ID和对应地理位置坐标信息计算出空洞的中心点
,然后再计算出边缘节点至该中心点的最大距离
。采用以空洞中心点
为圆心
为半径的圆来确定为该空洞的映射虚拟圆。映射虚拟圆确定之后,进行空洞边缘节点的虚拟坐标映射算法,包含两个规则:
规则1 以映射虚拟圆的圆心为起点,沿着各边缘节点作延长线,该延长线与映射虚拟圆的交点即为各边缘节点的虚拟映射节点,或称该边缘节点的虚拟位置。
规则2 若出现延长线与空洞边缘相交两次以上的情况,则查找该边缘节点前后首个仅相交一次的节点,然后在映射虚拟圆上这两个节点的虚拟位置中间段,按照空洞边缘的顺序,平均分配虚拟位置给其间的边缘节点。
映射完毕后,由发现节点发起虚拟位置分发包,将各边缘节点对应的虚拟位置坐标和空洞中心坐标沿着原探测包路径分发到相应的边缘节点。在边缘节点收到虚拟位置分发包之后,向自己的邻居节点广播虚拟信息数据包。
所述步骤3的具体步骤为:
根据空洞位置和数据包目的节点位置,把从目的节点向映射虚拟圆的两条切线与映射虚拟圆的圆心至两条切线的垂线所围成的闭合区域划分为接近区。在包含映射虚拟圆的两条切线区域内,去除接近区后剩余的区域划分为脱离区。在节点分布范围内,去除接近区和脱离区后的区域划分为自由区。
最后在不同区域内执行不同的路由规则:
规则1 处于接近区内的节点,选择虚拟圆上较靠近目的节点的映射节点作为下一跳路由节点;
规则2 处于脱离区内的节点,优先选择在实际地理位置上较靠近目的节点的节点作为下一跳路由节点;若不存在,则选择虚拟圆上较靠近目的节点的映射节点作为下一跳路由节点;
规则3处于自由区内的节点,若出现贪婪算法失效问题,则发起空洞探测过程。
本发明的有益效果。通过本发明的应用,在无线传感器网络中可以克服路由空洞导致的贪婪算法失效问题,同时仅通过一次处理,就可以使得通过空洞的其他来自不同源节点或不同目的节点的数据包顺利绕过空洞,提高了路由效率,降低了控制信息开销,从而节省能量消耗。
具体实施方式:
实施例1:
网络模型:
本文实例假定节点随机均匀分布在一个二维平面区域内,并且具有如下的性质:
(1) 所有的节点有唯一的节点标识ID;
(2) 所有节点是同构的,即具有相同的处理和通信能力;
(3) 所有节点均可通过GPS或其他的定位方法获得自身的地理位置坐标,
(4) 所有节点都预先设定存储空间来存储以下信息:
节点自身ID和节点地理位置二维坐标(X,Y);
是否使用虚拟坐标的布尔值;
自身虚拟坐标(X1,Y1)以及所属映射虚拟圆的圆心坐标(X2,Y2)和半径;
数据的目标节点或基站ID和节点地理位置二维坐标(X,Y);
邻居节点的ID及其相应的地理位置二维坐标(X,Y);
使用虚拟坐标的邻居节点ID及其相应的虚拟位置二维坐标(X,Y)。
本方法主要用到以下两种数据包和一种消息类型:
空洞探测包:数据包内存储贪婪算法的失效时间,边缘节点的ID和对应的地理位置信息,用于收集边缘节点信息。
虚拟位置分发包:数据包内存储虚拟映射圆的中心坐标和半径,各边缘节点的ID和对应的虚拟位置信息,用于当前空洞信息的分发。
虚拟信息数据包:包含了虚拟映射圆的中心坐标和半径,边缘节点的ID和对应的虚拟位置信息,用于向邻居节点广播。
下面参照附图对本发明提出的无线传感器网络路由空洞处理方法的具体实施方式进行说明:
如图1所示,某源节点向目的节点
发送数据包,当数据包到达节点
时,贪婪模式失效,出现路由空洞,此时转入空洞处理,主要分为三个阶段:
1)空洞探测阶段
如附图2所示,
为目的节点,节点
、
、
均可相互通信,节点
为当前空洞的发现节点。
生成空洞探测包后,按照右手法则选取节点
为一下跳节点。
把空洞探测包发送给节点
。节点
把其节点ID和地理位置添加到探测包内,同样按照右手法则选取下一条节点。在此过程中节点
将始终侦听探测包转发并接收,当节点
按照右手法则把探测包发送给
时,节点
接收到探测包,此时
判定探测算法执行完毕,
丢弃数据包不再转发。流程图如附图3所示。
2)虚拟映射阶段
首先发现节点
根据空洞探测包内包含的空洞边缘节点ID和对应地理位置坐标信息计算出空洞的中心点
,然后再计算出边缘节点至该中心点的最大距离
。以空洞中心点
为圆心、以
为半径的圆确定为该空洞的映射虚拟圆,如附图4中所示以
为圆心的圆。映射虚拟圆确定之后,进行虚拟坐标的映射,以附图5中所示空洞周边部分边缘节点
-
为例:
根据规则1,以映射虚拟圆的圆心
为起点,沿着边缘节点
和
作延长线,该延长线与映射虚拟圆的交点为
和
,
和
即别为边缘节点
和
的虚拟映射节点。
根据规则2,节点
、
和
的延长线与空洞边缘相交两次以上,则查找该边缘节点前后首个仅相交一次的节点
、
,然后
在映射虚拟圆上这两个节点的虚拟位置和
中间段,按照空洞边缘的顺序,平均分配虚拟位置得到点
、
和
,
、
和
即为节点
、
和
的虚拟映射节点。
映射完毕后,由发现节点发起虚拟位置分发包,将各边缘节点对应的虚拟位置坐标和空洞中心坐标沿着原探测包路径分发到相应的边缘节点。在收到虚拟位置分发包之后,边缘节点向自己的邻居节点广播信息数据包。
3)区域划分阶段
如附图6所示,
为空洞中心,虚线所示圆为映射虚拟圆。从目的节点向映射虚拟圆作两条切线,分别交于点
和
,由点
、
、
和
围成的四边形区域为该映射虚拟圆的接近区,如图中区域
;在包含映射虚拟圆的两条切线区域内,去除接近区,剩余的区域为该映射虚拟圆的接近区,如图中区域
;节点分布范围内,其它区域称为该映射虚拟圆的自由区,如图中区域
。
在三个不同区域中,路由的选择方式不同,但均采用贪婪算法。具体规则如下:
规则1 处于接近区的节点,即处于区域的节点,选择虚拟圆上较靠近目的节点的映射节点作为下一跳路由节点;
规则2 处于脱离区的节点,即处于区域
的节点,优先选择在实际地理位置上较靠近目的节点的节点作为下一跳路由节点;若不存在,则选择虚拟圆上较靠近目的节点的映射节点作为下一跳路由节点;
规则3处于自由区的节点,即处于区域的节点,若出现贪婪算法失效问题,则发起空洞探测过程。
至此,通过上述方法对空洞的处理,可以使得数据包顺利绕过空洞,并达到减少控制包,节约网络能量的目的。