一种路由计算方法及装置与流程

文档序号:11234546阅读:300来源:国知局
一种路由计算方法及装置与流程

本发明涉及网络技术领域,尤其涉及一种路由计算方法及装置。



背景技术:

传统网络中为了保障链路的可靠性,会通过多条链路进行备份保护,这种场景下会遇到环路问题,必须部署生成树协议(spanningtreeprotocol,stp)等相关破环协议来防止网络广播风暴产生。stp网络虽然解决了环路的问题,但是存在链路无法负载分担、利用率不高的问题。虽然有多生成树协议(multiplespanningtreeprotocol,mstp)可以提高链路的负载分担能力,但是并不能完全解决,同时整个网络维护起来是比较困难的事情。

同时随着虚拟化的兴起,越来越需要一个大的二层网络,虚拟机可以在各个物理服务器之间自由迁移。这种场景下传统的stp网络显然已经满足不了需求。如图1所示,多链接透明互联(transparentinterconnectionoflotsoflinks,trill)使用mac-in-mac技术形成一个二层路由网络,设备之间可以全连接。trill网络中的设备称之为路由桥(routerbridge,rb),每个rb拥有一个唯一的路由标示nickname。借助trill路由可以防止网络环路,链路之间可以形成等价路由(equal-costmultipathrouting,ecmp)对流量进行负载分担。trill路由协议在网络中会形成单播路由和组播路由分别指导已知单播流量转发和广播未知单播组播(broadcastunknownunicastmulticast,bum)流量转发。

在trill网络中每当rb的链路状态数据库(linkstatedatabase,lsdb)被刷新,都会触发rb重新计算路由,现有技术中,各条链路的路由计算和下发存储无顺序控制,当rb的转发资源不够时,往往会让未稳定链路的路由抢占资源,导致原来稳定链路的路由承载业务中断。



技术实现要素:

本发明实施例提供一种路由计算方法及装置,可以优先计算并存储稳定链路上的路由,保证稳定链路上的路由承载业务的正常运行。

本发明实施例第一方面提供了一种路由计算方法,可包括:

接收至少一个邻居路由器同步的链路状态报文,链路状态报文中包括网络中的链路所对应的字段值,字段值用于表示该链路的稳定程度;

根据网络中每条链路的字段值大小,将所有链路进行排序,其中稳定程度高的优先于稳定程度低的;

基于排序后的链路顺序,优先计算并存储稳定程度高的链路上的路由。这种方式通过在链路状态报文中增加一个字段值,用于表示链路的稳定程度,这样通过字段值的大小排序,优先计算稳定程度高的链路上的路由,从而保证稳定程度高的链路上路由承载业务的正常运行。

基于第一方面,在第一方面的第一种可行的实施方式中,字段值包括类型长度值tlv字段中的取值value,每当网络中周期同步与该链路关联的链路状态报文时value值增加。进一步限定字段值为取值value,value增加是在网络同步该链路关联的链路状态报文时增加,这样可以方便记录该链路建立的时长,即反映了该链路的稳定程度,从而方便优先计算稳定链路的路由,保证稳定链路的路由承载业务的正常运行。

基于第一方面第一种可行的实施方式,在第一方面的第二种可行的实施方式中,若所述网络中的第一链路为目标路由器与网络首次建立连接,则所述第一链路对应的字段值从0开始累加;

所述目标路由器为网络中的新增路由器,或者所述目标路由器为因故障与所述网络断开后恢复运行的路由器。进一步限定在网络中目标路由器与网络首次建立连接,则该第一链路对应的字段值从0开始累加,即是从该链路开始建立时统计总的建立时长,从而保证在网络中新增路由器时不会导致新扩容的路由先计算存储抢占转发资源,或者也不会过早将流量引到因故障与网络断开后恢复运行的路由器与网络之间的路由,导致丢包。

基于第一方面第一种可行的实施方式,在第一方面的第三种可行的实施方式中,所述方法还包括:

