一种Ad Hoc移动网络路由修复方法
【专利摘要】本发明公开了一种Ad?Hoc移动网络路由修复方法,属于网络【技术领域】。所述Ad?Hoc移动网络在路由建立阶段,同时建立源节点到目的节点的前向路由,以及目的节点到源节点的反向路由;路由链路断裂后,通过比较断链处离目的节点与源节点的跳数来选择本地修复的方向:如果断链处离源节点的跳数大于或等于离目的节点的跳数,则由断链处的上游节点进行以目的节点为修复目的节点的向下路由修复;反之,由断链处的下游节点进行以源节点为修复目的节点向上路由修复。本发明可降低路由维护造成的时延与路由控制分组的开销,提高路由维护机制的灵活性。
【专利说明】—种Ad Hoc移动网络路由修复方法
【技术领域】
[0001]本发明涉及一种Ad Hoc移动网络路由修复方法,尤其涉及一种基于跳数的Ad Hoc移动网络双向路由修复方法,属于网络【技术领域】。
【背景技术】
[0002]移动Ad Hoc网络是一种拓扑动态变化的多跳型无线通信网络,路由协议是移动Ad Hoc网络的重要技术之一。路由协议主要负责路由建立和路由维护工作。对于拓扑高度动态变化的移动Ad Hoc网络,路由的频繁断裂是不可避免的,及时地以较小的开销进行路由维护,可以大为提高路由的稳健性、时效性、抗毁性及网络性能。
[0003]移动Ad Hoc网络按需路由协议,以其开销小、适应性强的优点,适用于动态变化的网络拓扑、资源受限的移动Ad Hoc网络。AODV、DSR、LAR、ZRP、CBRP等都是经典的按需式路由协议。按需式路由主要分为路由发现和路由维护两个阶段:
在路由发现阶段,通过路由请求分组RREQ (Route Request)和路由应答分组RREP(Route Reply)来建立路由。源节点广播以目的节点地址为搜索条件的RREQ,节点接收到新的RREQ,更新或添加到源节点的路由信息,若没有到目的节点的有效路由,就继续广播转发该RREQ,直到目的节点或具有到目的节点的有效路由的中间节点接收到该RREQ后,发送RREP到源节点进行路由应答,源节点接收到RREP后便可建立源节点与目的节点之间的双向路由。双向路由指反向路由和前向路由,反向路由为目的节点到源节点的路由,是在广播RREQ分组的过程中建立的;前向路由为源节点到目的节点的路由,是在单播RREP分组的过程中建立的。节点的路由表项中存储着目的节点、到目的节点的下一跳节点、到目的节点的跳数等信息。
[0004]在路由维护阶段,主要通过路由出错报文RERR (Routing Error)来维护路由。目前,路由维护方法主要有四类:一是源修复方法,当路由链路断裂后,断链处上游节点发送RERR给源节点,由源节点进行路由修复:源节点发送以目的节点地址为搜索条件的RREQ,目的节点或具有到目的节点的有效路由的中间节点接收到RREQ后发送RREP给源节点,源节点收到RREP后完成路由修复。这类方法简单易行,但造成的时延和网络开销比较大,如早期的AODV协议。二是备用路由方法,节点维护多条到目的节点的路由,当原路由断裂后,节点选择一条备用路由。这类方法减小了时延,但网络开销较大,且可靠性不高,备用路由因MANET动态变化的拓扑会很容易失效,如A0DV-BR,DSR等协议。三是本地修复方法,当路由断裂后,直接由断链处上游节点发起到目的节点的路由修复:断链处上游节点发送以目的节点地址为搜索条件的RREQ,目的节点或具有到目的节点的有效路由的中间节点接收到RREQ后返回RREP,上游节点在一定的等待时间内收到RREP,便完成路由修复;若没有收到RREP,则广播RERR以通知其他节点该链路断裂,源节点重新建立到目的节点的路由。这类方法可有效减小时延与网络开销。但当断链处离目的节点较远时,就等效于源修复方法了,如后期的AODV协议。四是一跳修复方法,此类方法是本地路由修复方法的改进,当路由断裂后,由断链处上游节点发起到断链处的下一跳节点或下两跳节点的路由修复,断链处上游节点发送以下一跳节点或下两跳节点地址为搜索条件的RREQ,此类方法能进一步降低时延与网络控制分组的开销,但其没有以目的节点为修复目的节点,风险较大,成功率不高。各类按需路由协义基本采用上述四类路由维护方法的一类或几类的结合。如DSR、AODV-BR采用备用路由机制,AODV, ZRP、CBRP采用了源修复机制和本地修复机制。以上路由维护方法有各自的优缺点,但存在着共同的缺陷:它们都采用路由“单向”修复方式。路由“单向”修复,即无论断链处位于何处,总是进行面向断链处下游的目的节点的进行路由修复,灵活性不够,特别当断链处离目的节点较远时,将会带来较大的网络开销和时延。
【发明内容】
[0005]本发明所要解决的技术问题在于克服现有移动Ad Hoc网络按需路由协议中路由“单向”修复方法的不足,提供一种Ad Hoc移动网络路由修复方法,可降低路由维护造成的时延与路由控制分组的开销,提高路由维护机制的灵活性。
[0006]本发明的技术方案具体如下:
一种Ad Hoc移动网络路由修复方法,所述Ad Hoc移动网络在路由建立阶段,同时建立源节点到目的节点的前向路由,以及目的节点到源节点的反向路由;路由链路断裂后,通过比较断链处离目的节点与源节点的跳数来选择本地修复的方向:如果断链处离源节点的跳数大于或等于离目的节点的跳数,则由断链处的上游节点进行以目的节点为修复目的节点的向下路由修复;反之,由断链处的下游节点进行以源节点为修复目的节点向上路由修复。
[0007]优选地,所述比较断链处离目的节点与源节点的跳数,具体通过以下方法:断链处的上游节点和下游节点分别计算各自到源节点的跳数与到目的节点的跳数之间的差值;对于上游节点,如该差值大于或等于-1,则断链处离源节点的跳数大于或等于离目的节点的跳数;对于下游节点,如该差值小于等于0,则断链处离源节点的跳数小于离目的节点的跳数。
[0008]优选地,所述向下路由修复具体如下:所述上游节点以其距离目的节点的跳数作为RREQ的广播范围,以目的节点地址作为RREQ的搜索条件,以源节点地址作为RREQ的始发地址,以其距离源节点的跳数值加I作为RREQ中的跳数初值,广播RREQ分组,并等待RREP分组应答;若在限定时间内收到RREP分组,则向下路由修复成功,若没有收到,则在网络范围内广播RREQ分组;若仍然无法修复路由,则上游节点广播RERR分组,通知其他节点。
[0009]优选地,所述向上路由修复具体如下:所述下游节点以其距离源节点的跳数作为RREQ的广播范围,以源节点地址作为RREQ的搜索条件,以目的节点地址作为RREQ的始发地址,以其距离目的节点的跳数值加I作为RREQ中的跳数初值,广播RREQ分组,并等待RREP分组应答;若在限定时间内收到RREP分组,则向上路由修复成功,若没有收到,则在网络范围内广播RREQ分组;若仍然无法修复路由,则广播RERR分组,通知其他节点。
[0010]进一步地,当路由修复成功后,按照以下方法进行路由更新:
负责进行修复的节点沿反向路由向源节点发送路由更新通知分组,所述路由更新通知分组包括报文类型、源节点地址、目的节点地址;
沿途节点依次根据接收到的路由更新通知分组中的目的节点地址与转发该路由更新通知分组的上一跳节点信息,更新或添加自身到目的节点的前向路由信息;
源节点根据所接收到的路由更新通知分组中的源节点地址与目的节点地址,以及转发该路由更新通知分组的上一跳节点,首先更新自身路由表中到目的节点的下一跳节点信息,然后沿前向路由向目的节点发送路由更新请求分组,所述路由更新请求分组包括报文类型、源节点地址、目的节点地址、跳数,其中跳数的初始值为I;
沿途节点依次根据接收到的路由更新请求分组更新或添加到源节点地址的反向路由信息:首先,更新自身到源节点的跳数为路由更新请求分组中的跳数,更新自身到源节点的下一跳节点为转发该路由更新请求分组的上一跳节点,然后将路由更新请求分组中的跳数值加I后继续沿前向路由转发,直到到达目的节点;
目的节点接收到路由更新请求分组后沿反向路由发送路由更新应答分组,所述路由更新应答分组包括报文类型、源节点地址、目的节点地址、跳数,其中跳数的初始值为I;
沿途节点依次根据接收到的路由更新应答分组更新或添加到目的节点地址的前向路由信息:首先,更新自身到目的节点的跳数为路由更新应答分组中的跳数,更新自身到目的节点的下一跳节点为转发该路由更新应答分组的上一跳节点,然后将路由更新应答分组中的跳数值加I后继续沿反向路由转发,直到到达源节点。
[0011]与现有技术相比,本发明的路由修复方法根据跳数作为判断依据,灵活的选择向离断链处较近的一端进行路由本地修复,打破了传统的单向路由修复方式的局限,能够有效的缩小路由修复的范围与距离,降低了路由修复的时延与路由控制分组的开销。
【专利附图】
【附图说明】
[0012]图1是【具体实施方式】中所述本发明路由修复方法的总体流程图;
图2是向下路由修复过程的流程图;
图3是向上路由修复过程的流程图;
图4是路由更新过程的流程图;
图5是路由更新通知分组RUNOT的格式;
图6是路由更新请求分组RUREQ的格式;
图7是路由更新应答分组RUREP的格式;
图8是向下路由修复过程的示意图;
图9是向上路由修复过程的示意图;
图10是路由更新过程的示意图。
【具体实施方式】
[0013]现有Ad Hoc网络路由协议主要的四类路由维护方法存在着一个共同的缺陷:它们都采用路由“单向”修复方式。无论断链处位于何处,总是以断链处下游的目的节点为修复方向,进行路由修复。灵活性不够,特别当断链处离目的节点较远时,将会带来较大的网络开销和时延。而在网络中,对于单个节点,往往离它越近的节点拥有到它的路由可能性越大,其次,就算附近节点都没有到它的路由,那么离该节点越近,用于建立到它的路由所用的RREQ控制分组广播范围也会越小,开销也会越小,相应的时延也会越小。因此,在路由修复中,离修复目的点越近,路由修复所用的时延和控制分组也就越小。
[0014]本发明针对以上问题,提出了一种基于跳数的移动Ad Hoc网络双向路由修复方法,以路由断链处距离源节点与目的节点的跳数(距离)为判断依据,灵活的采用双向本地路由修复方法,选择距离路由断链处较近的一端为路由修复的方向,进行路由本地修复,该方法主要包括如下内容(为了便于表示,本发明将以目的节点端为路由修复方向的路由修复称为“向下路由修复”,将以源节点端为路由修复方向的路由修复称为“向上路由修复”,
将节点距离目的节点的跳数用表示,将节点距离源节点的跳数用Hops表示)。
[0015]a)当路由链路断开后,根据断链处离目的节点与源节点的跳数(距离)比较来选择本地修复的方向。如果断链处离源节点的跳数大于或等于离目的节点的跳数,则说明断链处离目的节点较近,则由断链处的上游节点进行向下路由修复。如果断链处离源节点的跳数小于离目的节点的跳数,则说明断链处离源节点较近,则由断链处的下游节点进行向上路由修复。
[0016]需要说明的是,在Ad Hoc网络按需路由协议的路由建立阶段,源节点通过广播RREQ及反馈的RREP建立好到目的节点的前向路由,路由沿途各节点的路由表中存储着该
路由的目的节点地址、到目的节点的下一跳节点地址、到目的节点的跳数等信息。本
发明提出的路由修复方法,要求在路由建立阶段,同时建立源节点到目的节点间的双向路由:前向路由与反向路由,反向路由即指目的节点到源节点的路由,这点在信道对称的AdHoc网络是容易做到的,同时很多路由协议也是这么做的,如AODV协议。节点仅需利用源节点广播的RREQ分组便可轻松的建立到源节点的反向路由。在反向路由中,节点路由表中
存储源节点地址、到源节点的下一跳节点地址、到源节点的跳数等信息。为了便于计
算与实施,本发明在路由建立阶段,RREQ分组与RREP分组中的跳数初始值设为1,对于源节
点,其Hops值设为O,对于目的节点,其Hopd值设为O。
[0017]b)对于向下路由修复,断链处的上游节点采用本地修复的方式,以其距离目的节点的跳数Hopli作为RREQ的广播范围TTL值,以目的节点地址作为RREQ的搜索条件,以源
节点作为RREQ的始发地址,以其距离源节点的跳数+1作为RREQ中的跳数初值,广播RREQ分组,并等待RREP分组应答;若在限定时间内收到RREP分组,则向下路由修复成功,若没有收到,则在网络范围内广播RREQ分组;若仍然无法修复路由,则广播RERR分组,通知其他节点。
[0018]需要说明的是,本发明优选以修复始发节点距离目的节点的跳数作为RREQ
的广播范围TTL值,缩小了 RREQ的广播范围,减小了开销,同时最大程度的又保证了 RREQ的广播的有效性,在其余节点都没有到目的节点的有效路由的最坏情况下,该RREQ也有较大的可能性到达目的节点。
[0019]c)对于向上路由修复,断链处的下游节点同样采用本地修复的方式,以其距离源节点的跳数AfoP5作为RREQ的广播范围TTL值,以源节点地址作为RREQ的搜索条件,以目
的节点作为RREQ的始发地址,以其距离目的节点的跳数+1作为RREQ中的跳数初值,广播RREQ分组,并等待RREP分组应答;若在限定时间内收到RREP分组,则向上路由修复成功,若没有收到,则在网络范围内广播RREQ分组;若仍然无法修复路由,则广播RERR分组,通知其他节点。
[0020]d)在路由修复成功后,为了确保路由的正确与正常工作,必须通知源节点进行路由更新,保证新路由信各节点路由信息的一致性,尤其是各节点路由表中的跳数信息。本发明优选采用以下的路由更新方法:路由修复成功后,由断链处路由修复节点沿反向路由向给源节点发送路由更新通知分组RUNOT (Route Update Notice),源节点接收到路由更新通知分组RUN0T,沿前向路由发送路由更新请求分组RUREQ(Route Update Requrst)直到目的节点,沿途各节点依次更新其到源节点的反向路由信息。目的节点收到更新请求分组RUREQ后,沿反向路由发送路由更新应答分组RUREP (Route Update Reply)直到源节点,沿途各节点依次更新其到目的节点的前向路由信息 。当源节点接收路由更新应答分组RUREP后,便完成了路由更新,便可使用新的路由。
[0021]需要说明的是,采用上述路由更新方法,需要增加3个路由更新控制分组:路由更新通知分组RUN0T、路由更新请求分组RUREQ、路由更新应答分组RUREP。其中,路由更新通知分组RUNOT包括报文类型、源节点地址、目的节点地址;路由更新请求分组RUREQ包括报文类型、源节点地址、目的节点地址、跳数,其中跳数的初始值为I ;路由更新应答分组RUREP包括报文类型、源节点地址、目的节点地址、跳数,其中跳数的初始值为I。路由更新控制分组的数据量较少,并且路由更新仅需要一次数据的双向传输,并不会增加太多的路由开销和时延。
[0022]为了便于公众更好地理解,下面结合附图对本发明技术方案进行进一步详细说明。
[0023]图1是本发明的路由修复方法的总体流程图,如图所示,当路由链路断裂后,根据路由断链处距离源节点与目的节点的跳数^、Zfopfl来判断本地路由修复的方向:若
Zfop3 >= Hopd ,则采用向下路由修复 '若Hops < Hopi ,则采用向上路由修复。若路由修复成功,则进行路由更新,否则,广播RERR分组,通知其余节点。
[0024]为让断链处的上下游节点在无需干预下就能自主准确的选择路由修复方向,综合考虑路由节点个数的奇偶性,根据统计规律发现,如果上游节点的Hops - Hopi >=-1,那
么下游节点必定丑印5 - Hopd >0 ;如果上游节点的Hops - Hopd <-1,那么下游节点必定Hops - Hopi〈=0。上游节点的Hop5 - Hopd >=-1同时下游节点的- Hopd〈=0这种情况是不可能发生的,因此,优选地,当路由发生断链后,断链处的上下游节点分别计算自己的,如果上游节点Zfop1- Hopd >=-1,那么就上游节点自动进行向下
路由修复;如果下游节点- ^opi〈=0,那么下游节点就自动进行向上路由修复,两者在不会发生冲突,也不会同时发生。
[0025]参考图2,图2是向下路由修复过程的流程图,主要包括以下步骤:
步骤1:当路由链路断裂后,断链处的上游节点首先查询路由表中存储的到源节点与目的节点的跳数将两者进行比较,如果《少;-Hops >=-1,则执行步骤2,否贝U,不做处理。
[0026]步骤2:采取向下路由修复,断链处的上游节点广播以目的节点地址为搜索条件的RREQ分组,RREQ的广播范围初值设为该上游节点距离目的节点的跳数,即TTL= Hopd ,以源节点地址作为RREQ的始发节点地址,RREQ中的跳数初值Hop Count设为该上游节点距离源节点的跳数值加1,即Hop Count= Hop5 +1。
[0027]步骤3:断链处的上游节点在定时时间内,如果没有接收到RREP分组,则说明第一次路由修复失败,则执行步骤4,否则,执行步骤6。
[0028]步骤4:断链处的上游节点在网络规模内广播以目的节点地址为搜索条件的RREQ分组,进行第二次的路由修复,除TTL值外,第二次RREQ的其余参数设置与第一次路由修复的RREQ相同。
[0029]步骤5:如果第二次路由修复成功,则执行步骤6。否则,执行步骤7。
[0030]步骤6:断链处的上游节点通知源节点进行路由更新。
[0031]步骤7:向下路由修复失败,断链处的上游节点广播RERR分组,通知其余节点。
[0032]参考图3,图3是向上路由修复过程的流程框图,主要包括以下步骤:
步骤8:当路由链路断裂后,断链处的下游节点首先查询路由表中存储的到源节点与目的节点的跳数HoPs、^opi ,将两者进行比较,如果Hops - Hopi〈=0,则执行步骤9,否贝U,不做处理。
[0033]步骤9:采取向上路由修复,断链处的下游节点广播以源节点地址为搜索条件的RREQ分组,RREQ的广播范围TTL初值设为该下游节点距离源节点的跳数,即TTL= Hops ,以目的节点地址作为RREQ的始发节点地址,RREQ中的跳数初值Hop Count设为该上游节点距离目的节点的跳数 值加1,即Hop Count= Hopi +1。
[0034]步骤10:断链处的下游节点在定时时间内,如果没有接收到RREP分组,则说明第一次路由修复失败,则执行步骤11,否则,执行步骤13。
[0035]步骤11:断链处的下游节点在网络规模内广播以源节点地址为搜索条件的RREQ分组,进行第二次的路由修复,除TTL值外,第二次RREQ的其余参数设置与第一次路由修复的RREQ相同。
[0036]步骤12:如果第二次路由修复成功,则执行步骤13。否则,执行步骤14。
[0037]步骤13:断链处的上游节点通知源节点进行路由更新。
[0038]步骤14:向上路由修复失败,断链处的下游节点广播RERR分组,通知其余节点。
[0039]参考图4,图4是路由过程的流程框图,无论是向下路由修复,还是向上路由修复,在路由修复成功后,都必须进行路由更新工作,主要包括以下步骤:
步骤15:路由修复成功后,由断链处的路由修复节点沿到源节点的反向路由发送一条路由更新通知分组RUNOT ;路由更新通知分组RUNOT主要包括报文类型type、源节点地址、目的节点地址等信息,图5即显示了路由更新通知分组RUNOT的一种数据格式。
[0040]步骤16:沿途节点接收到路由更新通知分组RUN0T,依次根据其中的目的节点地址信息与转发该RUNOT的上一跳节点信息,更新或添加自己到目的节点的前向路由信息。源节点接收到路由更新通知分组RUNOT后,根据其中的源节点地址与目的节点地址信息,与转发该RUNOT的上一跳节点,首先更新路由表中到目的节点的下一跳节点信息,然后沿前向路由发送路由更新请求分组RUREQ。路由更新请求分组RUREQ主要包括报文类型type、源节点地址、目的节点地址、跳数等信息,RUREQ的跳数初始值设为1,图6显示了路由更新请求分组RUREQ的一种数据格式。
[0041]步骤17:沿途节点接收到路由更新请求分组RUREQ后,依次更新或添加到源节点地址的反向路由信息:首先,更新其到源节点的跳数=RUREQ中的跳数,更新其到源节点的下一跳节点为转发该RUREQ的上一跳节点,然后,将RUREQ中的跳数值加I,继续沿前向路由转发,直到到达目的节点,便完成了反向路由的全部更新。目的节点接收到RUREQ,同样沿反向路由发送发送路由更新应答分组RUREP。路由更新请求分组RUREP主要包括报文类型type、源节点地址、目的节点地址、跳数等信息,RUREP的跳数初始值设为I。图7显示了路由更新应答分组RUREP的一种数据格式。
[0042]步骤18:沿途节点接收到路由更新应答分组RUREP后,依次更新到目的节点地址的前向路由信息,过程与步骤3中反向路由更新的过程相同,当RUREP到达源节点时,便完了前向路由的更新。至此,源节点与目的节点的双向路由便更新成功,新的路由便可以正常工作了。
[0043]图8是向下路由修复过程的示意图。如图8所示,网络中存在一条路由S〈一〉A〈一>B〈一XX—〉E〈一〉D,链路C〈一〉E间发生了断裂,此时节点C、E分别根据自己距离源节点
S与目的节点D的跳数进行计算,对于上游节点C,Haps - Hopd >=3_2=1>-1,满足向下路由
修复的条件。对应的,下游节点E, - Hopd >=4-1=3>0,不满足向上路由修复的条件。
此时,断链处下游节点C进行向上路由修复,节点C首先在TTL= Hop4 =2范围内广播以目的
节点D为搜索条件的RREQ分组,该RREQ的始发节点地址设为源节点S,跳数初值Hop Count
设为C到源节点S的跳数值加I,即Hop Count= Hops +1=4。节点J没有到目的节点D的
路由,更新或添加源节点S的路由,然后将TTL值减1,跳数值Hop Count加I后,继续转发该RREQ,当节点K接受到该RREQ后,发现自己有到目的节点D的有效路由,沿反向路径发送RREP分组,当节点C接收到RREP分组后,向下路由修复完成,然后进行路由更新后,便修复建立好了新的路由链路S〈一〉A〈一〉B〈一 XX—〉J〈一〉K〈一〉D。
[0044]图9是向上路由修复过程的示意图。如图9所示,网络中存在一条路由S〈一〉A〈一>B〈一XX—〉E〈一〉D,链路A〈一〉B间发生了断裂,此时节点A、B分别根据自己距离源节点
S与目的节点D的跳数进行计算,对于上游节点A, Hops - Hop4,不符合向下
路由修复的条件。对应的,下游节点B,Abp1- Hops >=2-3=-1〈=0,满足向上路由修复的条
件。此时,断链处下游节点B进行向上路由修复,节点B首先在TTL= Hops =2范围内广播
以源节点S为搜索条件的RREQ分组,该RREQ的始发节点地址设为目的节点D,跳数初值设
为B到目的节点D的跳数值加1,即Hop Count= Hops +1=4。节点F没有到源节点S的路
由,更新或添加到目的节点D的路由,然后将TTL值减1,跳数值Hop Count加I后,继续转发该RREQ,当节点G接受到该RREQ后,发现自己有到源节点S的有效路由,沿反向路径发送RREP分组,当节点B接收到RREP分组后,向上路由修复完成,然后进行路由更新后,便修复建立好了新的路由链路S〈一>G <一>F <一〉B〈一〉C〈一〉E〈一>D。
[0045]图10是向上路由更新过程的示意图,采用图9中的案例进行说明,原路由S〈一>A〈一>B<一>C<一>E<一>D的链路A〈一>B间发生断裂,下游节点B米用向上路由修复后,建立了新的到源节点S的链路B〈一〉F〈一〉G〈一〉S。路由修复完成进行路由更新,节点B首先沿链路B〈一〉F〈一〉G〈一〉S,向源节点S发送路由更新通知分组RUN0T,沿途节点G、F、S接收到RUNOT后,根据其中的目的节点信息与上一跳节点,分别更新到目的节点D的前向路由信息。然后,源节点S沿前向路由发送路由请求分组RUREQ,其初始跳数值设为1,沿途节点G、F、B、C、E接收到RUREQ后,根据其中的跳数信息与上一跳节点,分别更新到源节点S的反向路由信息,然后将RUREQ的跳数加I,继续转发直至到达目的节点D。目的节点D进行反向路由更新后,沿反向路由发送发送路由应答分组RUREP,其初始跳数值设为1,沿途节点E、C、B、F、G接收到RUREP后,根据其中的跳数信息与上一跳节点,分别更新到目的节点D的前向路由信息,然后将RUREQ的跳数加1,继续转发直至到达源节点S,目的节点D进行反向路由更新后,便完成了整条新路由S〈一>G <一>F <一>B<一>C<一>E<一>D的更新,新的路由便可以正常工作了。
【权利要求】
1.一种Ad Hoc移动网络路由修复方法,其特征在于,所述Ad Hoc移动网络在路由建立阶段,同时建立源节点到目的节点的前向路由,以及目的节点到源节点的反向路由;路由链路断裂后,通过比较断链处离目的节点与源节点的跳数来选择本地修复的方向:如果断链处离源节点的跳数大于或等于离目的节点的跳数,则由断链处的上游节点进行以目的节点为修复目的节点的向下路由修复;反之,由断链处的下游节点进行以源节点为修复目的节点向上路由修复。
2.如权利要求1所述AdHoc移动网络路由修复方法,其特征在于,所述比较断链处离目的节点与源节点的跳数,具体通过以下方法:断链处的上游节点和下游节点分别计算各自到源节点的跳数与到目的节点的跳数之间的差值;对于上游节点,如该差值大于或等于-1,则断链处离源节点的跳数大于或等于离目的节点的跳数;对于下游节点,如该差值小于等于0,则断链处离源节点的跳数小于离目的节点的跳数。
3.如权利要求1所述AdHoc移动网络路由修复方法,其特征在于,所述向下路由修复具体如下:所述上游节点以其距离目的节点的跳数作为RREQ的广播范围,以目的节点地址作为RREQ的搜索条件,以源节点地址作为RREQ的始发地址,以其距离源节点的跳数值加I作为RREQ中的跳数初值,广播RREQ分组,并等待RREP分组应答;若在限定时间内收到RREP分组,则向下路由修复成功,若没有收到,则在网络范围内广播RREQ分组;若仍然无法修复路由,则上游节点广播RERR分组,通知其他节点。
4.如权利要求1所述AdHoc移动网络路由修复方法,其特征在于,所述向上路由修复具体如下:所述下游节点以其距离源节点的跳数作为RREQ的广播范围,以源节点地址作为RREQ的搜索条件,以目的节点地址作为RREQ的始发地址,以其距离目的节点的跳数值加I作为RREQ中的跳数初值,广播RREQ分组,并等待RREP分组应答;若在限定时间内收到RREP分组,则向上路由修复成功,若没有收到,则在网络范围内广播RREQ分组;若仍然无法修复路由,则广播RERR分组,通知其他节点。
5.如权利要求1~4任一项所述AdHoc移动网络路由修复方法,其特征在于,当路由修复成功后,按照以下方法进行路由更新: 负责进行修复的节点沿反向路由向源节点发送路由更新通知分组,所述路由更新通知分组包括报文类型、源节点地址、目的节点地址; 沿途节点依次根据接收到的路由更新通知分组中的目的节点地址与转发该路由更新通知分组的上一跳节点信息,更新或添加自身到目的节点的前向路由信息; 源节点根据所接收到的路由更新通知分组中的源节点地址与目的节点地址,以及转发该路由更新通知分组的上一跳节点,首先更新自身路由表中到目的节点的下一跳节点信息,然后沿前向路由向目的节点发送路由更新请求分组,所述路由更新请求分组包括报文类型、源节点地址、目的节点地址、跳数,其中跳数的初始值为I ; 沿途节点依次根据接收到的路由更新请求分组更新或添加到源节点地址的反向路由信息:首先,更新自身到源节点的跳数为路由更新请求分组中的跳数,更新自身到源节点的下一跳节点为转发该路由更新请求分组的上一跳节点,然后将路由更新请求分组中的跳数值加I后继续沿前向路由转发,直到到达目的节点; 目的节点接收到路由更新请求分组后沿反向路由发送路由更新应答分组,所述路由更新应答分组包括报文类型、源节点地址、目的节点地址、跳数,其中跳数的初始值为I;沿途节点依次根据接收到的路由更新应答分组更新或添加到目的节点地址的前向路由信息:首先,更新自身到目的节点的跳数为路由更新应答分组中的跳数,更新自身到目的节点的下一跳节点为转发该路由更新应答分组的上一跳节点,然后将路由更新应答分组中的跳数值加I后继续 沿反向路由转发,直到到达源节点。
【文档编号】H04W40/02GK103974365SQ201410148413
【公开日】2014年8月6日 申请日期:2014年4月14日 优先权日:2014年4月14日
【发明者】吴学文, 孔飞, 谭国平, 周燕, 朱晓凯, 李鹏, 曹锋, 江磊, 崔楠, 秦操 申请人:河海大学