一种路由收敛方法及装置与流程

文档序号:14879481发布日期:2018-07-07 09:21阅读:147来源:国知局

本发明涉及网络通信技术领域,尤其涉及一种路由收敛方法及装置。



背景技术:

在运行同一链路状态路由协议的网络中,每一个路由节点根据收集到的其它路由节点的链路状态信息,生成当前网络的拓扑结构,基于该网络拓扑结构计算本节点到网络中每一个目的网段的路由,同时,每一个路由节点还会接收到其它路由节点通告的路由,该通告的路由包括:其它路由节点上配置的静态路由、以及基于其它路由协议生成的路由等。

当网络拓扑发生变化时,例如,某条链路断开时,路由节点需要基于变化后的网络拓扑,重新计算本节点到网络中每一个目的网段的路由,同时,需要更新其它路由节点通告的路由,随着网络的不断扩大,路由的收敛速度越来越慢,无法满足快速切换路由的需求。



技术实现要素:

本发明的目的在于提供一种路由收敛方法及装置,用以快速切换路由。

为实现上述发明目的,本发明提供了如下技术方案:

一方面,本发明提供一种路由收敛方法,应用于第一节点,所述第一节点为网络中的任一节点,所述方法包括:

当网络拓扑变化时,确定变化后的网络拓扑中的分割节点和第二节点,所述第一节点到达所述第二节点的路径经过所述分割节点;

基于变化后的网络拓扑,计算从所述第一节点到所述分割节点的路由,其中包括第一下一跳地址和第一出接口;

将本地记录的目的节点为所述分割节点的第一路由以及目的节点为所述第二节点的第二路由中的下一跳地址和出接口分别更新为所述第一下一跳地址和第一出接口。

另一方面,本发明还提供一种路由收敛装置,应用于第一节点,所述第一节点为网络中的任一节点,所述装置包括:

确定单元,用于当网络拓扑变化时,确定变化后的网络拓扑中的分割节点和第二节点,所述第一节点到达所述第二节点的路径经过所述分割节点;

计算单元,用于基于变化后的网络拓扑,计算从所述第一节点到所述分割节点的路由,其中包括第一下一跳地址和第一出接口;

更新单元,用于将本地记录的目的节点为所述分割节点的第一路由以及目的节点为所述第二节点的第二路由中的下一跳地址和出接口分别更新为所述第一下一跳地址和第一出接口。

由以上描述可以看出,本发明中第一节点在网络拓扑变化时,基于变化后的网络拓扑确定分割节点和第二节点,其中,第一节点到第二节点的路径经过分割节点,也就是说,从第一节点流向第二节点的流量都经过分割节点,因此,对于第一节点来说,计算出从本节点到分割节点的路由的第一下一跳地址和第一出接口,即可将目的节点为分割节点的第一路由以及目的节点为第二节点的第二路由中的下一跳地址和出接口分别更新为第一下一跳地址和第一出接口。可见,本发明仅需计算出从第一节点到分割节点的路由的下一跳地址和出接口,即可同时完成对第一路由和第二路由的更新,减少了路由收敛的运算量,提升了路由收敛效率,达到快速切换路由的目的。

附图说明

图1是本发明实施例示出的一种网络的示意图;

图2是本发明实施例示出的一种路由收敛方法的流程图;

图3是本发明实施例示出的变化后的网络拓扑的示意图;

图4是本发明实施例示出的基于图3所示网络拓扑得到的搜索树的示意图;

图5是本发明实施例示出的标有第一深度值和第二深度值的搜索树的示意图;

图6是本发明实施例示出的第一节点的结构示意图;

图7是本发明实施例示出的一种路由收敛装置的结构示意图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。

在本发明使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本发明可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本发明范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

本发明实施例提出一种路由收敛方法,应用于第一节点,该方法中第一节点在网络拓扑变化时,基于变化后的网络拓扑确定分割节点和第二节点,其中,第一节点到第二节点的路径经过分割节点,通过计算从第一节点到分割节点的路由的第一下一跳地址和第一出接口,更新目的节点为分割节点的第一路由以及目的节点为第二节点的第二路由的下一跳地址和出接口分别为第一下一跳地址和第一出接口,以达到快速切换路由的目的。