当检测到与所述至少一个邻居路由器中的任意一个目标邻居路由器之间的第二链路故障时,则将所述第二链路对应的字段值归零;

实时检测是否接收到所述目标邻居路由器发送的hello报文;

若接收到,则确定所述第二链路恢复,并将所述第二链路对应的字段值从0开始累加;

当检测到所述第二链路对应的字段值达到预设阈值时,向所述至少一个邻居路由器发布包括所述第二链路状态信息的链路状态报文。进一步限定在与邻居路由器之间的链路断开时,通过字段值来控制该链路状态信息的延迟发布的目的,这样不会过早将流量引入该链路,导致丢包。

基于第一方面第三种可行的实施方式,在第一方面的第四种可行的实施方式中,所述包括所述第二链路状态信息的链路状态报文中包括所述第二链路对应的字段值,所述字段值为所述预设阈值,当所述网络中周期同步所述第二链路的链路状态报文时,所述第二链路对应的字段值以所述预设阈值为基础进行累加。进一步限定在当链路因故障恢复后延迟发布该链路的链路状态信息时,可以继续保持该链路发布之前所对应的字段值,从而保证稳定链路上的路由优先计算存储,同时提高该链路路由的收敛速度。

本发明实施例第二方面提供一种路由计算装置,包括:

接收模块,用于接收至少一个邻居路由器同步的链路状态报文,所述链路状态报文中包括网络中的链路所对应的字段值,所述字段值用于表示该链路的稳定程度;

排序模块,用于根据网络中每条链路的字段值大小,将所有链路进行排序,其中稳定程度高的优先于稳定程度低的;

路由计算模块,用于基于排序后的链路顺序,优先计算并存储稳定程度高的链路上的路由。这种方式通过在链路状态报文中增加一个字段值,用于表示链路的稳定程度,这样通过字段值的大小排序,优先计算稳定程度高的链路上的路由,从而保证稳定程度高的链路上路由承载业务的正在运行。

基于第二方面,在第二方面的第一种可行的实施方式中,所述字段值包括类型长度值tlv字段中的取值value,每当网络中周期同步与所述链路关联的链路状态报文时所述value值增加。进一步限定字段值为取值value,value增加是在网络同步该链路关联的链路状态报文时增加,这样可以方便记录该链路建立的时长,即反映了该链路的稳定程度,从而方便优先计算稳定链路的路由,保证稳定链路的路由承载业务的正常运行。

基于第二方面第一种可行的实施方式,在第二方面的第二种可行的实施方式中,若所述网络中的第一链路为目标路由器与网络首次建立连接,则所述第一链路对应的字段值从0开始累加;

所述目标路由器为网络中的新增路由器,或者所述目标路由器为因故障与所述网络断开后恢复运行的路由器。进一步限定在网络中目标路由器与网络首次建立连接,则该第一链路对应的字段值从0开始累加,即是从该链路开始建立时统计总的建立时长,从而保证在网络中新增路由器时不会导致新扩容的路由先计算存储抢占转发资源,或者也不会过早将流量引到因故障与网络断开后恢复运行的路由器与网络之间的路由,导致丢包。

基于第二方面第一种可行的实施方式,在第二方面的第三种可行的实施方式中,所述装置还包括:

处理模块,用于当检测到与所述至少一个邻居路由器中的任意一个目标邻居路由器之间的第二链路故障时,则将所述第二链路对应的字段值归零;

检测模块,用于实时检测是否接收到所述目标邻居路由器发送的hello报文;

所述处理模块还用于若接收到所述目标邻居路由器发送的hello报文,则确定所述第二链路恢复,并将所述第二链路对应的字段值从0开始累加;

发布模块,用于当检测到所述第二链路对应的字段值达到预设阈值时,向所述至少一个邻居路由器发布包括所述第二链路状态信息的链路状态报文。进一步限定在与邻居路由器之间的链路断开时,通过字段值来控制该链路状态信息的延迟发布的目的,这样不会过早将流量引入该链路,导致丢包。

