一种避免中间系统邻居关系震荡的方法及装置制造方法

文档序号:7774582阅读:185来源:国知局
一种避免中间系统邻居关系震荡的方法及装置制造方法
【专利摘要】本发明实施例提供一种避免中间系统邻居关系震荡的方法及装置,该方法包括:本地IS在邻居IS的当前Hello周期内判断出发送队列中的LSP报文数量符合设定条件时,向邻居IS发送带有LSP突发标识的Hello报文;并确定是否收到邻居IS发送的Hello报文,在收到的Hello报文中带有LSP延迟发送标识或未收到时,延长邻居维持时间和发送队列中LSP报文的当前发送周期,将延长后的发送周期作为当前发送周期,将邻居IS的下个Hello周期作为当前Hello周期,返回确定是否收到Hello报文的步骤,直到将所有LSP报文发送完。本发明避免了在IS负载较重,且瞬时发送大量LSP报文时出现的邻居关系震荡问题。
【专利说明】一种避免中间系统邻居关系震荡的方法及装置
【技术领域】
[0001]本发明涉及计算机网络通讯领域,尤其涉及一种避免中间系统邻居关系震荡的方法及装置。
【背景技术】
[0002]中间系统到中间系统路由协议(IntermediateSystem to Intermediate System,IS-1S),是一种链路状态协议,通常采用最短路径优先算法(Shortest Path First, SPF)进行路由计算,IS-1S协议是一种重要的内部网关协议(Interior Gateway Protocol, IGP),可用于自治系统内部。
[0003]下面简要介绍IS-1S协议中的一些术语:
[0004]中间系统(Intermediate System, IS):1S是IS-1S协议中生成路由和传播路由信息的基本单兀,在国际标准化规范(International Organization for Standardization,ISO)中,一个路由器就是一个IS,因此,IS-1S协议是提供路由器和路由器之间通信的协议;
[0005]链路状态数据库(Link State Data Base, LSDB):所有的网络内链路状态组成了链路状态数据库,在每一个IS中都至少有一个LSDB,IS使用SPF算法,利用LSDB来生成自己的路由。
[0006]IS-1S报文主要包括:
[0007](I)、Hello报文:用于建立和维持邻居关系,根据IS所在链路类型的不冋,Hello报文还进一步区分为LAN Hello与P2P Hello这两种报文,LAN Hello报文主要是在广播链路上收发,P2P Hello报文主要是在点对点链路上收发;
[0008](2)、链路状态报文(Link State Packet,LSP):是用来交换链路状态信息的,本地IS和邻居IS的LSP报文均存储于各自的链路状态数据库(Link State DataBase, LSDB),IS-1S协议通过同步机制确保网络中所有IS的LSDB中LSP报文一致,实现每台IS基于相同的拓扑生成无环路的路由;
[0009](3)、完全时序报文(Complete Sequence Number Packet, CSNP):CSNP 包括 IS 的LSDB中所有LSP报文的摘要信息,这样,IS根据邻居IS发来的CSNP报文,判断本地LSDB中的LSP报文是否过期或有丢失,在过期或丢失的情况下,则向邻居IS发送部分时序报文(Partial Sequence Number Packet, PSNP),以保证所有 IS 的 LSF1D 中的 LSP 报文都一样;具体地,CSNP报文在不同链路上的发送情况是不一样的,例如在IS的广播链路上,由指定的IS定期发送;在IS的点到点链路上,CSNP报文只在邻居关系成功建立时发送一次,其他时间不发送。
[0010](4)、PSNP:在广播网络中,PSNP报文的作用是向DIS请求缺少的LSP报文;而在P2P网络中,PSNP报文则用来确认从邻居IS接收到的LSP报文。
[0011]如图1所示,是现有IS-1S协议实际运行网络的一个拓扑架构示意图,在图1中,有两个自治系统ASlO和AS11,Hl表示ASlO中的路由器;R1至Rn表示ASll中的路由器,自治系统ASll中Rl至Rn的数量可能超过几百台,甚至上千台。在这里,ASlO和ASll之间运行BGP协议学习路由,ASlO和ASll内部运行IS-1S协议学习路由,且边界设备进行两个自治系统路由的交互,例如Hl和Rl进行路由交互。
[0012]以Rl为例,简要说明一下运行IS-1S协议的基本流程:首先,Rl在自身运行IS-1S协议的接口上收发Hello报文,与其他IS建立邻居关系,例如,与图1中的R2至Rn建立邻居关系;然后,在邻居关系成功建立之后,根据通过该接口从其他邻居IS学到的IP路由前缀创建LSP报文,并泛洪给所有的邻居IS,同时还将通过该接口接收到的邻居IS发来的LSP报文泛洪给其他接口上的邻居IS,例如LSP报文可包括本地IP路由信息和邻居IS相关信息等;R1自身的LSP报文和从邻居IS收到的LSP报文组成LSDB,并使用CSNP和PSNP报文进行数据库同步,确保网络中所有IS的LSDB中的LSP报文都一样;最后,根据LSDB中的LSP报文启用SPF路由计算,生成用于指导报文转发的路由表。
[0013]在图1中,如果Hl发送给Rl大量的BGP协议路由信息,那么,Rl将接收到的BGP路由信息重分布给IS-1S协议,即Rl这一侧将产生大量的LSP报文,同时,由于Rl与R2至Rn建立邻居关系,在这种情况下也会产生大量的LSP报文,并且如果Rl是在广播链路上与其他IS建立的邻居关系,那么Rl还会产生一个虚拟LSP报文。前述这几种情形均导致Rl这一侧产生大量的LSP报文。
[0014]在上述几种情形下,Rl通常是按照一定的时间间隔发送LSP报文,例如时间间隔为33毫秒,即一条链路上默认I秒之内最多只能连续发送30个LSP报文,这样一来,在Rl的邻居IS例如R2的设备性能较低或者负载较高的情况下,Rl侧突然增加的LSP报文将导致R2的接收队列迅速爆满,进而导致Rl发来的Hello报文被丢弃或者来不及处理,导致R2还未处理完Rl的LSP报文,与Rl的邻居维持时间已到,这时,与Rl断开连接,在这种情况下,Rl需要重新与R2建立邻居关系,重新传输LSP报文,之后再次因邻居维持时间超时断开,造成Rl与R2的邻居关系不停震荡。
[0015]对于上述问题,目前通常采用下述方式解决:
[0016](I)、扩大IS的IS-1S报文的接收和发送队列。这种方式可以缓解报文队列满导致邻居关系震荡问题,但不能根本解决,因为不可能无限地扩大IS-1S报文的接收和发送队列,周性期更新的LSP报文会随着网络的扩大和路由的增多成线性增长,当增长到一定程度时IS-1S报文接收和发送队列还是会满。
[0017](2)、优先处理Hello报文,努力保持IS-1S邻居关系。这种方式需要区别出Hello报文与其他IS-1S报文,而Hello报文与LSP报文和CSNP报文是很难简单区分,需要深度检测才能区分,因此,这种方式对设备硬件的要求很高。同时,IS-1S报文接收队列满时,优先处理Hello报文会造成LSP报文丢弃,造成LSP重传,进而导致LSDB同步困难,这时,会有更多的IS-1S报文需要处理,增加了设备的处理负担。
[0018](3)、将Hello报文的发送间隔拉长,即增加邻居维持时间。这种方式可以缓解邻居关系震荡,但在IS-1S报文队列满的情况下仍无法避免邻居关系震荡的问题。
[0019](4)、使用PSNP报文更新LSP报文。这种方式只能解决LSP报文周期更新且LSP报文内容不变情况下邻居关系震荡的问题,如果LSP报文内容有变化,采用这种方式容易出现路由黑洞。
[0020]从上述几种解决方式可以看出,当一个IS与多个IS之间建立IS-1S邻居关系时,且IS这一侧突发性地产生大量LSP更新报文时,不管采用上述哪一种解决方式,均无法从根本上解决邻居关系震荡的问题。

