一种适用于中心式水声网络多跳网络的路由协议转让专利

申请号 : CN201110177853.9

文献号 : CN102573001B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘旬李宇张春华黄海宁

申请人 : 中国科学院声学研究所

摘要 :

本发明涉及一种适用于中心式水声多跳网络的路由协议,该协议通过Sink节点广播路由广播矢量使得网络中其他节点建立和维护到Sink节点的路由,所述路由协议为:Sink节点向所述固定节点和移动节点周期性的广播路由矢量报文,接收到该路由矢量报文的固定节点和移动节点依据路由矢量报文更新维护其到达所述Sink节点的多跳路由;当有固定节点或移动节点有数据发送时,直接利用该节点上存储的多跳路由进行发送;如果有数据发送的移动节点没有存储到sink节点的路由时,该移动节点采用AODV重建策略寻找到达所述sink节点的路径;其中,所述路由矢量报文包含:Sink节点ID,Sink节点广播ID及到所述Sink节点的路由长度;所述固定节点和移动节点为普通节点。

权利要求 :

1.一种适用于中心式水声多跳网络的路由协议,该协议将水声多跳网络的节点分为三种类型:Sink节点,固定节点和移动节点,所述路由协议为:Sink节点向所述固定节点和移动节点周期性的广播路由矢量报文,接收到该路由矢量报文的固定节点和移动节点依据路由矢量报文更新维护其到达所述Sink节点的多跳路由,最终通过Sink节点广播的路由矢量报文使得网络中其他节点均建立和维护到该Sink节点的路由;当有固定节点或移动节点有数据发送时,直接利用该节点上存储的到所述Sink节点的多跳路由进行发送;如果有数据发送的移动节点没有存储到Sink节点的路由时,该移动节点采用AODV算法寻找到达所述Sink节点的路径;

其中,所述路由矢量报文包含:Sink节点ID,Sink节点广播ID及到所述Sink节点的路由长度;所述固定节点和移动节点为普通节点;

所述的Sink节点周期性的广播路由矢量报文包含如下步骤:当Sink节点的广播定时器超时,

步骤201,Sink节点将其广播ID加一,并将到该Sink节点的路由长度设置为0;

步骤202,生成一个包括Sink节点ID,Sink节点广播ID,到Sink节点的路由长度的路由矢量报文;其中,所述Sink节点广播ID和到Sink节点的路由长度为步骤201得到的值;

步骤203,所述Sink节点将生成的路由矢量报文广播出去;

所述更新维护到达Sink节点的多跳路由包含如下步骤:步骤301,任一接收节点接收到所述路由矢量报文后,首先判断路由矢量报文中的Sink节点广播ID是否比自己路由表中存储的Sink节点广播ID大,如果更大则更新路由表,如果Sink节点广播ID相等则进入下一步骤;如果小于,则不更新路由表;

步骤302,所述接收节点再判断比较所述路由矢量报文中的到Sink节点的路由长度与其存储的到Sink节点的路由长度,如果路由矢量报文中的到Sink节点的路由长度较小,则该接收节点更新路由表,否则不进行更新;

其中,所述接收节点为所述固定节点和移动节点中的某节点;

所述步骤302之后还执行如下步骤:进一步判断所述接收节点的类型,如果所述接收节点是固定节点,则需把路由矢量报文中的到Sink节点的路由长度加一后再次进行广播。

2.根据权利要求1所述的适用于中心式水声多跳网络的路由协议,其特征在于,所述移动节点如果依据其存储的多跳路由发送数据时,如果数据发送失败,则进一步采用AODV算法寻找新的路径。

3.根据权利要求2所述的适用于中心式水声多跳网络的路由协议,其特征在于,所述采用AODV算法寻找新的路径具体包括如下步骤:步骤1):任一节点X检查状态;

步骤2):节点X检查到有下层数据包到达;

步骤3):接收数据包为AODV数据包;

步骤4):节点X检查AODV数据包类型,如果为路由请求数据报文RREQ,则转到步骤5);

如果为路由回复数据报文RREP,则转到步骤12);

步骤5):检查节点X的类型,如果节点X为固定节点,则转到步骤17);否则转到步骤