基于第二方面第三种可行的实施方式,在第二方面的第四种可行的实施方式中,所述包括所述第二链路状态信息的链路状态报文中包括所述第二链路对应的字段值,所述字段值为所述预设阈值,当所述网络中周期同步所述第二链路的链路状态报文时,所述第二链路对应的字段值以所述预设阈值为基础进行累加。进一步限定在当链路因故障恢复后延迟发布该链路的链路状态信息时,可以继续保持该链路发布之前所对应的字段值,从而保证稳定链路上的路由优先计算存储,同时提高该链路路由的收敛速度。

本发明实施例中,接收至少一个邻居路由器同步的链路状态报文,该链路状态报文中包括网络中的链路所对应的字段值,该字段值用于表示该链路的稳定程度,根据网络中每条链路的字段值大小,将所有链路进行排序,其中稳定程度高的优先于稳定程度低的,基于排序后的链路顺序,优先计算并存储稳定程度高的链路上的路由,这种可以使得稳定程度高的链路上的路由抢先占据设备转发资源,保证稳定程度高的链路上路由承载业务的正常运行。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

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

图2是本发明实施例提供的一种路由计算方法的流程示意图;

图3是本发明实施例提供的另一种路由计算方法的流程示意图;

图4是本发明实施例提供的一种trill网络扩容示意图;

图5是本发明实施例提供的一种trill网络链路故障示意图;

图6是本发明实施例提供的一种路由计算装置的结构示意图;

图7是本发明实施例提供的另一种路由计算装置的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例的路由计算装置可以为路由设备或者为路由设备中的一部分,路由设备可以包括路由器,在本发明不作限定。

本发明实施例的应用场景可以是trill网络,也可以是其它的路由协议网络。

下面将结合附图2至附图5,对本发明实施例提供的路由计算方法进行介绍和说明。

请参照图2,是本发明实施例提供的一种路由计算方法的流程示意图;如图2所示,所述路由计算方法包括:

s200,接收至少一个邻居路由器同步的链路状态报文,所述链路状态报文中包括网络中的链路所对应的字段值,所述字段值用于表示该链路的稳定程度;

本发明实施例中,链路状态报文携带链路状态信息,可选的,在开放最短路径优先协议(openshortestpathfitst,ospf)中,链路状态报文可以是链路 状态协议数据单元(linkstatepdus,lsp),也可以是链路状态广播(link-stateadvertisement,lsa)。

在路由网络中,每台路由器都通过使用hello报文与它的邻居路由器之间建立邻接关系,每台路由器周期性的向每个邻居路由器发送链路状态报文(lsa或者lsp等等),每个邻居路由器在收到链路状态报文之后要依次向它的邻居转发这些链路状态报文(泛洪)。同时每台路由器要在自己的lsdb中保存一份它所收到的链路状态报文的备份,所有路由器的lsdb应该相同。

依照lsdb中的网络拓扑图每台路由器使用dijkstra算法,即是最短路径优先(shortestpathfirst,spf)算法计算出到每个路由器的最短路径,并将结果输出到路由表中。需要说明的是,通常是路由器的上层软件协议采用spf算法计算路由表中的各个表项,并下发到路由器的转发资源(底层硬件芯片)中进行存储。

当路由网络发生变化时,例如,网络中新增加路由器,或者网络中的某一条链路故障了,则路由器的lsdb内容会被刷新并触发路由器重新计算路由,在路由器的转发资源不够的情况下,且上层软件协议计算路由和下发无顺序控制,则可能会导致刚up起来的链路(稳定程度不高的链路)先计算下发,抢占了原有的路由转发资源,导致原有的稳定链路的路由所承载的业务中断。

本发明实施例为了解决上述问题,对链路状态报文进行扩展,该链路状态报文中包括网络中的该链路状态报文所表示链路对应的字段值,该字段值可以表示链路的稳定程度。