【发明内容】

[0021]本发明实施例提供了一种避免中间系统邻居关系震荡的方法及装置,用以解决IS的LSP报文突发时导致的IS-1S邻居关系震荡的问题。
[0022]基于上述问题,本发明实施例提供的一种避免中间系统邻居关系震荡的方法,包括:
[0023]本地IS在邻居IS的当前Hello周期内,判断出自身发送队列中的LSP报文数量不小于第一设定数量时,向所述邻居IS发送携带有LSP突发标识的Hello报文,并确定自身是否收到所述邻居IS发送的Hello报文,所述当前Hello周期为自身根据所述邻居IS最近发来的Hello报文中携带的邻居维持时间确定出的;
[0024]在确定为是,且确定出收到的Hello报文中携带有LSP延迟发送标识,或者在确定为否时,延长所述邻居维持时间和发送队列中LSP报文的当前发送周期,并将延长后的发送周期作为当前发送周期,将所述邻居IS的下一个Hello周期作为当前Hello周期,返回确定是否收到所述邻居IS发送的Hello报文的步骤,直到将发送队列中的所有LSP报文发送给所述邻居IS。
[0025]本发明实施例提供的一种避免中间系统邻居关系震荡的装置,包括:
[0026]判断模块,用于在邻居IS的当前Hello周期内,判断所述装置的发送队列中的LSP报文数量是否不小于第一设定数量,所述当前Hello周期为自身根据所述邻居IS最近发来的Hello报文中携带的邻居维持时间确定出的;
[0027]发送模块,用于在判断模块判断为是时,向邻居IS发送携带有LSP突发标识的Hello报文,并按照设定时长向所述邻居IS发送所述LSP报文;
[0028]确定模块,用于在所述当前Hello周期内,确定所述装置是否收到所述邻居IS发送的Hello报文;
[0029]延长模块,用于在所述确定模块确定为是,且所述确定模块确定出收到的Hel1报文中携带有LSP延迟发送标识,或者在所述确定模块确定为否时,延长所述邻居维持时间和发送队列中LSP报文的当前发送周期,并将延长后的发送周期作为当前发送周期,将所述邻居IS的下一个Hello周期作为当前Hello周期,返回所述确定模块确定是否收到所述邻居IS发送的Hello报文的步骤,直到发送模块将所述发送队列中的所有LSP报文发送给所述邻居is。
[0030]本发明实施例的有益效果包括:
[0031]本发明实施例提供的避免中间系统邻居关系震荡的方法及装置,在该方法中,本地IS在邻居IS的当前Hello周期内判断出自身产生大量LSP报文时,执行向邻居IS发送携带有LSP突发标识的Hello报文的步骤,以告知邻居IS本地将有大量LSP报文发送;然后,再依据在当前Hello周期内邻居IS根据自身实际情况反馈过来的相关信息,来确定是否需要延长邻居维持时间和发送队列中LSP报文的发送周期,例如在确定出邻居IS发来携带有LSP延迟发送标识的Hello报文,或者确定出未收到邻居IS发来的Hello报文的情况下,延长邻居维持时间和发送队列中LSP报文的当前发送周期,以确保本地IS在邻居维持时间内将所有的LSP报文发送给邻居IS。前述这种处理方式,可根据邻居IS的实际设备状态,动态调整邻居维持时间和发送LSP报文的时间间隔,从而避免了邻居关系发生震荡的问题。
【专利附图】

