发明内容
本发明提供一种路由迭代方法及路由交换设备,用于实现在路由器的主备用主控板切换时提高BGP路由的收敛速度。
本发明提供的主备切换时的路由迭代方法,包括:
本发明提供的路由迭代方法,应用于包含有主用主控板和备用主控板的路由交换设备,该方法包括:
路由交换设备的主用主控板对迭代路由进行路由迭代成功后,将迭代结果向其它邻居路由交换设备扩散以及下发到本地路由表,提取迭代路由的下一跳信息与转发信息间的迭代依赖关系信息,并将其备份到备用主控板;
当所述备用主控板切换为主用主控板后接收到其它路由交换设备发送来的边界网关协议BGP路由时,所述备用主控板根据主备用状态切换前从主用主控板备份的迭代依赖关系信息对该BGP路由进行路由迭代,并在迭代成功后下发到本地路由表。
本发明提供的路由交换设备,包括线卡板以及主用状态和备用状态的主控板,所述主控板包括:
路由迭代模块,用于在主控板为主用状态时,对迭代路由进行路由迭代;其中,在备用状态的主控板切换为主用状态后接收到其它路由交换设备发送来的BGP路由时,根据主备用状态切换前从主用主控板备份得到的迭代依赖关系信息对该BGP路由进行路由迭代;
路由发布模块,用于在所述路由迭代模块迭代成功后,将迭代结果向其它邻居路由交换设备扩散以及下发到本路由交换设备线卡板的路由表;
依赖关系备份模块,用于在所述路由迭代模块迭代成功后,提取迭代路由的下一跳信息与转发信息间的迭代依赖关系信息,并将其备份到备用状态的主控板。
与现有技术相比,本发明具有如下技术效果:
本发明在具有主备用主控板的路由器进行路由迭代时,在备用主控板上记录路由迭代过程中的依赖路由,当主备用主控板切换时,备用主控板可根据之前记录的依赖路由进行路由迭代,而不必等到IGP路由收敛后才开始路由迭代,从而提高了BGP路由的收敛速度。
具体实施方式
本发明实施例应用于具有主控板和线卡板的路由器或三层交换机,其中,主控板上配置有RIB表,用于路由表项管理,线卡板上配置有FIB表,用于报文转发。主控板可包括主用主控板和备用主控板,备用主控板可以是一个或多个。在正常情况下,主用主控板处于工作状态(或称主用状态),备用主控板处于备用状态,路由器中的故障检测功能可实时检测主备用主控板,当检测到主用主控板故障时,将备用主控板切换为工作状态,以代替发生故障的主控板工作。
图1示出了一种路由器的结构,其中包括:主控板1、主控板2,线卡板1~n,主控板1为主用状态,主控板2为备用状态。主控板1和2上配置有RIB表,线卡板1~n上配置有FIB表。
在主用主控板状态正常的情况下,当路由器接收到BGP路由后,由于BGP路由的下一跳地址不能直接可达,从而触发对该BGP路由的路由迭代过程。在现有技术中,路由迭代过程由当前主用状态的主控板根据其上配置的IGP路由进行,并在得到迭代结果后,将该BGP路由和迭代结果配置到各线卡板的FIB路由表中,以便当线卡板接收到报文后,根据该FIB表指导报文转发。
当主用主控板故障时,备用主控板切换为主用状态,当切换为主用状态的主控板接收到其它路由器发送来的BGP路由后,需要等待IGP路由收敛后才能根据IGP路由进行对BGP路由进行迭代,导致BGP路由收敛速度较慢。
针对该问题,本发明实施例在主用主控板进行路由迭代过程中,将迭代到的依赖路由备份到备用主控板上,这样,当备用主控板切换为主用状态时,可根据切换前所备份的依赖路由对接收到的BGP路由进行路由迭代,而无需等待IGP路由收敛。
下面结合图1所示的路由器结构,对本发明实施例的实现过程进行详细描述。
参见图2,为本发明实施例提供的路由迭代流程示意图,该流程可包括:
步骤201,路由器接收到其它路由器发送来的BGP路由后,主控板1启动路由迭代过程。
根据BGP协议,BGP协议邻居建立后,会定期向邻居发送路由,以实现路由同步。当BPG路由器收到从邻居发送过来的路由后,如其中包含有下一跳不能直接可达的BGP路由,则会触发路由迭代。本流程中,触发路由迭代后,当前为主用状态的主控板1根据其上配置的RIB表中的IGP路由执行路由迭代过程,在该过程中,主控板1根据BGP路由的下一跳地址找到依赖路由,从而得到该路由直接可达的下一跳,该路由迭代过程可采用现有技术,在此不再赘述。
步骤202,主控板1在迭代成功后,一方面,继续往邻居路由器扩散、下发本地转发表(如下发给线卡1~n的FIB表中),以指导报文转发,另一方面,提取迭代依赖关系,并将提取到的迭代依赖关系保存到主控板2的RIB表项中。
这里的迭代依赖关系是指路由的下一跳信息与它所对应的转发信息的对应关系。其中,下一跳信息是指路由的下一跳、下一跳类型、下一跳策略等信息的集合,转发信息包括路由的出接口、隧道等信息。依赖关系中的转发信息一般来自于IGP路由或标签协议创建的标签转发路径。
步骤203,当主控板1故障或因其它原因不再是主用状态时,主控板2切换为主用状态。
根据BGP协议,当主控板进行主备用状态切换时,BGP协议从邻居重新学习路由。
步骤204,当主控板2接收到对端路由器发送来的BGP路由后,根据其在备用状态时从主控板1备份得到的迭代依赖关系对BGP路由进行路由迭代,并在迭代完成后下发本地路由表(如下发给线卡1~n的FIB表中),以及进一步向其它路由交换设备进行扩散。
例如,以下路由RT1是BGP路由,路由RT2是OSPF(OpenShortestPathFirst,开放式最短路径优先)路由:
RT1(BGP):1.2.3.4/3210.1.1.1
RT2(OSPF):10.1.1.0/24eth020.1.1.1
主控板1在对RT1进行迭代时,将RT1迭代到RT2,产生迭代依赖关系:
10.1.1.1--->10.1.1.0/24eth020.1.1.1
主控板1将该迭代依赖关系备份到主控板2的RIB表中。
当主控板2切换为主用状态时,如果此时学习到BGP路由1.1.1.1/3210.1.1.1,则可以根据之前保存的迭代依赖关系,直接得到路由1.1.1.1/32的出接口和下一跳,而不用再到RIB表中查询。
本步骤中优选的,在根据迭代依赖关系进行路由迭代之后还需要进行优选,然后根据优选结果下发本地路由表。这里的优选操作可包括:对于具有相同目的地址、掩码的多条路由,根据路由属性,如weight、local_preference等,进行路由优选。
如后续BGP路由的迭代依赖关系发生了变化(如BGP路由所依赖的路由前缀发生了变化,如路由前缀等价路由数目变化、出接口变化等),则主控板1还可以实时将变化后的迭代依赖关系同步给主控板2。
通过以上流程可以看出,主控板2在切换为主用状态后所进行的路由迭代过程中依据的是在切换前从主控板1备份来的迭代依赖关系,而与IGP协议、标签协议等都没有关联,从而加快了BGP路由的收敛。一般情况下,路由器故障及恢复的过程中,网络的拓扑信息不会变化,即迭代依赖关系不会变化,因此完成上述处理后,BGP路由收敛就已经完成。
特殊情况下,如果故障前后迭代依赖关系发生了变化,则主控板2在感知到该变化后,可及时删除迭代依赖关系,等IGP路由稳定后,重新进行路由迭代以及优选过程,完成BGP路由收敛,以保证最终结果不会出错。具体的,依赖的IGP路由重新下到主控板1的RIB后,主控板1将变化的IGP路由前缀告知主控板2,以触发主控板2的BGP路由重新迭代。例如:
故障前RIB中存在路由:
RT1(BGP):1.2.3.4/3210.1.1.1
RT2(OSPF):10.1.1.0/24eth020.1.1.1RT1迭代到RT2。
故障后,RT2的出接口、下一跳发生了变化,变成:
RT2(OSPF):10.1.1.0/24eth130.1.1.1
故障倒换后,等RT2重新下到RIB后,RIB会重新上报给BGP,BGP重新进行迭代和优选,完成路由收敛。
基于相同的技术构思,本发明实施例还提供了一种路由交换设备,可应用于上述流程。
如图3所示,该路由器可包括:线卡板以及主用状态和备用状态的主控板,线卡板上配置有FIB表,主控板上配置了RIB表。其中,主控板可包括:
路由迭代模块301,用于在主控板为主用状态时,对迭代路由进行路由迭代,具体可依据该主控板上的RIB表中的路由进行迭代;其中,在备用状态的主控板切换为主用状态后接收到其它路由交换设备发送来的BGP路由时,根据主备用状态切换前从主用主控板备份得到的迭代依赖关系信息对该BGP路由进行路由迭代;
路由发布模块302,用于在路由迭代模块301迭代成功后,将迭代结果向其它邻居路由交换设备扩散以及下发到本路由交换设备线卡板的路由表(如FIB);
依赖关系备份模块303,用于在路由迭代模块301迭代成功后,提取迭代路由的下一跳信息与转发信息间的迭代依赖关系信息,并将其备份到备用状态的主控板,具体可备份到备用状态主控板的RIB中。其中,所述下一跳信息可包括路由的下一跳、下一跳类型、下一跳策略之一或任意组合;所述转发信息可包括路由的出接口标识或隧道标识。
进一步的,依赖关系备份模块303还用于:在主控板为主用状态时,在迭代依赖关系信息变化后,将变化后的迭代依赖关系信息发送给备用主控板进行更新。
进一步的,路由迭代模块301还用于:在主控板切换为主用状态后,接收到前缀发生变化的IGP路由时,删除相应迭代依赖关系,并在IGP路由收敛后根据IGP路由进行路由迭代;所述前缀发生变化的路由为迭代路由的依赖路由。
综上所述,本发明实施例通过提取路由下一跳信息与转发信息间的依赖关系,并提供备份功能,在网络设备故障时加快BGP路由的收敛速度、加速网络稳定。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端设备(可以是手机,个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。