6);

步骤6):节点X检查是否第一次接收到该RREQ,如果是转到步骤17);否则转到步骤

7);

步骤7):建立到RREQ中源节点的反向路径,缓存RREQ的ID;

步骤8):检查节点X是否是RREQ的目的节点,如果是转到步骤10);否则转到步骤9);

步骤9):检查节点X是否有到RREQ目的节点的有效路由,有则转到步骤10);否则转到步骤11);

步骤10):发送路由回复数据报文RREP到RREQ的源节点;转到步骤17);

步骤11):把RREQ中的跳数信息加1,然后广播出去;转到步骤17);

步骤12):节点X检查RREP中的路由是否比自身路由表中的路由更新,如果RREP中的路由更新,转到步骤13);否则转到步骤17);

步骤13):更新路由表;

步骤14):发送缓存中的DATA数据包;

步骤15):检查节点X是否是RREP的目的节点,如果是,则转到步骤17);如果不是则转到步骤16);

步骤16):向RREP目的节点转发RREP;

步骤17):转到步骤1)。

说明书 :

一种适用于中心式水声网络多跳网络的路由协议

技术领域

[0001] 本发明属于水声网络领域,特别涉及一种适用于中心式水声网络多跳网络的路由协议。

背景技术

[0002] 水声网络在海洋测量、资源勘探、灾害预报以及军事等方面具有广阔的应用前景。由于水声传播损失随距离而增加,水声网络一般采用多节点中继的方式进行传输,因此路由协议的选择十分重要。
[0003] 水声网络属于无线通信网络,传统的计算机网络的路由协议不适用于水声网络。由于水声网络传播延迟、带宽窄,陆上无线网络的路由协议直接应用在水声网络中也不能达到较好的工作性能。
[0004] 目前无线网络的路由协议主要分为两类:先验式路由协议和按需式路由协议。先验式路由协议通过节点之间定期的广播交换路由信息,最终达到网络所有节点收敛到路由一致,每个节点都有到达网络中任意节点的路由。先验式路由协议延迟低,但是周期性的路由更新增大了路由开销、同时会占用大量带宽,在带宽受限的水声网络中并不能很好的工作。按需式路由协议在有数据传输时才在网络中查询路由,不需要维护到所有节点的路由表,节省了路由的开销,但是路由建立延迟较大,同时按需式路由协议比较适合拓扑变化快速的网络,水声网络中许多节点静止或运动速度很慢,采用完全的按需式路由协议也不能达到很好的性能。
[0005] 中心式多跳网络是水声网络的一种基本拓扑形式。在中心式多跳网络中,存在一个Sink节点和大量普通节点,普通节点只有水声通信模块,Sink节点同时有水声通信模块和无线通信模块,普通节点把数据通过多跳中继方式发送给Sink节点,Sink节点再通过无线模块把数据发送给陆地中心。由于中心式多跳网络的数据通信一般只在Sink节点和普通节点间进行,如果采用先验式路由协议,大量的协议开销被用在建立普通节点之间的路由上,显然是不必要的;如果采用按需式路由协议,由于普通节点经常性的要与Sink节点通信,会造成频繁的路由洪泛查找,同时普通节点中除了AUV等移动较快的节点外,大部分是移动速度很慢或者静止的数据采集节点,因此按需式的路由协议也是不适用的。

发明内容