可选的,上述字段值可以是类型长度值(typelengthvalue,tlv)字段中的取值value,这里以链路状态报文为lsp报文为例进行说明,对lsp报文进行扩展,在报文中增加一个tlv字段。在该字段中value的取值从0到255,随着网络中与该链路关联的lsp周期扩散时依次累加,到255后值不再增长。

需要说明的是,当网络中的某条链路为目标路由器与网络首次建立连接时,则该链路所对应的字段值从0开始累加,例如,目标路由器为网络中的新增路由器,如图4所示,当网络中新增目标路由器rb6时,rb6分别与rb2和rb4建立邻接关系,由于rb6分别与rb2和rb4之间所建立的链路为新建立的链路,因此及其不稳定,在路由收敛过程中,本发明实施例会优先收敛稳定链路上的路由。rb6与rb2之间的链路对应字段值从0开始累加,每当网络中周期 性同步该链路的lsp时,则该链路所对应的字段值加1,直至255不再累加。

同理对于图5所示,目标路由器为因故障与网络断开后恢复运行的路由器,rb1和rb2之间由于故障链路断开,当该链路后续恢复运行时,由于该链路也是极其不稳定的链路,因此该链路所对应的字段值仍然从0开始累加,每当网络中周期性同步该链路的lsp时,则该链路所对应的字段值加1,直至255不再累加,字段值越大则该链路的稳定程度越高。

s201,根据网络中每条链路的字段值大小,将所有链路进行排序,其中稳定程度高的优先于稳定程度低的;

本发明实施例中,路由器的lsdb中存储了网络拓扑图,以及网络中每条链路的字段值,当网络拓扑结构发生变化时,路由器重新计算路由表。在计算路由表中各个路由时,根据网络中每条链路的字段值大小,将所有链路进行排序,该字段值表示了该链路的稳定程度,需要说明的是,排序的顺序为稳定程度高的优先于稳定程度低的。

需要说明的是,通常刚up起来的链路的字段值比较小,而一直稳定的链路的字段值比较大,比如,所有的稳定链路的字段值为255。

s202,基于排序后的链路顺序,优先计算并存储稳定程度高的链路上的路由。

本发明实施例中,基于排序后的链路顺序,路由器的上层软件协议优先计算稳定程度高的链路上(即是排序在最前面的链路上)的路由。需要说明的是,路由的计算方法仍然参照ospf路由协议中的spf算法进行计算。

当路由器的上层软件协议计算了路由后,则下发至路由器的下层转发资源进行存储,优先计算的路由可以优先抢占转发资源进行存储,在路由器的转发资源不足的情况下,稳定链路的路由可以抢占转发资源,因此也不会出现原有稳定链路承载业务的中断。

本发明实施例中,接收至少一个邻居路由器同步的链路状态报文,该链路状态报文中包括网络中的链路所对应的字段值,该字段值用于表示该链路的稳定程度,根据网络中每条链路的字段值大小,将所有链路进行排序,其中稳定程度高的优先于稳定程度低的,基于排序后的链路顺序,优先计算并存储稳定程度高的链路上的路由,这种可以使得稳定程度高的链路上的路由抢先占据设备转发资源,保证稳定程度高的链路上路由承载业务的正常运行。

请参照图3,是本发明实施例提供的另一种路由计算方法的流程示意图;如图3所示,所述路由计算方法包括:

s300,接收至少一个邻居路由器同步的链路状态报文,所述链路状态报文中包括网络中的链路所对应的字段值,所述字段值用于表示该链路的稳定程度;

s301,根据网络中每条链路的字段值大小,将所有链路进行排序,其中稳定程度高的优先于稳定程度低的;

s302,基于排序后的链路顺序,优先计算并存储稳定程度高的链路上的路由。

本发明实施例步骤s300-s302请参照图2的实施例步骤s200-s202,在此不再赘述。

