一种距离向量路由协议自愈的方法和系统的制作方法

文档序号:7945118阅读:201来源:国知局

专利名称::一种距离向量路由协议自愈的方法和系统的制作方法
技术领域
:本发明涉及计算机网络
技术领域
,特别涉及一种距离向量路由协议自愈的方法和系统。
背景技术
:因特网在现代生活中扮演越来越重要的角色,但是频繁发生的链路和节点故障严重影响了因特网的服务质量。当出现链路或节点故障时,动态路由协议通过路由器侦察连接链路的故障,然后将故障信息散布到整个网络。网络中的节点按照更新的网络拓朴信息重新计算路由表。但是网络从一个故障中恢复至少需要几秒的时间。在这个恢复时间段内,一些网络地址是不可达的,所以到达这些网络地址的数据包将全部被丟弃。当前的高速网络中,很短的恢复时间都会导致大量的数据包丢失。例如,一个OC-48(2.4Gbit/secbandwidth)链路的损坏,IO秒的恢复时间将会导致30,000,000个数据包被丟失。这种数据包的丢失反过来会影响传输控制协议(TCP,TransmissionControlProtocol)的l丸行。严重的是,这种影响对于傳_互耳关网十办i义i吾音4支术(VoIP,VoiceDeliveredUsingtheInternetProtocol)这种连续的多媒体应用服务来说这样的中断是不允许的。为了应对转发被中断直至最优路径被重新计算出来之前仍然能够保持网络的可用,目前有两种方案1、反应式旨在提高应对故障的能力,可以分为完全泛洪和有限泛洪。完全泛洪是指路由更新被泛洪到全网;有限泛洪是指路由更新被限制在有限数目的路由器内泛洪。但是由于目前网络中大多数的故障都是短暂的,太过频繁地触发重收敛可能引发路由抖动,增加网络的不稳定性。因此,通过加快路由协议的收敛时间来减小故障引发的丢包率从这种意义上讲已经达到了极限。2006年Cisco公司的研究显示,可以实现内部网关协议(IGP,InteriorGatewayProtocol)的收敛时间接近500ms,要达到VoIP、网络电视或视频会议等实时业务要求的50ms以下的延迟是不可能的。2、先应式旨在提前计算备份下一跳,在故障发生时对故障进行本地处理。主要有IP快速重-各由(IPfastrerouting)、故障迟緩i洛由(FailureInsensitiveRouting)、偏转路由(Deflection-BasedAlternateRouting)、每目的多可行下一跳(MultipleViableNextHopsperDestination)、多拓朴路由(Multi-topologyrouting)、多配置^各由(Multi-configurationrouting)及弹性路由层(Resilientroutinglayers)等。但是先应式的缺点是只能够抵抗网络中单节点或单链路的故障,并且在各种拓朴条件下采用不同的方法,复杂度相对较高。综上所述,现有技术还不存在有效处理多链路或多节点同时或相继故障的距离向量路由协议的快速自愈方法。
发明内容本发明要解决的问题是提供一种距离向量路由协议自愈的方法和系统,能够在多链路或多节点同时或相继故障时快速进行自愈。本发明提供一种距离向量路由协议自愈的方法,包括当节点的下一跳出现故障时,设置节点故障信息抑制时间;在所述故障信息抑制时间内,从备份下一跳集合中选取备用下一跳进行本i也重路由;如果所述故障信息抑制时间已经达到,所述故障节点还未恢复正常,则进行触发更新,将路由更新消息发送至邻居节点。优选地,所述当节点的下一跳出现故障时,设置节点故障信息抑制时间之前还包括生成邻居路由数据库;由上述邻居路由数据库中的路由信息为每个目的节点生成备份下一跳集合。优选地,所述生成邻居路由数据库具体为接收邻居节点发送的路由信息表;按照邻居路由数据库的格式修改邻居节点发送过来的路由信息;查看邻居数据库中是否有该邻居节点的路由信息;如果是,则删除邻居路由数据库中该节点前一次发送的路由信息,将修改后的路由信息保存至所述邻居路由数据库;如果否,则将修改后的路由信息保存至所述邻居路由数据库。优选地,所述由上述邻居路由数据库中的路由信息为每个目的节点生成备份下一跳集合具体为从所述邻居路由数据库中选出到达目的节点的所有路由信息;按照度量值将所述路由信息进行升序排序;从排好序的路由信息中依次选出对应的邻居节点,其中第一个邻居节点为主要下一跳,将其存入路由表;剩下的邻居节点组成到达目的节点的备份下一跳集合。优选地,所述从备份下一跳集合中选取备用下一跳进行本地重路由,具体为A:检查备用下一跳集合是否为空,如果是,则丟弃转发的数据包;如果否,则从备份下一跳集合中选取第一个备用节点;B:判断所述第一个备用节点是否可达,如果否,则从所述备用下一跳集合中删除该节点,返回步骤A;如果是,则将故障节点的信息添加到故障信息中,将所述数据包转发到所述第一个备用节点。优选地,所述度量值是邻居节点到达目的节点的距离加1。本发明还提供一种距离向量路由协议自愈的系统,包括定时器、本地重路由单元和更新单元;所述定时器,用于当节点的下一跳出现故障时,设置节点故障信息抑制时间;在所述定时器设置的节点故障信息抑制时间到达之前,所述本地重路由单元,用于从备份下一跳集合中选取备用下一跳进行本地重路由;如果所述节点故障信息抑制时间到达时,所述故障节点还未恢复正常,所述更新单元,用于进行触发路由更新,将路由更新消息发送至邻居节点。优选地,还包括与所述本地重路由单元连接的邻居路由数据库生成单元和备^f分下一跳集合生成单元;所述邻居路由数据库生成单元,用于生成邻居路由数据库;所述备份下一跳集合生成单元,用于根据所述邻居路由数据库生成单元中的路由信息生成备份下一跳集合。优选地,所述邻居路由数据库生成单元具体包括接收模块、修改模块和更新模块;所述接收模块,用于接收邻居节点发送的路由信息表;所述修改模块,用于按照邻居路由数据库的格式修改接收模块接收的邻居节点发送过来的路由信息;所述更新模块,用于查看邻居数据库中是否有该邻居节点的路由信息;如果是,则删除邻居路由数据库中该节点前一次发送的路由信息,将修改模块修改后的路由信息保存至所述邻居路由数据库;如果否,则将修改模块修改后的路由信息保存至所述邻居路由数据库。优选地,所述备份下一跳集合生成单元具体包括选择模块、排序模块和生成模块;所述选择模块,用于从所述邻居路由数据库中选出到达目的节点的所有路由信息;所述排序模块,用于按照度量值将所述选择模块选择出的路由信息进行升序排序;所述生成模块,用于从所述排序模块排好序的路由信息中依次选出对应的邻居节点,其中第一个邻居节点为主要下一跳,将其存入路由表;剩下的邻居节点组成到达目的节点的备份下一跳集合。优选地,所述本地重路由单元具体包括检查模块、丢弃模块、选择模块、判断模块、删除模块、添加模块和转发模块;所述检查模块,用于检查备用下一跳集合是否为空;当检查模块检查备用下一跳集合为空时,所述丟弃模块,用于丟弃数据包;当检查模块检查备用下一跳集合非空时,所述选择模块,用于从所述备份下一跳集合中选取第一个备用节点;所述判断模块,用于判断所述第一个备用节点是否可达;当所述判断模块判断所述第一个备用节点不可达时,所述删除模块,用于从所述备用下一跳集合中删除该节点,所述检查模块重新检查备用下一跳集合是否为空;当所述判断模块判断所述第一个备用节点不可达时,所述添加模块,用于将该故障节点的信息添加到故障信息中;所述转发模块,用于将所述数据包转发到所述第一个备用节点。与现有技术相比,本发明具有以下优点本发明提供的距离向量路由协议快速自愈的方法,当节点的下一跳出现故障时,设置节点故障信息抑制时间;在故障信息抑制时间到达之前,如果故障节点还未恢复,则从备份下一跳集合中选取备用下一跳进行本地重路由;如果故障信息抑制时间已经达到,故障节点还未恢复正常,则进行触发更新,将路由更新消息发送至邻居节点。本发明提供的自愈方法,当网络中有节点出现故障时,不立即触发更新,而是设置一个故障信息抑制时间,在这段时间内,可以通过备用下一跳集合选取可用的下一跳节点进行数据转发,这样可以避免频繁触发更新而导致网络抖动,造成网络不稳定。由于本发明提供了备份下一跳集合,因此可以在多链路和多节点同时或相继故障时选取可达节点进行快速自愈。图l是基于本发明方法第一实施例流程图;图2是基于本发明方法第二实施例流程图;图3是基于本发明生成邻居^各由数据库的流程图;图4是基于本发明为每个目的节点生成备份下一跳集合的流程图;图5是基于本发明节点转发数据流程图;图6是基于本发明节点发现邻居节点发生故障时的处理流程图;图7是基于本发明系统第一实施例结构图;图8是基于本发明系统第二实施例结构图;图9是基于本发明邻居路由数据库的结构图;图IO是基于本发明备份下一跳集合生成单元的结构图;图ll是基于本发明本地重路由单元的结构图。具体实施例方式为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明的具体实施方式做详细的说明。于本发明方法第一实施例流程图。S101:当节点的下一跳出现故障时,设置节点故障信息抑制时间。一般节点故障都是短暂故障,大约40s左右时间会自动恢复正常。故障信息抑制时间设置稍微大于故障节点自动恢复正常的时间段即可。S102:在所述故障信息抑制时间内,从备份下一跳集合中选取备用下一跳进行本地重路由。当节点发生故障时,不是立即进行触发更新,而是在故障信息抑制时间内,进行本地重路由。这样可以避免频繁触发更新造成网络不稳定。S103:如果所述故障信息抑制时间已经达到,所述故障节点还未恢复正常,则进行触发更新,将路由更新消息发送至邻居节点。本发明提供的距离向量路由协议自愈的方法,提供了备份下一跳集合,当节点出现故障时,可以从备份下一跳集合中选取可达备用下一跳转发数据包。因此可以在多链路和多节点同时或相继故障时选取可达节点进行快速自愈。参见图2,该图为基于本发明方法第二实施例流程图。方法第二实施例与方法第一实施例的区别是在S101之前增加了预处理步骤S201和S202,S203-S205与S101-S103相同,在此不再赘述。S201:节点生成邻居路由数据库。需要说明的是,上述节点可以为任意一个节点。S202:由上述邻居路由数据库中的路由信息为每个目的节点生成备份下一跳集合。邻居路由数据库的格式参见表1。表1dest一idneighbournexthopcostdestjd代表目的节点的地址。neighbour代表发送更新消息(update)创建了这个条目的邻居节点,即这个路由的下一跳。nexthcjp代表邻居节点到达目的节点的下一跳。cost代表该节点到目的节点的距离,其等于邻居节点到目的节点的距离加1。下面结合图3说明如何生成邻居路由数据库。参见图3,该图为基于本发明生成邻居路由数据库的流程图。S301:接收邻居节点发送的路由信息表。S302:按照邻居路由数据库的格式修改邻居节点发送过来的路由信息。S303:查看邻居数据库中是否有该邻居节点的路由信息,如果是,则执行S304;如果否,则执行S305。S304:删除邻居路由数据库中该节点前一次发送的路由信息,将修改后的路由信息保存至所述邻居路由数据库。S305:将修文后的路由信息保存至所述邻居路由数据库。下面以路由信息协议(RIP,RoutingInformationProtocol)为例介绍其邻居路由数据库的生成过程(1)节点Fo接收邻居节点F"w发送的路由更新消息,其格式均为<dest—id,nexthop,costl>。需要说明的是,costl代表邻居节点F^到目的节点的距离。(2)将上述路由更新消息》务改为〈dest—id,neighbour,nexthop,cost>。其中dest—id是目的节点的地址。neighbour表示发送update创建了这个条目的邻居节点,即这个路由的下一跳。nexthop表示邻居节点&到达目的节点的下一跳。cost^C表节点Fo到达目的节点的3巨离,cost=cost1+1。(3)将邻居路由数据库中neighbour为^的所有项都删除。(4)将修改后的路由更新消息存入邻居路由数据库。下面结合图4说明如何生成备份下一跳集合。参见图4,该图为基于本发明为每个目的节点生成备份下一跳集合的流程图。S401:从邻居路由数据库中取出可以到达目的节点的所有路由信息。S402:按照度量值将这些路由信息进行升序排序。iiS403:从这些排过序的路由信息中依次取出对应的邻居节点;其中第一个邻居节点为主要下一跳,将其存入路由表。其他邻居节点组成到达目的节点的备份下一跳集合。下面以RIP为例介绍节点Fo为目的节点Fo生成备份下一跳集合的过程。(1)节点K从其邻居路由数据库中取出所有dest—id为J^的路由信息(Ri,R2,……,Rn)。(2)将路由信息(RpR2,......,Rn)按照其度量值升序进行排列,得到(R',,R'2,......,R'n),这些路由消息中的neighbour为(N,,N2,......,Nn)。(3)将邻居节点N!设置为主要下一跳,(N2,......,Nn)为到达目的节点J^的备份下一跳集合。图3和图4所述实施例是本发明提供的距离向量路由协议自愈方法中预先的处理工作,下面介绍在这些工作准备完以后的数据处理流程。参见图5,该图为基于本发明节点转发数据流程图。S501:检查数据包中携带的故障信息,如果故障信息非空,对故障节点采取避让策略。在进行路由选择时,不选择这些故障节点作为下一跳,也不选择以这些故障节点作为下一跳的节点。S502:判断主要下一跳是否可达,如果主要下一跳可达,将数据包转发至主要下一跳;如果主要下一跳不可达,则执行S503。S503:进入本地重路由,检查备用下一跳集合是否为空,如果是,则丢弃该数据包;如果否,则从对应目的节点的备用下一跳集合中取出第一个备用节点。S504:判断第一个备用节点是否可达,如果否,则从备用下一跳集合中删除该节点,并返回S503;如果是,则执行S505。S505:将故障节点的信息加入到故障信息中,并将数据包转发到可达的备用节点。故障信息的格式如表2所示。表212<table>tableseeoriginaldocumentpage13</column></row><table>dest一id代表目的节点的地址。err—nodes代表出现故障的节点,但是还没有被其邻居节点通告出来。下面以RIP为例,介绍节点Fo转发到达目的节点Fd的数据包的流程。分五种情况分别介绍转发数据包的流程情况一数据包中携带的故障信息为空,主要下一跳可达,节点Fo依照RIP协议的转发流程转发该数据包。情况二数据包中携带的故障信息非空,主要下一跳可达,此时节点)^转发数据包具体为(1)提取故障信息中发生故障的节点化,……,F^;(2)从邻居路由数据库中查看主要下一跳的路由信息<&,KM,F/v,coW〉中的f^和Fw是否属于AO,K,......,PW,如果其中一个或全部都属于,则说明主要下一跳不可达。这里假设都不属于,即主要下一跳可达,此时节点J^将数据包连其携带的故障信息一起转发到主要下一跳^。情况三数据包携带的故障信息非空,主要下一跳不可达,第一个备用下一跳可达,此时节点Fo转发数据包具体为(1)提取故障信息中发生故障的节点W,K2,......,(2)从邻居路由数据库中查看主要下一跳的路由信息<^),FM,Fw,co">中的Fm和rw是否属于fK,&如果其中一个或全部都属于,则说明主要下一跳不可达。这里假设其中之一属于,这时需要进行本地重路由;(3)取出第一个备用下一跳VB1及其在邻居路由数据库中的路由信息<&,Fw,FV,coW〉,查看其中的^和是否属于%,K,......,FV,如果其中一个或全部都属于,则说明主要下一跳不可达。这里假设都不属于,即第一个备用下一跳可达;(4)修改故障信息,将自己检测出来的但是并不属于f^K,......,rj的故障节点添加到故障信息中去,然后将数据包连同修改后的故障信息一起转发到第一个备用下一跳Ffi7。情况四数据包携带的故障信息非空,主要下一跳不可达,第一个备用下一跳不可达,第二个备用下一跳可达。(1)才是取故障信息中发生故障的节点^0,K,……,(2)从邻居路由数据库中查看主要下一跳的路由信息<&,li,Fw,coW>中的P^和^v是否属于fK,K,......,如果其中一个或全部都属于,则说明主要下一跳不可达,这里假设其中之一属于,这时需要进行本地重路由;(3)取出第一个备用下一跳及其在邻居路由数据库中的路由信息<J^,F^,FV,coW〉,查看其中的Fs/和Fw是否属于A^,F2,……,如果其中一个或全部都属于,则说明主要下一跳不可达。这里假设FV属于,即第一个备用下一if兆不可达;(4)取出第二个备用下一跳^2及其在路由数据库中的路由信息<^),Fw,coW〉,查看其中的&2和"V是否属于f^K,......,4,如果其中一个或全部都属于,则说明主要下一跳不可达。这里假设都不属于,即第二个备用下一跳可达;(5)修改故障信息,将自己检测出来的但是并不属于^0,K,......,fW的故障节点添加到故障信息中去,然后将数据包连同修改后的故障信息一起转发到第二个备用下一跳F£2。情况五数据包携带的故障信息非空,主要下一跳不可达,所有备用下一跳均不可达,此时节点Fo丟弃该数据包。下面介绍节点发现邻居节点发生故障时的处理流程。参见图6,该图为基于本发明节点发现邻居节点发生故障时的处理流程图。S601:节点发现邻居节点故障时,启动定时器。所述定时器用于设置故障信息抑制时间。此时,节点并不立即向其邻居节点发送Update消息。S602:在定时器重启之前,节点不修改任何关于邻居节点的路由信息,判断定时器重启之前是否收到邻居节点的Update消息,如果是,则执行S603;如果否,则才丸行S604。S603:关闭定时器,不修改路由表中该邻居节点对应的路由表项,节点按照原先的时间间隔将Update消息发送至该邻居节点。S604:节点修改自己的路由表,等待下一个路由更新周期到来将路由更新消息发送至该邻居节点。需要说明的是,所述下一个路由更新周期是指原始的路由协议本身的定时器的周期。下面以RIP协议为例,介绍节点K。发现邻居节点Fw发生故障时的处理流程。(1)节点Fo发现邻居节点PV发生故障时,启动定时器开始计时。此时节点F。并不立即向其邻居节点!^发送Update消息,而是启动定时器。定时器用于设定故障信息抑制时间,故障信息抑制时间设置稍微大于故障节点需要恢复的时间段即可,例如定时器的定时周期为60s,—般故障节点在40s左右可以自动恢复正常。统计数据结果显示在节点所有类型的故障中,只有10%的故障持续时间超过20分钟,40%的故障持续时间介于1到20分钟之间,50%的故障持续时间不到1分钟。如果将故障信息抑制时间设置为60s,那么可以使将近50%的网络错误不会被通告出去。(2)在定时器重启之前,节点Fo不修改任何关于邻居节点J^的路由信息,判断定时器重启之前,节点^是否收到邻居节点J^的Update消息;如果是,则关闭定时器,不修改路由表中邻居节点PV对应的路由表项,按照原先的时间间隔将Update消息发送至邻居节点&。(3)如果定时器重启之前没有收到邻居节点&的Update消息,节点^修改自己的路由表,将路由更新消息发送至邻居节点&。基于上述一种距离向量路由协议自愈的方法,本发明还提供了一种距离向量路由协议自愈的系统,下面结合具体实施例来详细说明其组成部分。参见图7,该图为基于本发明系统第一实施例结构图。本发明提供一种距离向量路由协议自愈的系统包括定时器701、本地重路由单元702和更新单元703。定时器701,用于当节点的下一跳出现故障时,设置节点故障信息抑制时间。一般节点故障都是短暂故障,大约40s左右时间会自动恢复正常。故障信息抑制时间设置稍微大于故障节点自动恢复正常的时间-险即可。在定时器701设置的节点故障信息抑制时间到达之前,本地重路由单元702,用于从备份下一跳集合中选取备用下一跳进行本地重路由。如果节点故障信息抑制时间到达时,故障节点还未恢复正常,更新单元703,用于进行触发更新,将路由更新消息发送至邻居节点。本发明提供的距离向量路由协议自愈的方法,提供了备份下一跳集合,当节点出现故障时,可以从*下一跳集合中选取可达备用下一跳转发数据包。因此可以在多链路和多节点同时或相继故障时选取可达节点进行快速自愈。参见图8,该图为基于本发明系统第二实施例结构图。系统第二实施例与系统第一实施例的区别是增加了与所述本地重路由单元连接的邻居路由数据库生成单元801和备份下一跳集合生成单元802。邻居路由数据库生成单元801,用于生成邻居路由数据库。需要说明的是,每个节点均生成一个邻居路由数据库。备份下一跳集合生成单元802,用于根据邻居路由数据库生成单元801中的路由信息生成备份下一跳集合。参见图9,该图为基于本发明邻居路由数据库的结构图。邻居路由数据库生成单元801具体包括接收模块別la、修改模块801b和更新纟莫块801c。接收模块801a,用于接收邻居节点发送的路由信息表。修改模块801b,用于按照邻居路由数据库的格式修改接收模块801a接收的邻居节点发送过来的路由信息。更新模块801c,用于查看邻居数据库中是否有该邻居节点的路由信息;如果是,则删除邻居路由数据库中该节点前一次发送的路由信息,将修改模块801b修改后的路由信息保存至所述邻居路由数据库;如果否,则将修改模块801b修改后的路由信息保存至所述邻居路由数据库。参见图10,该图为基于本发明备份下一跳集合生成单元的结构图。备份下一跳集合生成单元具体包括选择模块802a、排序模块802b和生成才莫块802c。选择模块802a,用于从所述邻居路由数据库中选出到达目的节点的所有路由信息。排序模块802b,用于按照度量值将所述选择模块选择出的路由信息进行升序排序。生成模块802c,用于从所述排序模块排好序的路由信息中依次选出对应的邻居节点,其中第一个邻居节点为主要下一跳,将其存入路由表;剩下的邻居节点组成到达目的节点的备除下一跳集合。参见图11,该图为基于本发明本地重路由单元的结构图。本地重路由单元702具体包括检查模块702a、丢弃模块702b、选择模块702c、判断模块702d、删除模块702e、添加模块702f和转发模块702g。检查模块702a,用于检查备用下一跳集合是否为空。当检查模块702a检查备用下一跳集合为空时,丢弃模块702b,用于丢弃数据包。当检查模块702a检查备用下一跳集合非空时,选择模块702c,用于从所述备份下一跳集合中选取第一个备用节点。判断模块702d,用于判断所述第一个备用节点是否可达。当判断模块702d判断所述第一个备用节点不可达时,删除模块702e,用于从所述备用下一跳集合中删除该节点,检查模块702a重新检查备用下一跳集合是否为空。当判断模块702d判断所述第一个备用节点不可达时,添加模块702f,用于将该故障节点的信息添加到故障信息中;转发模块702g,用于将数据包转发到所述第一个备用节点。本发明实施例提供的距离向量路由协议自愈系统,当节点的下一跳出现故障时,设置节点故障信息抑制时间;在故障信息抑制时间到达之前,如果故障节点还未恢复,则从备份下一跳集合中选取备用下一跳进行本地重路由;如果故障信息抑制时间已经达到,故障节点还未恢复正常,则进行触发更新,将路17由更新消息发送至邻居节点。本发明提供的自愈系统,可以在网络中有节点出现故障时,不立即触发更新,而是设置一个故障信息抑制时间,在这^a时间内,可以通过备用下一跳集合选取可用的下一跳节点进行数据转发,这样可以避免频繁触发更新而导致网络抖动,造成网络不稳定。由于本发明提供了备份下一跳集合,因此可以在多链路和多节点同时或相继故障时选取可达节点进行快速自愈。本领域技术人员可以理解,可以使用许多不同的工艺和技术中的任意一种来表示信息、消息和信号。例如,上述说明中提到过的消息、信息都可以表示为电压、电流、电磁波、磁场或磁性粒子、光场或以上任意组合。专业人员还可以进一步应能意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或
技术领域
内所公知的任意其它形式的存储介质中。18权利要求1、一种距离向量路由协议自愈的方法,其特征在于,包括当节点的下一跳出现故障时,设置节点故障信息抑制时间;在所述故障信息抑制时间内,从备份下一跳集合中选取备用下一跳进行本地重路由;如果所述故障信息抑制时间已经达到,所述故障节点还未恢复正常,则进行触发更新,将路由更新消息发送至邻居节点。2、根据权利要求1所述的方法,其特征在于,所述当节点的下一跳出现故障时,设置节点故障信息抑制时间之前还包括生成邻居路由数据库;由上述邻居路由数据库中的路由信息为每个目的节点生成备份下一跳集合。3、根据权利要求2所述的方法,其特征在于,所述生成邻居路由数据库具体为接收邻居节点发送的路由信息表;按照邻居路由数据库的格式修改邻居节点发送过来的路由信息;查看邻居数据库中是否有该邻居节点的路由信息;如果是,则删除邻居路由数据库中该节点前一次发送的路由信息,将修改后的路由信息保存至所述邻居路由数据库;如果否,则将修改后的路由信息保存至所述邻居路由数据库。4、根据权利要求3所述的方法,其特征在于,所述由上述邻居路由数据库中的路由信息为每个目的节点生成备份下一跳集合具体为从所述邻居路由数据库中选出到达目的节点的所有路由信息;按照度量值将所述路由信息进行升序排序;从排好序的路由信息中依次选出对应的邻居节点,其中第一个邻居节点为主要下一跳,将其存入路由表;剩下的邻居节点组成到达目的节点的备份下一跳集合。5、根据权利要求1至4任一项所述的方法,其特征在于,所述从备份下一跳集合中选取备用下一跳进行本地重路由,具体为A:检查备用下一跳集合是否为空,如果是,则丢弃转发的数据包;如果否,则从备份下一跳集合中选取第一个备用节点;B:判断所述第一个备用节点是否可达,如果否,则从所述备用下一跳集合中删除该节点,返回步骤A;如果是,则将故障节点的信息添加到故障信息中,将所述数据包转发到所述第一个备用节点。6、根据权利要求1所述的方法,其特征在于,所述度量值是邻居节点到达目的节点的距离加1。7、一种距离向量路由协议自愈的系统,其特征在于,包括定时器、本地重路由单元和更新单元;所述定时器,用于当节点的下一跳出现故障时,设置节点故障信息抑制时间;在所述定时器设置的节点故障信息抑制时间到达之前,所述本地重路由单元,用于从备份下一跳集合中选取备用下一跳进行本地重路由;如果所述节点故障信息抑制时间到达时,所述故障节点还未恢复正常,所述更新单元,用于进行触发路由更新,将路由更新消息发送至邻居节点。8、才艮据权利要求7所述的系统,其特征在于,还包括与所述本地重路由单元连接的邻居路由数据库生成单元和备份下一跳集合生成单元;所述邻居路由数据库生成单元,用于生成邻居路由数据库;所述备份下一跳集合生成单元,用于根据所述邻居路由数据库生成单元中的路由信息生成备份下一跳集合。9、根据权利要求8所述的系统,其特征在于,所述邻居路由数据库生成单元具体包括接收模块、修改模块和更新模块;所述接收模块,用于接收邻居节点发送的路由信息表;所述修改模块,用于按照邻居路由数据库的格式修改接收模块接收的邻居节点发送过来的路由信息;所述更新模块,用于查看邻居数据库中是否有该邻居节点的路由信息;如果是,则删除邻居路由数据库中该节点前一次发送的路由信息,将修改模块修改后的路由信息保存至所述邻居路由数据库;如果否,则将修改模块修改后的路由信息保存至所述邻居路由数据库。10、根据权利要求9所述的系统,其特征在于,所述备份下一跳集合生成单元具体包括选择模块、排序模块和生成模块;所述选择模块,用于从所述邻居路由数据库中选出到达目的节点的所有路由信息;所述排序模块,用于按照度量值将所述选择模块选择出的路由信息进行升序排序;所述生成模块,用于从所述排序模块排好序的路由信息中依次选出对应的邻居节点,其中第一个邻居节点为主要下一跳,将其存入路由表;剩下的邻居节点组成到达目的节点的备份下一跳集合。11、根据权利要求7至IO任一项权利要求所述的系统,其特征在于,所述本地重路由单元具体包括检查模块、丟弃模块、选择模块、判断模块、删除模块、添加模块和转发模块;所述检查模块,用于检查备用下一跳集合是否为空;当检查模块检查备用下一跳集合为空时,所述丢弃模块,用于丢弃数据包;当检查模块检查备用下一跳集合非空时,所述选择模块,用于从所述备份下一跳集合中选取第一个备用节点;所述判断模块,用于判断所述第一个备用节点是否可达;当所述判断模块判断所述第一个备用节点不可达时,所述删除模块,用于从所述备用下一跳集合中删除该节点,所述检查模块重新检查备用下一跳集合是否为空;当所述判断模块判断所述第一个备用节点不可达时,所述添加模块,用于将该故障节点的信息添加到故障信息中;所述转发模块,用于将所述数据包转发到所述第一个备用节点。全文摘要本发明提供一种距离向量路由协议自愈的方法,包括当节点的下一跳出现故障时,设置节点故障信息抑制时间;在所述故障信息抑制时间内,从备份下一跳集合中选取备用下一跳进行本地重路由;如果所述故障信息抑制时间已经达到,所述故障节点还未恢复正常,则进行触发更新,将路由更新消息发送至邻居节点。本发明提供的自愈方法,当网络中有节点出现故障时,不立即触发更新,而是设置一个故障信息抑制时间,在这段时间内,可以通过备用下一跳集合选取可用的下一跳节点进行数据转发,这样可以避免频繁触发更新而导致网络抖动,造成网络不稳定。由于本发明提供了备份下一跳集合,因此可以在多链路和多节点同时或相继故障时选取可达节点进行快速自愈。文档编号H04L12/24GK101483548SQ200910009268公开日2009年7月15日申请日期2009年2月26日优先权日2009年2月26日发明者鹏伊,佳周,李向涛,滨王,雨王,程东年,郭云飞申请人:中国人民解放军信息工程大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1