参见图1,为本发明实施例示出的一种网络示意图,该网络包括路由节点a~j、r,共11个路由节点,当然,本发明不对路由节点的数量进行限定,图1所示节点数量仅为示例性说明。该网络中各路由节点运行链路状态路由协议,例如,ospf(openshortestpathfirst,开放式最短路径优先)协议或is-is(intermediatesystem-to-intermediatesystem,中间系统到中间系统)协议,路由节点通过收集其它路由节点的链路状态信息,计算得到网络的拓扑结构,简称网络拓扑。

参见图2,为本发明路由收敛方法的一个实施例流程图,该实施例对路由收敛过程进行描述。以下描述中,以第一节点的角度描述路由收敛过程,该第一节点为网络中的任一节点。

步骤201,当网络拓扑变化时,确定变化后的网络拓扑中的分割节点和第二节点,所述第一节点到达所述第二节点的路径经过所述分割节点。

以图1为例,若节点r的接口3对应链路断开导致网络拓扑变化,如图3所示为变化后的网络拓扑示意图。

第一节点以自身为根,对变化后的网络拓扑运行dfs(depthfirstsearch,深度优先搜索)算法,生成搜索树。例如,节点r以自身为根,对图3所示网络拓扑运行dfs算法,得到如图4所示搜索树,其中,虚线箭头表示遍历方向,沿遍历方向上每一个节点只被遍历一次。

对生成的搜索树运行预设算法(例如,tarjan算法),获得搜索树中各节点的第一深度值和第二深度值,参见图5,为标有第一深度值和第二深度值的搜索树的示意图,其中,每一个节点下方括号中的第一个数值为第一深度值,第二个数值为第二深度值。第一深度值表示节点在搜索树中的深度,按照遍历顺序确定节点的第一深度值,遍历顺序越靠前的节点,其第一深度值越小,例如,节点r为首个遍历的节点,其第一深度值为0;节点a为第二个遍历的节点,其第一深度值为1;节点b为第三个遍历的节点,其第一深度值为2,以此类推;第二深度值为节点的子孙节点在搜索树中能到达的最浅深度,即各子孙节点分别沿遍历方向能够到达的首个第一深度值小于或等于子孙节点的第一深度值的节点的第一深度值中最小的第一深度值。以节点c为例,节点c在左侧虚线箭头所示遍历方向上的子节点d沿遍历方向可到达节点e,节点e的第一深度值为5大于子节点d的第一深度值4,继续向前遍历,由于节点e和节点r实际上是连通的(见图3),则沿遍历方向继续向前到达节点r,节点r的第一深度值为0小于子节点d的第一深度值4,因此,节点r为子节点d沿遍历方向可到达的首个第一深度值小于子节点d的第一深度值的节点,则子节点d沿遍历方向能到达的深度为0;同理,节点c在左侧虚线箭头所示遍历方向上的孙节点e沿遍历方向能到达节点r,节点r为孙节点e沿遍历方向可到达的首个第一深度值小于孙节点e的第一深度值的节点,则孙节点e沿遍历方向能到达的深度为0;节点c在右侧虚线箭头所示遍历方向上的子节点f沿遍历方向可到达节点g,节点g的第一深度值为7大于子节点f的第一深度值6,则沿遍历方向继续向前到达节点h,节点h的第一深度值为8大于子节点f的第一深度值6,则沿遍历方向继续向前到达节点i,节点i的第一深度值为9大于子节点f的第一深度值6,则沿遍历方向继续向前到达节点j,节点j的第一深度值为10大于子节点f的第一深度值6,由于节点j和节点c实际上是连通的(见图3),则沿当前方向继续向前到达节点c,节点c的第一深度值为3小于子节点f的第一深度值6,因此,节点c为子节点f沿遍历方向可到达的首个第一深度值小于子节点f的第一深度值的节点,则子节点f沿遍历方向能到达的深度为3;同理,节点c在右侧虚线箭头所示遍历方向上的孙节点g、h、i、j分别沿遍历方向能到达的首个第一深度值小于各孙节点自身第一深度值的节点为节点c,因此,确定孙节点g、h、i、j能到达的深度均为3,至此,节点c的子孙节点(d、e、f、g、h、i、j)能到达的最浅深度(最小第一深度值)为0,因此,确定节点c的第二深度值为0。