s303,当检测到与所述至少一个邻居路由器中的任意一个目标邻居路由器之间的第二链路故障时,则将所述第二链路对应的字段值归零;

本发明实施例中,路由器与邻居路由器之间建立邻接关系后,通过周期交换链路更新报文(linkstateupstate,lsu)保持邻接关系,当路由器检测到目标邻居路由器未发送lsu时,则确定该路由器与目标路由器之间的第二链路故障,将该第二链路对应的字段值归零。

s304,实时检测是否接收到所述目标邻居路由器发送的hello报文;

本发明实施例中,每台路由器通过使用hello报文与它的邻居路由器之间建立邻接关系,检测是否接收到该目标邻居路由器发送的hello报文。

s305,若接收到,则确定所述第二链路恢复,并将所述第二链路对应的字段值从0开始累加;

本发明实施例中,若接收到目标邻居路由器发送的hello报文,则确定与目标邻居路由器之间的第二链路恢复,当第二链路恢复后,该第二链路对应的字段值重新从0开始按照lsp的同步周期累加。

s306,当检测到所述第二链路对应的字段值达到预设阈值时,向所述至少一个邻居路由器发布包括所述第二链路状态信息的链路状态报文。

本发明实施例中,当检测到该第二链路对应的字段值达到预设阈值,例如,字段值为lsp报文中tlv字段的value值,则预设阈值可以是255,预设阈值可以由用户进行设定。

当检测到该第二链路对应的字段值达到预设阈值时,则向该至少一个邻居路由器发布包括该第二链路状态信息的链路状态报文,这样可以达到故障恢复后的链路路由延迟发布的目的。通常全网出现链路状态变化,lsdb刷新时,路由器都需要重新计算路由,上层软件协议的路由计算到下发至底层转发资源是需要一定时间的,若过早将故障恢复的链路状态信息发布,则会导致过早将流量引到该链路,而该路由器转发资源还未存储该路由表项,从而导致丢包。

所述包括所述第二链路状态信息的链路状态报文中包括所述第二链路对应的字段值,所述字段值为所述预设阈值,当所述网络中周期同步所述第二链路的链路状态报文时,所述第二链路对应的字段值以所述预设阈值为基础进行累加。

本发明实施例中,接收至少一个邻居路由器同步的链路状态报文,该链路状态报文中包括网络中的链路所对应的字段值,该字段值用于表示该链路的稳定程度,根据网络中每条链路的字段值大小,将所有链路进行排序,其中稳定程度高的优先于稳定程度低的,基于排序后的链路顺序,优先计算并存储稳定程度高的链路上的路由,这种可以使得稳定程度高的链路上的路由抢先占据设备转发资源,保证稳定程度高的链路上路由承载业务的正常运行。

下面结合附图6至附图7,阐述本发明实施例提供的路由计算装置的具体实现。

请参照图6,为本发明实施例提供的一种路由计算装置的结构示意图,如图6所示,本实施例所述的一种路由计算装置包括:接收模块100、排序模块101和路由计算模块102。

接收模块100,用于接收至少一个邻居路由器同步的链路状态报文,所述链路状态报文中包括网络中的链路所对应的字段值,所述字段值用于表示该链路的稳定程度;

排序模块101,用于根据网络中每条链路的字段值大小,将所有链路进行排序,其中稳定程度高的优先于稳定程度低的;

路由计算模块102,用于基于排序后的链路顺序,优先计算并存储稳定程度高的链路上的路由。

可选的,如图所示,该路由计算装置还可以包括处理模块103、检测模块 104以及发布模块105;

处理模块103,用于当检测到与所述至少一个邻居路由器中的任意一个目标邻居路由器之间的第二链路故障时,则将所述第二链路对应的字段值归零;

检测模块104,用于实时检测是否接收到所述目标邻居路由器发送的hello报文;

所述处理模块103还用于若接收到所述目标邻居路由器发送的hello报文,则确定所述第二链路恢复,并将所述第二链路对应的字段值从0开始累加;