[0006] 本发明的目的在于,为解决上述问题,提出一种适用于中心式水声网络多跳网络的路由协议。
[0007] 针对中心式多跳网络这一水声网络形式,本发明提供一种混合式的路由协议称之为UW-CAODV。
[0008] 本发明提供一种适用于中心式水声多跳网络的路由协议,该协议将网络节点分为三种类型:Sink节点,固定节点和移动节点。该协议为了通过Sink节点周期性的广播路由矢量,使得网络中的节点建立到达Sink节点的多跳路由,当节点有数据发送时,可以直接利用该路由进行发送,而不用建立路由,相对AODV等按需式协议,能提高吞吐量。
[0009] 上述技术方案中,所述的周期式Sink节点广播路由矢量建立路由的方法如下:
[0010] Sink节点的广播定时器超时,Sink节点将自己的广播ID自加1,到Sink节点的路由长度设置为0,然后生成一个路由矢量报文ROUTE_BROADCAST,路由矢量报文包括Sink节点ID,Sink节点广播ID,到Sink节点的路由长度。最后将该路由矢量报文广播出去。
[0011] 固定节点或移动节点更新维护到达Sink节点多跳路由的方法包含如下步骤:任一节点接收到路由矢量报文后,判断SINK_BID是否比自己路由表中的SINK_BID大,如果更大则更新路由表,如果SINK_BID相等则判断比较ROUTE_LENGT H,如果ROUTE_BROADCAST中的ROUTE_LENGTH更小,则更新路由表,否则不进行更新,如果SINK_BID比自己路由表中的SINK_BID小,则不更新路由表。如果本节点是移动节点,则仅更新路由表,如果本节点是静止节点,则一旦路由表进行了更新,还要把ROUTE_BROADCAST中ROUTE_LENGTH加1后再次广播出去。
[0012] 所述的适用于中心式水一般声多跳网络路由协议,周期式的Sink广播能满足固定节点网络的路由需求,但是当存在移动节点时,周期式的广播不能适应移动节点快速移动造成的路由变化。为了解决移动节点的接入问题,所述协议对移动节点采用周期式Sink节点广播和AODV按需协议结合的策略,移动节点首先按上一次Sink节点广播建立的路由进行数据传输,如果数据传输失败,则采用AODV算法寻找新的路径。
[0013] 优化的,所述移动节点如果依据其存储的多跳路由发送数据时,如果数据发送失败,则进一步采用AODV算法寻找新的路径。
[0014] 所述采用AODV算法寻找新的路径具体包括如下步骤:
[0015] 步骤1):任一节点X检查状态;
[0016] 步骤2):节点X检查到有下层数据包到达;
[0017] 步骤3):接收数据包为AODV数据包;
[0018] 步骤4):节点X检查AODV数据包类型,如果为路由请求数据报文RREQ,则转到步骤5);如果为路由回复数据报文RREP,则转到步骤12);
[0019] 步骤5):检查节点X的类型,如果为节点为移动节点,则转到步骤17);否则转到步骤6);
[0020] 步骤6):节点X检查是否第一次接收到该RREQ,如果是转到步骤17);否则转到步骤7);
[0021] 步骤7):建立到RREQ中源节点的反向路径,缓存RREQ的ID;
[0022] 步骤8):检查节点X是否RREQ的目的节点。如果是转到步骤10);否则转到步骤9);
[0023] 步骤9):检查节点X是否有到到RREQ目的节点的有效路由,有则转到步骤10);否则转到步骤11);
[0024] 步骤10):发送路由回复数据报文RREP到RREQ的源节点;转到步骤17);
[0025] 步骤11):把RREQ中的跳数信息加1,然后广播出去;转到步骤17);
[0026] 步骤12):节点X检查RREP中的路由是否比自身路由表中的路由更新。如果RREP中的路由更新,转到步骤13);否则转到步骤17);
[0027] 步骤13):更新路由表;
[0028] 步骤14):发送缓存中的DATA数据包;
[0029] 步骤15):检查节点X是否RREP的目的节点,如果是,则转到所述的步骤17);如果不是则转到步骤16);
[0030] 步骤16):向RREP目的节点转发RREP;
[0031] 步骤17):转到步骤1)。
[0032] 综上所述:本发明的所述的路由策略为:
[0033] 当节点有数据要发送时,首先检查自己路由表中是否存在到目的节点的有效路由。如果有路由,则根据路由向下一跳节点发送数据。如果没有路由或者发送数据失败,如果是固定节点则缓存数据包退出发送流程,如果是移动节点则先缓存数据包,再发起AODV寻径算法。
[0034] 本发明的优点在于,在中心式水声多跳网络中,相对一般的AODV协议,能获得更高的吞吐量性能,同时,对移动节点采用AODV重建策略进一步提高了移动节点的数据包接受率。

附图说明