在获得每一个节点的第一深度值和第二深度值后,确定网络拓扑中的分割节点,该分割节点被定义为,若网络拓扑中删除某节点,导致网络拓扑被分割成至少两个独立的子拓扑,则该节点为分割节点。确定分割节点的具体过程为,对遍历方向上的相邻节点进行比较,若遍历方向上存在第二深度值大于或等于当前节点的第一深度值的下一节点,则该当前节点为分割节点。例如,节点c为当前节点,节点c的遍历方向有两个,在图5所示左侧虚线箭头表示的遍历方向上,节点c的下一节点为节点d,节点d的第二深度值为0,小于节点c的第一深度值3,但是,在右侧虚线箭头表示的遍历方向上,节点c的下一节点为节点f,节点f的第二深度值为3,等于节点c的第一深度值3,即在遍历方向上存在第二深度值大于或等于节点c的第一深度值的节点,因此,确定节点c为分割节点。

在确定分割节点后,查找与该分割节点对应的第二节点,该第二节点的第二深度值大于等于分割节点的第一深度值。参见图5,分割节点c的第一深度值为3,节点f、g、h、i、j的第二深度值均为3,等于节点c的第一深度值,因此,节点f、g、h、i、j均为第二节点,从第一节点(节点r)到第二节点(节点f、g、h、i、j)的路径均经过分割节点c。

步骤202,基于变化后的网络拓扑,计算从所述第一节点到所述分割节点的路由,其中包括第一下一跳地址和第一出接口。

本步骤基于变化后的网络拓扑,重新计算从第一节点到分割节点的路由,即确定路由包括的下一跳地址(记为第一下一跳地址)和出接口(记为第一出接口)。例如,网络拓扑变化后如图3所示,计算得到节点r到节点c的路径为r→a→b→c,则节点r上对应路由的下一跳地址为节点a的接口1的ip地址,出接口为节点r的接口2。

步骤203,将本地记录的目的节点为所述分割节点的第一路由以及目的节点为所述第二节点的第二路由中的下一跳地址和出接口分别更新为所述第一下一跳地址和第一出接口。

利用步骤202计算得到的第一下一跳地址和第一出接口,更新本地记录的目的节点为分割节点的第一路由的下一跳地址和出接口;此外,由于从第一节点流向第二节点的流量都经过分割节点,因此,目的节点为第二节点的第二路由的下一跳地址和出接口也更新为第一下一跳地址和第一出接口。

可见,本发明通过计算从第一节点到分割节点的路由的下一跳地址和出接口,即可完成对本地记录的目的节点为分割节点的第一路由、目的节点为第二节点的第二路由的下一跳地址以及出接口的更新,其中,对于该网络拓扑中节点,每个节点发布的路由可以是本地生成的路由,还可以是从其他协议引入的路由,因此,对于第一节点而言需要更新的路由数量非常大,而通过本发明的上述方式(即将第二节点发布的路由迭代到分割节点)可以将运算量大大降低,可达到快速切换路由的目的。

此外,对网路拓扑中除分割节点及第二节点以外的剩余节点,直接计算从第一节点到剩余节点的路由,并更新本地记录的目的节点为剩余节点的路由。

仍以图1所示网络为例,详细介绍路由收敛过程。

若图1所示为拓扑变化前的网络,从节点r到节点c的路径为r→c,节点r上记录的目的节点为节点c的路由的下一跳地址为节点c的接口1的ip地址,出接口为节点r的接口3。

若节点r的接口3的链路断开,节点重新进行网络拓扑收集,得到变化后的网络拓扑,如图3所示。