【附图说明】
[0032]图1为现有IS-1S协议实际运行网络的一个拓扑架构示意图;
[0033]图2为本发明实施例提供的避免中间系统邻居关系震荡的方法流程图;
[0034]图3为本发明实施例提供的避免中间系统邻居关系震荡的装置结构示意图。
【具体实施方式】
[0035]当一个IS与多个IS之间建立IS-1S邻居关系时,且IS这一侧突发性地产生大量LSP更新报文时,现有技术提供的解决方式,均无法从根本上解决邻居关系震荡的问题。
[0036]基于此问题,本发明实施例提供了一种避免中间系统邻居关系震荡的方法及装置,在本发明中,本地IS在邻居IS的当前Hello周期内判断出自身产生大量LSP报文时,执行向邻居IS发送携带有LSP突发标识的Hello报文的步骤,以告知邻居IS本地将有大量LSP报文发送;然后,再依据在当前Hello周期内邻居IS根据自身实际情况反馈过来的相关信息,来确定是否需要延长邻居维持时间和发送队列中LSP报文的发送周期,以确保本地IS在邻居维持时间内将所有的LSP报文发送给邻居IS,这种处理方式,可根据邻居IS的实际设备状态,动态调整邻居维持时间和发送LSP报文的时间间隔,从而避免了邻居关系发生震荡的问题。
[0037]下面结合说明书附图,对本发明实施例提供的一种避免中间系统邻居关系震荡的方法及装置的【具体实施方式】进行说明。
[0038]本发明实施例提供的一种避免中间系统邻居关系震荡的方法,如图2所示,具体包括以下步骤:
[0039]S21:本地IS在邻居IS的当前Hello周期内,判断自身发送队列中的LSP报文数量是否不小于第一设定数量;若是,执行步骤S22 ;否则,执行步骤S23 ;
[0040]在这里,上述当前Hello周期为本地IS根据邻居IS最近发来的Hello报文中携带的邻居维持时间确定出的;
[0041]S22:向邻居IS发送携带有LSP突发标识的Hello报文;
[0042]S23:按照设定发送周期向邻居IS发送队列中的LSP报文;
[0043]S24:在当前Hello周期内,确定自身是否收到邻居IS发送的Hello报文;若是,执行步骤S25 ;否则,执行步骤S26 ;
[0044]S25:确定收到的Hello报文中是否携带有LSP延迟发送标识;若是,执行步骤S26 ;否则,执行步骤23 ;
[0045]S26:延长邻居维持时间和发送队列中LSP报文的当前发送周期,并将延长后的发送周期作为当前发送周期,将邻居的下一个Hello周期作为当前Hello周期,返回步骤S24,直到将发送队列中的所有LSP报文发送给邻居IS。
[0046]具体地,在上述步骤S21中,本地IS与邻居IS在建立邻居关系后,为了维持邻居关系,各自会间隔一定时间段(即Hello周期)向对方发送Hello报文,且Hello报文中均携带有各自的邻居维持时间,以使得对方根据Hello报文中携带的邻居维持时间来维持彼此的邻居关系。
[0047]需要说明的是,本地IS与邻居IS可采用相同或不同的Hello周期相互发送Hello报文,并且,各自的邻居维持时间通常与Hello周期存在一定的关联,可根据邻居维持时间推算出Hello周期,邻居维持时间与Hello周期可以是倍数关系,例如邻居维持时间是Hello周期的N倍等,N为正整数;当然,二者也可以以其他关系来体现,在此不再一一枚举。
[0048]另外,上述步骤S21中的第一设定数量,可根据设备运行的实际情况来取值,第一设定数量是用于表征本地IS的发送队列中存有较多的未发送LSP报文的参数阈值,例如此第一设定数量可根据最小SPF路由计算周期来进行取值,通常情况下,最小SPF路由计算周期为2秒,此第一设定数量可设定为最小SPF路由计算周期的N倍,例如N为30,即第一设定数量设定为60,在这种情况下,如果本地IS判断出本地的发送队列中的LSP报文数量不小于60个,就代表着本地产生了大量LSP报文,需执行上述步骤S22,即向邻居IS发送携带有LSP突发标识的Hello报文;当然,第一设定数量还可以是其他数值。
[0049]进一步地,在本发明实施例中,之所以执行上述步骤S22,主要是为了避免在本地IS侧产生大量突发LSP报文的情况下,由于邻居IS的负载较重或者邻居IS自身设备性能等因素的影响,导致邻居关系出现震荡的问题,本发明通过向邻居IS发送携带LSP突发标识的Hello报文,以告知邻居IS本地将有大量LSP报文即将发送,使得邻居IS在后续收到此Hello报文时可根据自身的实际处理能力做出相应响应,并且,本地IS在向邻居IS发送携带有LSP突发标识的Hello报文的同时,按照设定发送周期发送队列中的报文。
[0050]需要说明的是,上述设定发送周期可根据网络运行的实际情况来确定,例如设定发送周期为33毫秒,当然还可以是其他取值。
[0051]优选地,在上述步骤S22中,本地IS向邻居IS发送的Hello报文中携带的LSP突发标识,可通过Hello报头中链路类型6个保留位的高2位字段来体现,例如使用01代表LSP突发标识。当然,也可以采用其他方式来体现,在此不再一一详述。
[0052]优选地,在本发明实施例中,在本地IS向邻居IS发送携带有LSP突发标识的Hello报文之后,对于邻居IS来说,它收到携带有LSP突发标识的Hello报文,得知本地IS将有大量LSP报文发来,会暂停启动路由计算任务,直到全部接收完本地IS发来的LSP报文,且确定出本地的链路状态数据库同步完成之后,再启动路由计算任务,以避免路由黑洞。
[0053]与此同时,邻居IS还执行下述流程:判断自身接收队列中已接收LSP报文数与可接收LSP报文总数的比值不小于第一设定阈值、且自身的CPU使用率和内存使用率均不小于第一设定百分比;并在判断为同时满足上述条件时,向本地IS发送携带有LSP延迟发送标识的Hello报文,以告知本地IS本地无法及时处理大量LSP报文,以使本地IS执行后续步骤,进而避免邻居关系出现震荡。
[0054]需要说明的是,上述邻居IS发送的Hello报文中的LSP延迟发送标识,也可通过Hello报头中链路类型6个保留位的高2位字段来体现,例如使用02代表LSP延迟发送标识。当然,也可以采用其他方式来体现,在此不再一一详述。
[0055]并且,上述第一设定阈值和第一设定百分比的取值,可根据邻居IS的实际处理能力来确定,上述第一设定阈值是用于表征邻居IS当前接收队列中存有较多未处理的LSP报文的参数阈值,例如第一设定阈值可为0.85,当然还可以是其他数值。
[0056]上述第一设定百分比是用于表征在邻居IS的当前接收队列中存有较多未处理的LSP报文的情况下,CPU和内存的使用程度的参数阈值,例如第一设定百分比可为90%,当然,还可以是其他数值。
[0057]优选地,在本发明实施例中,本地IS在执行完上述步骤S22之后,还可执行下述流程:判断自身发送队列中的LSP报文数量是否不大于第二设定数量;在判断为是的情况下,向邻居IS发送未携带有LSP突发标识的Hello报文,并按照发送队列中LSP报文的当前发送周期向邻居IS发送LSP报文;在判断为否的情况下,在自身的当前Hello周期到达时仍向邻居IS发送携带有LSP突发标识的Hello报文。
[0058]也就是说,本发明中的本地IS —直监测自身发送队列中的LSP报文数量,假设在邻居IS的某个Hello周期(例如当前Hello周期)内监测到LSP报文数量不小于上述第一设定数量,这时,立即触发携带有LSP突发标识的Hello报文的发送,之后,只要发送队列中的LSP报文数量不满足上述流程中的条件(即LSP报文数量不大于上述第二设定数量),那么,本地IS在自身的Hello周期到达时均向邻居IS发送携带有LSP突发标识的Hello报文,以便邻居IS可实时根据自身的实际情况做出相应响应,直到发送队列中的LSP报文数量满足上述条件,立即触发未携带有LSP突发标识的Hello报文的发送,即取消LSP突发标识。
[0059]需要说明的是,上述第二设定数量仍可根据设备运行的实际情况来取值,上述第二设定数量是用于表征本地IS的发送队列中存有较少的未发送LSP报文的参数阈值,与上述第一设定数量相比,通常是小于第一设定数量的,例如,第二设定数量可为20,当然,还可以是其他数值。
[0060]进一步地,对于本地IS而言,在执行完上述步骤S22之后,为了确定后续该如何发送本地突发的LSP报文,以避免邻居关系震荡,需继续执行上述步骤S24,即在邻居IS的当前Hello周期内确定是否接收到邻居IS发送的Hello报文;在确定出接收到的情况下,还需进一步执行上述步骤S25,在进一步确定出接收到的Hello报文中携带有LSP延迟发送标识时,即得知邻居IS此时无法及时处理大量LSP报文,继续执行上述步骤S26 ;那么,在确定出未接收到的情况下,也执行上述步骤S26。
[0061]需要说明的是,在执行上述步骤S26时,延长邻居的邻居维持时间,可按照当前Hello周期的指定倍数进行延长,当然,也可采用其他延长方式;延长发送队列中LSP报文的当前发送周期,例如此当前Hello周期内的发送周期实际上是设定发送周期,可按照当前发送周期的指定倍数延长,也可按照一定的时间间隔延长等。
[0062]假设当前发送周期为10毫秒,按照一定的时间间隔例如20毫秒延长,那么,本地IS发送携带有LSP突发标识的Hello报文后,先按照10毫秒的发送周期发送LSP报文,假设在当前Hello周期内接收到携带有LSP延迟发送标识的Hello报文,这时,本地IS需按照30毫秒的发送周期发送LSP报文,假设下个Hello周期内仍接收到携带有LSP延迟发送标识的Hello报文,那么,又需按照50毫秒的发送周期发送LSP报文。当然,还可以采用其他方式设置设定时长,在此不再一一详述。
[0063]更进一步地,在上述步骤S26中,对于本地IS来说,它是根据邻居IS最近发来的Hello报文中携带的邻居维持时间,来确定邻居IS的当前Hello周期的,假设最近发来的Hello报文中携带的邻居维持时间为30秒,邻居维持时间是邻居IS的Hello周期的3倍,这时即得出邻居IS的Hello周期是10秒,也就是说,如果本地IS侧未发生LSP报文突发,邻居IS会在发送此Hel1报文之后,在接下来的这30秒内每间隔10秒向本地IS发送一次Hello报文;如果本地IS侧发生了 LSP报文突发,且已如上述步骤S26中延长了邻居维持时间,例如邻居维持时间从30秒延长到40秒,在这种情况下,假设上述步骤S21中的当前Hel 1周期,是未延长邻居维持时间时的30秒内邻居IS的第一个He I 1周期,那么,本地IS在延长发送LSP报文的发送周期之后,还要根据邻居IS的下一个Hello周期内做出的响应,来调整邻居维持时间和LSP报文的发送周期,即本地IS返回执行上述步骤24,直到在延长后的邻居维持时间内将发送队列中的LSP报文全部发送完毕,以避免邻居关系发生震荡。
[0064]优选地,在本发明实施例中,本地IS在向邻居IS发送携带有LSP突发标识的Hello报文之后,还可执行下述流程:在首个当前Hello周期内,如果确定出自身接收到邻居IS发送的Hello报文,且确定出未携带有LSP延迟发送标识,那么,确定自身的CPU使用率是否小于第二设定百分比,在确定为是时,缩短发送队列中LSP报文的当前发送周期,并按照缩短后的发送周期向邻居IS发送队列中的LSP报文。
[0065]前述这种处理方式,主要应用于设备性能较好的IS,且邻居设备之间的设备性能相同的场景下,这样,本地IS可快速将LSP报文发送给邻居IS,不仅避免了邻居关系出现震荡,还提闻了路由收敛速度。
[0066]需要说明的是,上述第二设定百分比仍可根据IS设备的实际情况来确定,例如第二设定百分比为20%,当然,还可以是其他数值;
[0067]优选地,在本发明实施例中,本地IS在向邻居IS发送携带有LSP突发标识的Hello报文之后,还可执行下述流程:
[0068]在当前Hello周期内,如果确定出自身接收到的Hello报文中未携带有LSP延迟发送标识,且之前接收到的Hello报文中携带有LSP延迟发送标识,则缩短发送队列中LSP报文的当前发送周期,并将缩短后的发送周期作为当前发送周期,将邻居的下一个Hello周期作为当前Hello周期,返回上述步骤S24。
[0069]在上述流程中,本地IS接收到的未携带有LSP延迟发送标识的Hello报文,是邻居IS在接收到携带有LSP突发标识的Hello报文后,判断出自身接收队列中已接收LSP报文数与可接收LSP报文总数的比值不大于第二设定阈值、且自身的CPU使用率和内存使用率均不大于第三设定百分比时向本地IS发出的。
[0070]也就是说,邻居IS在向本地IS发送携带有LSP延迟发送标识的Hello报文之后,如果在下一个Hello周期到达时仍判断出自身满足上述条件,那么,仍然向本地IS发送携带有LSP延迟发送标识的Hello报文,直到邻居IS判断出自身的接收队列中的LSP报文、且自身的CPU使用率和内存使用率同时满足上述流程中的条件时,才取消LSP延迟发送标识,向本地IS发送未携带有LSP延迟发送标识的Hello报文。
[0071]需要说明的是,上述第二设定阈值和第三设定百分仍可根据IS设备的实际情况取值,上述第二设定阈值是用于表征邻居IS当前接收队列中仅有少量未处理的LSP报文,与上述第一设定阈值相比,通常是小于第一设定阈值的,例如上述第二设定阈值为0.3,当然,还可以是其他数值。[0072]上述第三设定百分比仍是用于表征在邻居IS的当前接收队列中存有少量未处理的LSP报文的情况下,CPU和内存的使用程度的参数阈值,与上述第一设定百分比相比,通常是小于第一设定百分比的,例如第二设定百分比可为80%,当然,还可以是其他数值。
[0073]进一步地,在本发明实施例中,在保证了本地IS与邻居IS之间不发生震荡的情况下,为了避免路由黑洞,本地IS还可执行下述流程:在判断出自身发送队列中的LSP报文数量不小于第一设定数量时,不启动路由计算任务,直到将当前发送队列中所有的LSP报文发送给邻居IS,且确定出自身的链路状态数据库同步完成后,启动路由计算任务。
[0074]通过前述这种处理方式,不仅减少了不必要的路由计算,提高了设备处理效率和路由收敛速度,同时还避免了链路状态数据库不一致情况下路由计算产生的路由黑洞。
[0075]在图1所示的拓扑架构中,在Hl路由大量变化或者Rl配置调整等的情况下,均会导致Rl在瞬间产生大量LSP报文,如果利用现有技术中提及的解决方式,均无法避免Rl与R2至Rn的邻居关系震荡,还会导致路由收敛速度较慢的问题。
[0076]如果将本发明提供的上述方法应用于此架构中,以Rl和R2为例,Rl在确定出自身有大量LSP报文需要发送时,会向邻居R2发送携带有LSP突发标识的Hello报文,通知R2,并且暂停启动路由计算任务,直到将发送队列中所有的LSP报文发送给R2,且确定出自身的链路状态数据库同步完成后,再启动路由计算任务;R2收到携带有LSP突发标识的Hello报文后,也会暂停启动本地的路由计算任务,直到接收到Rl发来全部LSP报文且本地的链路状态数据库同步完成,再启动路由计算任务,同时在判断自身的接收队列中的LSP报文、且自身使用率和内存使用率均满足一定条件的情况下,向Rl发送携带有LSP延迟发送标识的Hello报文。
[0077]这时,对于Rl而言,如果接收到R2发来的携带有LSP延迟发送标识的Hello报文,那么,延长R2的邻居维持时间和发送队列中LSP报文的当前发送周期,例如,原来按照33毫秒(即当前发送周期)的间隔发送,延迟后可按照50毫秒(即延长后的发送周期)的时间发送,以避免邻居关系出现震荡;并且Rl在设备性能允许的情况下,还可以缩短设定时长,例如,缩短后以10毫秒的时间进行发送,不仅可避免出现邻居关系震荡,还提高了路由收敛速度。
[0078]基于同一发明构思,本发明实施例还提供了一种避免中间系统邻居关系震荡的装置,由于该装置所解决问题的原理与前述避免中间系统邻居关系震荡的方法相似,因此该装置的实施可以参见前述方法的实施,重复之处不再赘述。
[0079]本发明实施例提供的避免中间系统邻居关系震荡的装置,如图3所示,具体包括:
[0080]判断模块31,用于在邻居IS的当前Hello周期内,判断装置的发送队列中的LSP报文数量是否不小于第一设定数量;
[0081]在这里,上述当前Hello周期为自身根据邻居IS最近发来的Hello报文中携带的邻居维持时间确定出的;
[0082]发送模块32,用于在判断模块31判断为是时,向邻居IS发送携带有LSP突发标识的Hello报文;
[0083]确定模块33,用于在当前Hello周期内,确定装置是否收到邻居IS发送的Hello报文;
[0084]延长模块34,用于在确定模块33确定为是,且确定模块33确定出接收到的Hello报文中携带有LSP延迟发送标识,或者在确定模块33确定为否时,延长邻居维持时间和发送队列中LSP报文的当前发送周期,并将延长后的发送周期作为当前发送周期,将邻居的下一个Hello周期作为当前Hello周期,返回确定模块33确定装置是否接收到邻居IS发送的Hello报文的步骤,直到发送模块32将发送队列中所有的LSP报文发送给邻居IS。
[0085]优选地,上述确定模块33确定出的装置接收到的携带有LSP延迟发送标识的Hello报文,为邻居IS在收到携带有LSP突发标识的Hello报文后,判断出自身接收队列中已接收LSP报文数与可接收LSP报文总数的比值不小于第一设定阈值、且自身的CPU使用率和内存使用率均不小于第一设定百分比时向装置发出的。
[0086]优选地,上述判断模块31,还用于在装置向邻居IS发送携带有LSP突发标识的Hello报文之后,判断装置的发送队列中的LSP报文数量是否不大于第二设定数量;
[0087]发送模块32,用于在判断模块31判断为是时,按照发送队列中LSP报文的当前发送周期向邻居IS发送LSP报文。
[0088]优选地,上述装置,还可以包括第一缩短模块35,
[0089]确定模块33,还用于在首个当前Hello周期内,确定出装置收到邻居IS发送的Hello报文,且确定出未携带有LSP延迟发送标识时,确定装置的CPU使用率是否小于第二设定百分比;
[0090]第一缩短模块35,用于在确定模块33确定为是时,缩短设定时长;
[0091]发送模块32,还用于按照第一缩短模块35缩短后的时长将发送队列中所有的LSP报文发送给邻居IS。
[0092]优选地,上述装置,还可以包括:
[0093]第二缩短模块36,用于在当前Hello周期内,确定模块33确定出装置收到的Hello报文中未携带有LSP延迟发送标识,且之前收到的Hello报文中携带有LSP延迟发送标识时,缩短发送队列中LSP报文的当前发送周期,将缩短后的发送周期作为当前发送周期,并将邻居IS的下一个Hello周期作为当前Hello周期,返回确定模块33确定装置是否收到邻居IS发送的Hello报文的步骤。
[0094]优选地,上述确定模块33确定出的装置收到的未携带有LSP延迟发送标识的Hello报文,为邻居IS在接收到携带有LSP突发标识的Hello报文后,判断出自身接收队列中已接收LSP报文数与可接收LSP报文总数的比值不小于第二设定阈值、且自身的CPU使用率和内存使用率均不大于第三设定百分比时向IS发出的。
[0095]优选地,上述装置,还可以包括启动模块37,
[0096]上述确定模块33,还用于确定装置的链路状态数据库是否同步完成;
[0097]启动模块37,用于在判断模块31判断出装置的发送队列中的LSP报文数量不小于第一设定数量时,不启动路由计算任务,直到发送模块32将所有LSP报文发送给邻居IS,且确定模块确定出装置的链路状态数据库同步完成后,启动路由计算任务。
[0098]显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
【权利要求】
1.一种避免中间系统邻居关系震荡的方法,其特征在于,包括:本地中间系统IS在邻居IS的当前Hel1周期内,判断出自身发送队列中的链路信息状态LSP报文数量不小于第一设定数量时,向所述邻居IS发送携带有LSP突发标识的 Hello报文,并确定自身是否收到所述邻居IS发送的Hello报文,所述当前Hello周期为自身根据所述邻居IS最近发来的Hello报文中携带的邻居维持时间确定出的;在确定为是,且确定出收到的Hello报文中携带有LSP延迟发送标识,或者在确定为否时,延长所述邻居维持时间和发送队列中LSP报文的当前发送周期,并将延长后的发送周期作为当前发送周期,将所述邻居IS的下一个Hello周期作为当前Hello周期,返回确定是否收到所述邻居IS发送的Hello报文的步骤,直到将发送队列中的所有LSP报文发送给所述邻居IS。
2.如权利要求1所述的方法,其特征在于,所述本地IS收到的携带有LSP延迟发送标识的Hello报文,为所述邻居IS在收到携带有LSP突发标识的Hello报文后,判断出自身接收队列中已接收LSP报文数与可接收LSP报文总数的比值不小于第一设定阈值、且自身的CPU使用率和内存使用率均不小于第一设定百分比时向所述本地IS发出的。
3.如权利要求1或2所述的方法,其特征在于,在所述本地IS向所述邻居IS发送携带有LSP突发标识的Hello报文之后,还包括:如果所述本地IS判断出自身发送队列中的LSP报文数量不大于第二设定数量,向所述邻居IS发送未携带有LSP突发标识的Hello报文,并按照发送队列中LSP报文的当前发送周期向所述邻居IS发送LSP报文。
4.如权利要求1或2所述的方法,其特征在于,还包括:在首个当前Hello周期内,如果所述本地IS确定出自身收到所述邻居IS发送的Hello 报文,且确定出未携带有LSP延迟发送标识,确定自身的CPU使用率是否小于第二设定百分比;若是,缩短发送队列中LSP报文的当前发送周期,并按照缩短后的发送周期向所述邻居IS发送LSP报文。
5.如权利要求1或2所述的方法,其特征在于,还包括:在所述当前Hello周期内,如果所述本地IS确定出自身收到的Hello报文中未携带有 LSP延迟发送标识,且之前收到的Hello报文中携带有LSP延迟发送标识,则缩短发送队列中LSP报文的当前发送周期,将缩短后的发送周期作为当前发送周期,并将所述邻居IS的下一个Hello周期作为当前Hello周期,返回确定是否收到所述邻居IS发送的Hello报文的步骤。
6.如权利要求5所述的方法,其特征在于,所述本地IS接收到的未携带有LSP延迟发送标识的Hello报文,为所述邻居IS在收到携带有LSP突发标识的Hello报文后,判断出自身接收队列中已接收LSP报文数与可接收LSP报文总数的比值不大于第二设定阈值、且自身的CPU使用率和内存使用率均不大于第三设定百分比时向所述本地IS发出的。
7.如权利要求1或2所述的方法,其特征在于,还包括:所述本地IS在判断出自身发送队列中的LSP报文数量不小于所述第一设定数量时,不启动路由计算任务,直到将发送队列中的所有LSP报文发送给所述邻居IS,且确定出自身的链路状态数据库同步完成后,启动路由计算任务。
8.—种避免中间系统邻居关系震荡的装置,其特征在于,包括:判断模块,用于在邻居中间系统IS的当前Hello周期内,判断所述装置的发送队列中的链路信息状态LSP报文数量是否不小于第一设定数量,所述当前Hello周期为所述装置根据所述邻居IS最近发来的Hello报文中携带的邻居维持时间确定出的;发送模块,用于在判断模块判断为是时,向邻居IS发送携带有LSP突发标识的Hello 报文;确定模块,用于在所述当前Hello周期内,确定所述装置是否收到所述邻居IS发送的 Hello报文;延长模块,用于在所述确定模块确定为是,且所述确定模块确定出收到的Hello报文中携带有LSP延迟发送标识,或者在所述确定模块确定为否时,延长所述邻居维持时间和发送队列中LSP报文的当前发送周期,并将延长后的发送周期作为当前发送周期,将所述邻居IS的下一个Hello周期作为当前Hello周期,返回所述确定模块确定是否收到所述邻居IS发送的Hello报文的步骤,直到所述发送模块将所述发送队列中的所有LSP报文发送给所述邻居IS。
9.如权利要求8所述的装置,其特征在于,所述确定模块确定出的所述装置收到的携带有LSP延迟发送标识的Hello报文,为所述邻居IS在收到携带有LSP突发标识的Hello 报文后,判断出自身接收队列中已接收LSP报文数与可接收LSP报文总数的比值不小于第一设定阈值、且自身的CPU使用率和内存使用率均不小于第一设定百分比时向所述本地IS 发出的。
10.如权利要求8所述的装置,其特征在于,所述判断模块,还用于在所述装置向所述邻居IS发送携带有LSP突发标识的Hello报文之后,判断所述装置的发送队列中的LSP报文数量是否不大于第二设定数量;所述发送模块,还用于在所述判断模块判断为是时,按照发送队列中LSP报文的当前发送周期向所述邻居IS发送LSP报文。
11.如权利要求8或9所述的装置,其特征在于,所述装置,还包括第一缩短模块,所述确定模块,还用于在首个当前Hello周期内,确定出所述装置收到所述邻居IS发送的Hello报文,且确定出未携带有LSP延迟发送标识时,确定所述装置的CPU使用率是否小于第二设定百分比;第一缩短模块,用于在所述确定模块确定为是时,缩短发送队列中LSP报文的当前发送周期;`所述发送模块,按照所述第一缩短模块缩短后的发送周期向所述邻居IS发送LSP报文。
12.如权利要求8或9所述的装置,其特征在于,所述装置,还包括:第二缩短模块,用于在所述当前Hello周期内,所述确定模块确定出所述装置收到的 Hello报文中未携带有LSP延迟发送标识,且之前收到的Hello报文中携带有LSP延迟发送标识时,缩短发送队列中LSP报文的当前发送周期,将缩短后的发送周期作为当前发送周期,并将所述邻居IS的下一个Hello周期作为当前Hello周期,返回所述确定模块确定所述装置是否收到所述邻居IS发送的Hello报文的步骤。
13.如权利要求12所述的装置,其特征在于,所述确定模块确定出的所述装置收到的未携带有LSP延迟发送标识的Hello报文,为所述邻居IS在收到携带有LSP突发标识的 Hello报文后,判断出自身接收队列中已接收LSP报文数与可接收LSP报文总数的比值不大于第二设定阈值、且自身的CPU使用率和内存使用率均不大于第三设定百分比时向所述本地IS发出的。
14.如权利要求8或9所述的装置,其特征在于,所述装置,还包括启动模块, 所述确定模块,还用于确定所述装置的链路状态数据库是否同步完成; 启动模块,用于在所述判断模块判断出所述装置的发送队列中的LSP报文数量不小于第一设定数量时,不启动路由计算任务,直到所述发送模块将所有LSP报文发送给所述邻居IS,且所述确定模块确定出所述装置的链路状态数据库同步完成后,启动路由计算任务。
【文档编号】H04L12/70GK103560947SQ201310513464
【公开日】2014年2月5日 申请日期:2013年10月25日 优先权日:2013年10月25日
【发明者】兰加兴 申请人:福建星网锐捷网络有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1