[0035] 图1为本发明的协议的软件主流程图;
[0036] 图2为本发明的路由广播超时模块流程图;
[0037] 图3为本发明的发送模块流程图;
[0038] 图4为本发明的接收模块流程图;
[0039] 图5为本发明的AODV寻径模块流程图;
[0040] 图6为本发明的DATA接收模块流程图;
[0041] 图7为本发明的路由矢量报文接收模块流程图;
[0042] 图8为本发明的AODV接收模块流程图;
[0043] 图9为本发明实实施例采用中心式网络拓扑结构图;
[0044] 图10为本发明的UW-CAODV协议和现有技术的AODV协议的比较仿真图;
[0045] 图11为本发明的UW-CAODV协议中移动节点采用AODV策略和不采用AODV策略的比较的仿真图。

具体实施方式

[0046] 下面结合附图和具体实施例对本发明进行详细的说明。
[0047] 当Sink节点的广播定时器超时,Sink节点将自己的广播ID自加1,到所述的Sink节点的路由长度设置为0,然后生成一个路由矢量报文ROUTE_BROADCAST,路由矢量报文包括所述的Sink节点ID,所述的Sink节点广播ID,到所述的Sink节点的路由长度;最后将该路由矢量报文广播出去;任一节点接收到路由矢量报文后,判断SINK_BID是否比自己路由表中的SINK_BID大,如果更大则更新路由表,如果SINK_BID相等,则判断比较ROUTE_LENGT H;如果ROUTE_BROADCAST中的ROUTE_LENGTH更小,则更新路由表,否则不进行更新;如果SINK_BID比自己路由表中的SINK_BID小,则不更新路由表;如果本节点是移动节点,则仅更新路由表;如果本节点是静止节点,则一旦路由表进行了更新,还要把ROUTE_BROADCAST中ROUTE_LENGTH加1后再次广播出去。
[0048] 所述通过Sink节点广播路由广播矢量建立和维护其他节点到达Sink节点的路由,针对移动节点,进一步采用Sink节点广播维护和AODV被动重建路由相结合的策略,提高了移动节点到Sink节点的数据包接收率。
[0049] 所述的Sink节点广播和AODV被动重建路由相结合的过程包括:
[0050] 当Sink节点有数据要发送时,首先检查自己路由表中是否存在到目的节点的有效路由;如果有路由,则根据路由向下一跳节点发送数据;如果没有路由或者发送数据失败,如果是固定节点则缓存数据包退出发送流程,如果是移动节点则先缓存数据包,再发起AODV寻径算法。
[0051] 参照图1、图2、图7,所述针对一次由Sink节点发起的路由广播具体包含如下步骤:
[0052] 步骤1):Sink节点检查状态;
[0053] 步骤2):Sink节点的路由广播定时器超时,S把SINK_BID加1,ROUTE_LENGTH设置为0,产生一个路由矢量报文广播出去;
[0054] 步骤3):Sink节点重新设置路由广播定时器为2000s;
[0055] 步骤4):任一节点X检查状态;
[0056] 步骤5):节点X接收到路由矢量报文;
[0057] 步骤6):节点X比较路由矢量报文中的SINK_BID和自身路由表中存储的SINK_BID,如果路由矢量报文中的SINK_BID较大,转到所述的步骤8);如果自身路由表中的SINK_BID比较大,则转到所述的步骤12);如果二者相等,则转到所述的步骤7);
[0058] 步骤7):节点X比较路由矢量报文中的ROUTE_LENGTH和自身路由表中存储的RO UTE_LENGTH,如果路由矢量报文中的ROUTE_LENGTH比较小,则转到所述的步骤8);否则转到所述的步骤12);
[0059] 步骤8):节点X更新自己的路由表中到Sink节点的路由;
[0060] 步骤9):检查节点X是哪一类节点,如果节点X是Sink节点或移动节点,转到步骤12);如果节点X是静止节点,转到所述的步骤10);
[0061] 步骤10):节点X把接收到路由矢量报文中的ROUTE_LENGTH自加1;
[0062] 步骤11):节点X广播新的路由矢量报文;
[0063] 步骤12):节点X转到所述的步骤4)。
[0064] 参照图1、图3和图5,所述的针对一次数据发送过程具体包含如下步骤:
[0065] 步骤1):任一非Sink节点Y检查状态;
[0066] 步骤2):节点Y有上层数据包需要发送到Sink节点;
[0067] 步骤3):节点Y检查自己是否有到达Sink节点的有效路由,如果有,则转到步骤4);如果没有,则转到步骤6);
[0068] 步骤4):节点Y发送数据;
[0069] 步骤5):检查数据是否发送成功,如果发送成功,则转到步骤10);如果发送失败,则转到步骤6);
[0070] 步骤6):缓存发送数据包;
[0071] 步骤7):检查节点Y是哪一类型节点,如果是静止节点,则转到步骤10);如果是移动节点,则转到步骤8;
[0072] 步骤8):节点Y产生一个路由请求数据报文RREQ并广播出去;
[0073] 步骤9):节点Y设置路由请求超时定时器;
[0074] 步骤10):节点Y转到步骤1)。
[0075] 参照图1、图4、图5、图8,所述的针对一次发起AODV请求后的处理具体包括如下步骤:
[0076] 步骤1):任一节点X检查状态;
[0077] 步骤2):节点X检查到有下层数据包到达;
[0078] 步骤3):接收数据包为AODV数据包;
[0079] 步骤4):节点X检查AODV数据包类型,如果为路由请求数据报文RREQ,则转到步骤5);如果为路由回复数据报文RREP,则转到步骤12);
[0080] 步骤5):检查节点X的类型,如果为节点为移动节点,则转到步骤17);否则转到步骤6);
[0081] 步骤6):节点X检查是否第一次接收到该RREQ,如果是转到步骤17);否则转到步骤7);
[0082] 步骤7):建立到RREQ中源节点的反向路径,缓存RREQ的ID;
[0083] 步骤8):检查节点X是否RREQ的目的节点。如果是转到步骤10);否则转到步骤9);
[0084] 步骤9):检查节点X是否有到RREQ目的节点的有效路由,有则转到步骤10);否则转到步骤11);
[0085] 步骤10):发送路由回复数据报文RREP到RREQ的源节点;转到步骤17);
[0086] 步骤11):把RREQ中的跳数信息加1,然后广播出去;转到步骤17);
[0087] 步骤12):节点X检查RREP中的路由是否比自身路由表中的路由更新。如果RREP中的路由更新,转到步骤13);否则转到步骤17);
[0088] 步骤13):更新路由表;
[0089] 步骤14):发送缓存中的DATA数据包;
[0090] 步骤15):检查节点X是否RREP的目的节点,如果是,则转到所述的步骤17);如果不是则转到步骤16);
[0091] 步骤16):向RREP目的节点转发RREP;
[0092] 步骤17):转到步骤1)。
[0093] 各个节点的初始位置如图9所示,图9所示的网络中使用UW-CAODV协议,在ns中进行仿真实验。声速取1500m/s,仿真场景为1600m x 1600m,25个节点中,一个Sink节点位于场景中央,16个固定节点以Sink节点为中心排成4x4的正方形,固定节点间间距为400m,节点最大通信距离为500m,8个移动节点在仿真场景内随机方向运动。
[0094] 图10仿真比较了UW-CAODV协议和AODV协议。移动节点最大速度为2m/s。从图中可以看出,UW-CAODV协议的吞吐量远远高于AODV协议,这是因为UW-CAODV协议不需要每次数据传输时进行全网洪泛路由请求,而是直接使用Sink路由广播阶段建立的路由,降低了路由的开销。
[0095] 图11仿真比较了UW-CAODV协议中移动节点采用AODV算法重建路由和不采用AODV算法重建路由的情况。该图为不同移动速度下移动节点是否采用AODV策略的接收率比较,CAODV为采用AODV策略的协议,CNAODV为不采用AODV策略的协议。从图中可以看出,随着移动节点移动速度的提高,采用AODV算法重建路由后,数据包接受率变化很小,而不采用AODV算法重建路由的协议,数据包接收率迅速降低。这是因为不采用AODV算法的协议中,移动节点因移动导致原有路由失效以后,需要等到下一次Sink节点发起路由广播才能建立路由,由于Sink节点的广播周期较长,因而数据包丢失严重。
[0096] 最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。