以r节点为例,r节点以自身为根,利用dfs算法遍历图3中每一个节点,得到图4所示搜索树,并按照遍历顺序确定每一个节点的第一深度值,如图5所示,括号中的第一个数值为第一深度值;确定每一个节点的第二深度值,该第二深度值为节点的子孙节点在搜索树中能到达的最浅深度,以节点f为例,节点f的子节点g沿遍历方向可到达节点h,节点h的第一深度值为8大于子节点g的第一深度值7,则沿遍历方向继续向前到达节点i,节点i的第一深度值为9大于节点g的第一深度值7,则沿遍历方向继续向前到达节点j,节点j的第一深度值为10大于子节点g的第一深度值7,由于节点j和节点c实际上是连通的(见图3),则沿当前方向继续向前到达节点c,节点c的第一深度值为3小于子节点g的第一深度值7,即节点c为子节点g沿遍历方向可到达的首个第一深度值小于子节点g的第一深度值的节点,子节点g沿遍历方向能到达的深度为3;同理,节点f的孙节点h、i、j也分别沿遍历方向确定能到达的深度为3,因此,可确定节点f的子孙节点能到达的最浅深度为3,即节点f的第二深度值为3。对所有节点采用相同的方式确定第二深度值,如图5所示,括号中的第二个数值为第二深度值。

沿遍历方向对相邻节点的深度值进行比较,确定分割节点。例如,图5中,节点c沿右侧虚线箭头所示遍历方向,其相邻节点(下一跳节点)为节点f,节点f的第二深度值为3等于节点c的第一深度值3,则确定节点c为分割节点。节点f、g、h、i、j的第二深度值均为3,等于节点c的第一深度值3,因此,确定节点f、g、h、i、j均为第二节点,从节点r到节点f、g、h、i、j的路径均经过分割节点c。

基于图3所示网络拓扑,计算节点r到节点c的路径为r→a→b→c,则节点r到节点c的路由的下一跳地址为节点a的接口1的ip地址,出接口为节点r的接口2。

更新节点r上记录的目的节点为节点c的路由的下一跳地址为节点a的接口1的ip地址,出接口为节点r的接口2;更新目的节点分别为节点f、g、h、i、j的路由的下一跳地址为节点a的接口1的ip地址,出接口为节点r的接口2。

与前述路由收敛方法的实施例相对应,本发明还提供了路由收敛装置的实施例。

本发明路由收敛装置的实施例可以应用在第一节点上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在设备的处理器运行存储器中的路由收敛逻辑指令形成的。从硬件层面而言,如图6所示,为本发明路由收敛装置所在设备的一种硬件结构图,除了图6所示的处理器以及非易失性存储器之外,实施例中装置所在的设备通常根据该设备的实际功能,还可以包括其他硬件,对此不再赘述。

请参考图7,为本发明一个实施例中的路由收敛装置的结构示意图。该路由收敛装置包括确定单元701、计算单元702以及更新单元703,其中:

确定单元701,用于当网络拓扑变化时,确定变化后的网络拓扑中的分割节点和第二节点,所述第一节点到达所述第二节点的路径经过所述分割节点;

计算单元702,用于基于变化后的网络拓扑,计算从所述第一节点到所述分割节点的路由,其中包括第一下一跳地址和第一出接口;

更新单元703,用于将本地记录的目的节点为所述分割节点的第一路由以及目的节点为所述第二节点的第二路由中的下一跳地址和出接口分别更新为所述第一下一跳地址和第一出接口。

进一步地,所述装置还包括:

生成单元,用于所述第一节点以自身为根节点,对所述网络拓扑运行深度优先搜索dfs算法,生成搜索树。

进一步地,所述装置还包括:

获得单元,用于运行预设算法,获得所述搜索树中各节点的第一深度值和第二深度值,所述第一深度值表示节点在所述搜索树中的深度,所述第二深度值为节点的子孙节点在所述搜索树中能到达的最浅深度。

进一步地,

所述第二节点的第二深度值大于等于分割节点的第一深度值。

进一步地,

所述计算单元702,还用于计算从所述第一节点到除所述分割节点及所述第二节点以外的剩余节点的路由,并更新本地记录的目的节点为所述剩余节点的路由。

上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1