发布模块105,用于当检测到所述第二链路对应的字段值达到预设阈值时,向所述至少一个邻居路由器发布包括所述第二链路状态信息的链路状态报文。

所述包括所述第二链路状态信息的链路状态报文中包括所述第二链路对应的字段值,所述字段值为所述预设阈值,当所述网络中周期同步所述第二链路的链路状态报文时,所述第二链路对应的字段值以所述预设阈值为基础进行累加。

本发明实施例中,接收至少一个邻居路由器同步的链路状态报文,该链路状态报文中包括网络中的链路所对应的字段值,该字段值用于表示该链路的稳定程度,根据网络中每条链路的字段值大小,将所有链路进行排序,其中稳定程度高的优先于稳定程度低的,基于排序后的链路顺序,优先计算并存储稳定程度高的链路上的路由,这种可以使得稳定程度高的链路上的路由抢先占据设备转发资源,保证稳定程度高的链路上路由承载业务的正常运行。

可以理解的是,上述路由计算装置中各个模块的具体实现方式可以进一步参考方法实施例中的相关描述。

请参照图7,为本发明实施例提供的另一种路由计算装置的结构示意图,如图所示,该路由计算装置20包括处理器201、存储器202、收发器203以及总线204,处理器201、存储器202、收发器203均与总线204连接,存储器202用于存储执行指令,处理器201调用存储器202所存储的执行指令:

所述收发器203,用于接收至少一个邻居路由器同步的链路状态报文,所述链路状态报文中包括网络中的链路所对应的字段值,所述字段值用于表示该链路的稳定程度;

所述处理器201,用于根据网络中每条链路的字段值大小,将所有链路进行 排序,其中稳定程度高的优先于稳定程度低的;

所述处理器201还用于基于排序后的链路顺序,优先计算并存储稳定程度高的链路上的路由。

可选的,上述字段值包括类型长度值tlv字段中的取值value,每当网络中周期同步与所述链路关联的链路状态报文时所述value值增加。

可选的,若所述网络中的第一链路为目标路由器与网络首次建立连接,则所述第一链路对应的字段值从0开始累加;

所述目标路由器为网络中的新增路由器,或者所述目标路由器为因故障与所述网络断开后恢复运行的路由器。

所述处理器201还用于当检测到与所述至少一个邻居路由器中的任意一个目标邻居路由器之间的第二链路故障时,则将所述第二链路对应的字段值归零;

所述处理器201还用于实时检测是否接收到所述目标邻居路由器发送的hello报文;

若接收到,所述处理器201还用于确定所述第二链路恢复,并将所述第二链路对应的字段值从0开始累加;

当检测到所述第二链路对应的字段值达到预设阈值时,所述收发器203还用于向所述至少一个邻居路由器发布包括所述第二链路状态信息的链路状态报文。

可选的,上述包括所述第二链路状态信息的链路状态报文中包括所述第二链路对应的字段值,所述字段值为所述预设阈值,当所述网络中周期同步所述第二链路的链路状态报文时,所述第二链路对应的字段值以所述预设阈值为基础进行累加。

本发明实施例中,接收至少一个邻居路由器同步的链路状态报文,该链路状态报文中包括网络中的链路所对应的字段值,该字段值用于表示该链路的稳定程度,根据网络中每条链路的字段值大小,将所有链路进行排序,其中稳定程度高的优先于稳定程度低的,基于排序后的链路顺序,优先计算并存储稳定程度高的链路上的路由,这种可以使得稳定程度高的链路上的路由抢先占据设备转发资源,保证稳定程度高的链路上路由承载业务的正常运行。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算 机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。

本发明实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。

本发明实施例终端中的模块或单元可以根据实际需要进行合并、划分和删减。

本发明实施例的微控制器等部件,可以以通用集成电路,如cpu,或以专用集成电路(applicationspecificintegratedcircuit,asic)来实现。

以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。

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