一种通信设备及其FIB表生成方法与流程

文档序号:11590032阅读:462来源:国知局
一种通信设备及其FIB表生成方法与流程

本发明涉及网络通信技术领域,尤其涉及一种通信设备及其fib表生成方法。



背景技术:

fib(forwardinginformationbase,转发信息库)表用于指导ip(internetprotocol,互联网协议)报文转发。路由器通过路由表选择路由,把优选路由下发到fib表中,进而,路由器可以通过fib表指导ip报文转发。其中,fib表中每条转发表项都指明了要到达某子网或某主机的报文的下一跳ip地址以及出接口。

fib表通常指向单个下一跳,但当存在多条目的地址相同且开销相同的路由,且该多条路由的优先级均相同时,该多条路由会被以ecmp(equal-costmultipath,等价路径)的形式下发到fib表中。在该情况下,fib表会指向多个下一跳。

在进行fib表生成时,会在fec(forwardingequivalencyclass,转发等价类)资源池中预留专门的fec资源(本文中称为ecmp对应的fec资源)用于指向多个下一跳的fib表的生成。当ecmp资源不足或ecmp对应的fec资源不足时,指向多个下一跳的fib表将会生成失败。



技术实现要素:

本发明的目的在于提供一种通信设备及其fib表生成方法,以避免在ecmp资源不足或/和ecmp对应的fec资源不足时,指向多个下一跳的fib表生成失败。

为实现上述目的,本发明提供一种fib表生成方法,包括:

当需要生成目标fib表,且所述目标fib表指向多个下一跳时,判断是否存在可用的等价路径ecmp资源以及可用的ecmp对应的fec资源;

若存在可用的ecmp资源以及可用的ecmp对应的fec资源,则生成所述目标fib表并同步到转发芯片;

若不存在可用的ecmp资源或/和可用的ecmp对应的fec资源,则从所述多个下一跳中选择一个或多个目标下一跳,并分别生成指向各目标下一跳的fib表并同步到转发芯片;其中,目标下一跳的数量小于等于所述多个下一跳的数量。

为实现上述目的,本发明还提供一种通信设备,该通信设备具有转发信息库fib表生成装置,该转发信息库fib表生成装置可集成于该通信设备的中央处理单元,fib表生成装置,包括:

判断模块,用于当需要生成目标fib表,且所述目标fib表指向多个下一跳时,判断是否存在可用的等价路径ecmp资源以及可用的ecmp对应的转发等价类fec资源;

生成模块,用于若存在可用的ecmp资源以及可用的ecmp对应的fec资源,则生成所述目标fib表并同步到转发芯片;

降级处理模块,用于若不存在可用的ecmp资源或/和可用的ecmp对应的fec资源,则从所述多个下一跳中选择一个或多个目标下一跳;其中,目标下一跳的数量小于等于所述多个下一跳的数量;

所述生成模块,还用于分别生成指向各目标下一跳的fib表并同步到转发芯片。

应用本发明实施例,当需要生成目标fib表,且所述目标fib表指向多个下一跳时,判断是否存在可用的ecmp资源以及可用的ecmp对应的fec资源,若存在可用的ecmp资源以及可用的ecmp对应的fec资源,则生成所述目标fib表并同步到转发芯片;若不存在可用的ecmp资源或/和可用的ecmp对应的fec资源,则从多个下一跳中选择一个或多个目标下一跳,并分别生成指向各目标下一跳的fib表并同步到转发芯片,通过在系统资源不足于生成指向多个下一跳的fib表时,将该指向多个下一跳的fib表降级为指向单个下一跳的fib表进行生成,提高fib表生成成功的概率,减少由于fib表生成失败导致的流量中断的情况发生。

附图说明

图1是本发明实施例提供的一种fib表生成方法的流程示意图;

图2是本发明实施例提供的一种fib表生成装置的结构示意图;

图3是本发明实施例提供的另一种fib表生成装置的结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明实施例中技术方案作进一步详细的说明。

请参见图1,为本发明实施例提供的一种fib表生成方法的流程示意图,如图1所示,该方法可以包括以下步骤:

需要说明的是,步骤101~步骤102的执行主体可以为交换机或路由器等网络通信设备的中央处理单元,为便于描述,以下以步骤101~步骤104的执行主体为路由器的中央处理单元为例进行说明。

步骤101、当需要生成目标fib表,且目标fib表指向多个下一跳时,判断是否存在可用的ecmp资源以及可用的ecmp对应的fec资源;若是,转至步骤102;否则,转至步骤103。

本发明实施例中,目标fib表并不特指某一固定的fib表,而是可以指代路由器需要生成的任一fib表,本发明后续不再复述。

本发明实施例中,当路由器需要生成目标fib表时,路由器可以先确定目标fib表是指向单个下一跳,还是指向多个下一跳。

当目标fib表指向多个下一跳时,路由器需要先判断是否存在可用的ecmp资源以及可用的ecmp对应的fec资源,以确定是否能够生成该指向多个下一跳的目标fib表。

值得说明的是,在本发明实施例中,fec为一种表项名称,fec表项的内容为出端口、出vlan(virtuallocalareanetwork,虚拟局域网)、mac(mediaaccesscontrol,媒体访问控制)地址(包括源mac地址和目的mac地址)等信息。

此外,是否存在可用的资源是指是否存在足够多的空闲的资源,以ecmp资源为例,判断是否存在可用的ecmp资源是指判断是否存在空闲的ecmp资源,以及空闲的ecmp资源是否足以用于指向多个下一跳的fib表的生成,若存在空闲的ecmp资源,且该空闲的ecmp资源足以用于指向多个下一跳的fib表的生成,则确定存在可用ecmp资源;若不存在空闲的ecmp资源,或者,存在空闲的ecmp资源,但该空闲的ecmp资源不足于用于指向多个下一跳的fib表的生成,则确定不存在可用ecmp资源,其它资源同理可知,本发明实施例后续不再复述。

步骤102、生成该目标fib表并同步到转发芯片。

本发明实施例中,当路由器确定存在可用的ecmp资源以及可用的ecmp对应的fec资源时,路由器可以直接生成该目标fib表(指向多个下一跳)并同步到转发芯片,确定目标fib表生成成功。

步骤103、从多个下一跳中选择一个或多个目标下一跳,并分别生成指向各目标下一跳的fib表并同步到转发芯片;其中,目标下一跳的数量小于等于该多个下一跳的数量。

本发明实施例中,当路由器确定不存在可用的ecmp资源或/和可用的ecmp对应的fec资源时,路由器可以确定当前无法成功生成指向多个下一跳的目标fib表。

本发明实施例中,考虑到fib表生成失败时,会导致fib流量不通,进而会影响相关业务正常运行,因此,当路由器确定当前无法生成指向多个下一跳的fib表时,路由器并不会直接确定fib表生成失败,而是可以先尝试对该指向多个下一跳的fib进行降级生成,即将指向多个下一跳的fib表转换为指向单个下一跳的fib表的形式,并尝试生成指向单个下一跳的fib表。

相应地,在本发明实施例中,当路由器确定不存在可用的ecmp资源或/和可用的ecmp对应的fec资源时,路由器可以从该目标fib表指向的多个下一跳中选择一个或多个作为目标下一跳,并将该指向多个下一跳的目标fib表降级为一个或多个指向目标下一跳的fib表。

其中,由于通过目标fib表指向的多个下一跳中的任一下一跳,均能将流量转发到相同的目的地址,因此,将指向多个下一跳的目标fib表降级为指向单个下一跳的fib表并不会影响相关流量的可达性。

作为一种可选的实施方式,在本发明实施例中,从多个下一跳中选择一个或多个目标下一跳,可以包括:

随机从多个下一跳中选择一个或多个目标下一跳;或,

按照对应的带宽从高到低的顺序从多个下一跳中选择一个或多个下一跳为目标下一跳;或,

按照对应的链路带宽占用率从低到高的顺序从多个下一跳中选择一个或多个下一跳为目标下一跳。

在该实施方式中,由于通过目标fib表指向的多个下一跳均能保证相关流量到达相同的目的地址,因此,路由器在选择目标下一跳时,可以随机从目标fib表指向的多个下一跳中选择一个或多个作为目标下一跳。

或者,在该实施方式中,为了保证实际可用路径的带宽,路由器在从目标fib表指向的多个下一跳中选择目标下一跳时,可以按照各下一跳对应的带宽从高到低的顺序,选择该多个下一跳中对应的带宽较高的前一个或多个下一跳为目标下一跳。

或者,在该实施方式中,为了均衡链路占用率,路由器在从目标fib表指向的多个下一跳中选择目标下一跳时,可以按照对应的链路带宽占用率从低到高的顺序,选择该多个下一跳中对应的链路带宽占用率较低的前一个或多个下一跳为目标下一跳。

应该认识到,上述列举的从目标fib表指向的多个下一跳中选择目标下一跳的方式仅仅是本发明实施例中选择目标下一跳的实现的几种具体实例,而并不是对本发明保护范围的限定,在本发明实施例的基础上,本领域技术人员在未付出创造性的前提下,对上述目标下一跳的选择方式的调整或变型均应属于本发明保护范围。

本发明实施例中,路由器将指向多个下一跳的目标fib表降级为指向目标下一跳的fib表之后,可以分别生成指向各目标下一跳的fib表。

在一实施例中,上述分别生成指向各目标下一跳的fib表,可以包括以下步骤:

11)、对于指向任一目标下一跳的fib表,判断fec资源池中是否存在可用fec资源;

12)、若存在,则生成指向该目标下一跳的fib表;

13)、否则,确定指向该目标下一跳的fib表生成失败。

需要说明的是,在本发明实施例中,本文中提及的fec资源池中的fec资源特指专门用于ecmp的fec资源(即上述ecmp对应的fec资源)之外的fec资源,即不包括并不包括上述ecmp对应的fec资源,本发明后续不再复述。

在该实施例中,路由器将指向多个下一跳的目标fib表降级为指向目标下一跳的fib表后,路由器需要按照生成指向单个下一跳的fib表的方式生成该指向目标下一跳的fib表,即路由器需要判断fec资源池中是否存在可用fec资源,若存在,则生成该指向目标下一跳的fib表。

在该实施例中,当fec资源池中不存在可用fec资源时,指向目标下一跳的fib表将生成失败。

其中,当上述一个或多个指向目标下一跳的fib表均生成失败时,即指向多个下一跳的目标fib降级后仍无法成功生成时,路由器可以确定目标fib表生成失败。

值得说明的是,在本发明实施例中,考虑到fec资源池中的fec资源通常会比较充足,因此,当需要对指向多个下一跳的目标fib表进行降级处理时,可以优选地将该目标fib表指向的多个下一跳均确定为目标下一跳,并分别生成指向各目标下一跳的fib表,当需要进行流量转发时,对于目标fib表对应的流量,可以依次选择指向各目标下一跳的fib表指导转发,从而,在保证流量可达的同时,能尽量实现负载分担。

举例来说,假设目标fib表分别指向下一跳1、下一跳2,则当指向多个下一跳的目标fib表生成不成功时,可以分别生成指向下一跳1的fib表1以及指向下一跳2的fib表1,当需要进行流量转发时,对于目标fib表对应的流量,可以依次选择fib表1和fib表2指导转发,即依次通过下一跳1和下一跳2转发目标fib表对应的流量。

可见,在图1所示的方法流程中,通过在生成指向多个下一跳的目标fib表,且不存在可用的ecmp资源或/和ecmp对应的fec资源时,将该指向多个下一跳的目标fib表降级为指向单个下一跳的fib表进行生成,尽量保证fib表生成成功,避免了fib表生成失败导致的流量不通。

值得说明的是,在本发明实施例中,当路由器需要生成fib表,且该fib表为指向单个下一跳的fib表时,路由器可以判断fec资源池中是否存在可用fec资源,并当存在可用fec资源时,生成该指向单个下一跳的fib表并同步到转发芯片,并确定fib表生成成功;当不存在可用fec资源时,确定fib表生成失败。

进一步地,作为一种可选的实施方式,在本发明实施例中,当需要生成指向多个下一跳的目标fib,且不存在可用的ecmp资源或/和可用的ecmp对应的fec资源时,还可以包括:

记录目标fib表降级的原因;

当目标fib表降级的原因为不存在可用的ecmp资源,则当重新存在可用的ecmp资源时,重新生成目标fib表;

若目标fib表降级的原因为不存在可用的ecmp对应的fec资源,则当重新存在可用的ecmp对应的fec资源时,重新生成目标fib表;

若目标fib表降级的原因不存在可用的ecmp资源以及可用的ecmp对应的fec资源,则当重新存在可用的ecmp资源以及可用的ecmp对应的fec资源时,重新生成目标fib表。

在该实施方式中,当路由器需要生成指向多个下一跳的目标fib表,且不存在可用的ecmp资源或/和可用的ecmp对应的fec资源时,即路由器确定需要对目标fib表降级生成时,路由器可以记录目标fib表降级的原因,其中,目标fib降级的原因可以包括:不存在可用的ecmp资源、不存在可用的ecmp对应的fec资源或不存在可用的ecmp资源以及可用的ecmp对应的fec资源。

在该实施方式中,路由器可以根据自身记录的目标fib表降级的原因,在确定相应资源恢复后,重新生成目标fib表。

例如,当目标fib表降级的原因为不存在可用的ecmp资源时,路由器可以在重新存在可用的ecmp资源时,重新进行目标fib表生成,即重新生成指向多个下一跳的目标fib表。

在该实施方式中,当重新进行目标fib表生成时,若目标fib表生成成功,则路由器在目标fib表生成成功时,可以删除上述生成的指向目标下一跳的fib表;若目标fib表生成仍不成功,则路由器可以保持上述指向目标下一跳的fib表,并记录此次生成不成功的原因,并根据该生成不成功的原因确定触发目标fib表重新生成的时机,其具体实现在此不做赘述。

值得说明的是,在本发明实施例中,为了避免fib表重刷过程中发生丢包,当路由器重新确定存在可用的ecmp资源以及可用的ecmp对应的fec资源用于生成指向多个下一跳的目标fib表时,路由器可以将上述生成成功的指向单个目标下一跳的fib表修改为指向上述多个下一跳的fib表,并覆盖上述生成成功的指向多个目标下一跳的fib表;其中,上述目标下一跳包括多个时,路由器只需对其中任一指向单个目标下一跳的fib表进行上述修改即可,且修改后可以用修改后的指向上述多个下一跳的fib表覆盖所有指向目标下一跳的fib表。

进一步地,在本发明实施例中,考虑到现有fib表生成方案中,当fib表由于资源不足而生成失败时,路由器会进行定时重刷,即定时判断相关资源是否充足,若充足,则fib表生成成功,否则,继续进行重刷,当路由器较长时间内持续资源不足时,路由器将会反复进行重刷,进而耗费大量的cpu(centerprocessunit,中央处理单元)等资源。

为了解决上述问题,避免资源浪费,在本发明实施例中,当发生fib表生成失败时(包括指向单个下一跳的fib表生成失败或指向多个下一跳的fib表降级后生成失败等情况),路由器可以记录fib表生成失败的原因(fib资源池中不存在可用fec资源),并根据该fib表生成失败的原因确定触发重刷的时机,以减少重刷次数。

相应地,本发明实施例提供的fib表生成方案还可以包括:

当需要生成目标fib表,且fec资源池中不存在可用fec资源时,确定目标fib表生成失败,并记录目标fib表生成失败的原因为fec资源池中不存在可用fec资源;

当fec资源池中重新存在可用fec资源时,重新生成目标fib表。

具体地,在本发明实施例中,由于对于指向多个下一跳的fib表,当由于不存在ecmp资源或/和ecmp对应的fec资源而无法成功生成时,路由器会将该指向多个下一跳的fib表降级为指向单个下一跳的fib表进行生成,因此,只有当fec资源池中不存在可用fec资源时,才会发生fib表生成失败。

相应地,在本发明实施例中,当目标fib表由于fec资源池中不存在可用fec资源而生成失败时(包括目标fib表为指向单个下一跳的fib表或目标fib表由指向多个下一跳的fib表降级为指向单个下一跳的fib表的情况),路由器可以记录目标fib表生成失败的原因为fec资源池中不存在可用fec资源。

此时,路由器不会进行定时重刷,而是会等到fec资源池中重新存在fec资源时,再重新进行目标fib表生成,实现精确重刷,减少重刷次数,避免在fec资源池中持续不存在可用fec资源时,定时重刷导致的cpu等资源浪费。

为了使本领域技术人员更好地理解本发明实施例提供的技术方案,下面结合具体实例对本发明实施例提供的技术方案进行描述。

在该实施例中,以目标fib表为指向三个下一跳(假设分别为下一跳a,下一跳b和下一跳c)为例。

在该实施例中,当路由器需要生成目标fib表时,由于目标fib表指向多个下一跳,因此,路由器可以先判断是否存在可用ecmp资源,并当存在可用ecmp资源时,进一步判断是否存在可用ecmp对应的fec资源。

若存在可用ecmp资源以及可用ecmp对应的fec资源,则路由器可以生成该指向多个下一跳的目标fib表并同步到转发芯片,该指向多个下一跳的目标fib表生成成功。

若不存在可用ecmp资源,则路由器可以从目标fib表指向的多个下一跳中选择一个为目标下一跳(假设目标下一跳为下一跳a),将目标fib表降级为指向下一跳a的fib表,并记录目标fib表降级的原因为不存在可用ecmp资源。

若不存在可用ecmp对应的fec资源,则路由器可以从目标fib表指向的多个下一跳中选择一个为目标下一跳(假设目标下一跳为下一跳a),将目标fib表降级为指向下一跳a的fib表,并记录目标fib表降级的原因为不存在可用ecmp对应的fec资源。

路由器将目标fib表降级为指向下一跳a的fib表之后,可以判断fec资源池中是否存在可用fec资源。

当fec资源池中存在可用fec资源时,生成该指向下一跳a的fib表并同步到转发芯片,fib表生成成功之后,路由器可以在重新存在可用ecmp资源时(目标fib表降级原因为不存在可用ecmp资源)或重新存在可用ecmp对应的fec资源时(目标fib表降级原因为不存在可用ecmp对应的fec资源),将指向下一跳a的fib表修改为指向下一跳a、下一跳b和下一跳c的fib表,并用该fib表覆盖指向下一跳a的fib表。

当fec资源池中不存在可用fec资源时,路由器可以确定fib表生成失败,并记录fib表生成失败原因为fec资源池中不存在可用fec资源,并当fec资源池中重新存在可用fec资源时,重新生成目标fib表。

通过以上描述可以看出,在本发明实施例中,当需要生成目标fib表,且所述目标fib表指向多个下一跳时,判断是否存在可用的ecmp资源以及可用的ecmp对应的fec资源,若存在可用的ecmp资源以及可用的ecmp对应的fec资源,则生成所述目标fib表并同步到转发芯片;若不存在可用的ecmp资源或/和可用的ecmp对应的fec资源,则从多个下一跳中选择一个或多个目标下一跳,并分别生成指向各目标下一跳的fib表并同步到转发芯片,通过在系统资源不足于生成指向多个下一跳的fib表时,将该指向多个下一跳的fib表降级为指向单个下一跳的fib表进行生成,提高fib表生成成功的概率,减少由于fib表生成失败导致的流量中断的情况发生。

请参见图2,为本发明实施例提供的一种fib表生成装置,该装置可集成于通信设备的中央处理单元。其中,该装置可以由应用于上述方法实施例中的网络通信设备的中央处理单元执行,如图2所示,该装置可以包括:

判断模块210,用于当需要生成目标fib表,且所述目标fib表指向多个下一跳时,判断是否存在可用的等价路径ecmp资源以及可用的ecmp对应的fec资源;

生成模块220,用于若存在可用的ecmp资源以及可用的ecmp对应的fec资源,则生成所述目标fib表并同步到转发芯片;

降级处理模块230,用于若不存在可用的ecmp资源或/和可用的ecmp对应的fec资源,则从所述多个下一跳中选择一个或多个目标下一跳;其中,目标下一跳的数量小于等于所述多个下一跳的数量;

所述生成模块220,还用于分别生成指向各目标下一跳的fib表并同步到转发芯片。

在可选实施例中,所述降级处理模块230,还用于记录所述目标fib表降级的原因;

所述生成模块220,还用于若所述目标fib表降级的原因为不存在可用的ecmp资源,则当重新存在可用的ecmp资源时,重新生成所述目标fib表;若所述目标fib表降级的原因为不存在可用的ecmp对应的fec资源,则当重新存在可用的ecmp对应的fec资源时,重新生成所述目标fib表;若所述目标fib表降级的原因为不存在可用的ecmp资源以及可用的ecmp对应的fec资源,则当重新存在可用的ecmp资源以及可用的ecmp对应的fec资源时,重新生成所述目标fib表。

在可选实施例中,所述降级处理模块230,具体用于随机从所述多个下一跳中选择一个或多个目标下一跳;或,按照对应的带宽从高到低的顺序从所述多个下一跳选择一个或多个下一跳为目标下一跳;或,按照对应的链路带宽占用率从低到高的顺序从所述多个下一跳选择一个或多个下一跳为目标下一跳。

在可选实施例中,所述判断模块210,还用于对于指向任一目标下一跳的fib表,判断fec资源池中是否存在可用fec资源;

所述生成模块220,还用于若fec资源池中存在可用fec资源,则生成所述指向该目标下一跳的fib表;否则,确定指向该目标下一跳的fib表生成失败。

请一并参见图3,为本发明实施例提供的另一种fib表生成装置的结构示意图,如图3所示,在图2所示fib表生成装置的基础上,图3所示的fib表生成装置还可以包括:

记录模块240,用于当需要生成目标fib表,且fec资源池中不存在可用fec资源时,记录所述目标fib表生成失败的原因为fec资源池中不存在可用fec资源;

所述生成模块220,还用于当所述fec资源池中重新存在可用fec资源时,重新生成所述目标fib表。

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

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

由上述实施例可见,当需要生成目标fib表,且所述目标fib表指向多个下一跳时,判断是否存在可用的ecmp资源以及可用的ecmp对应的fec资源,若存在可用的ecmp资源以及可用的ecmp对应的fec资源,则生成所述目标fib表并同步到转发芯片;若不存在可用的ecmp资源或/和可用的ecmp对应的fec资源,则从多个下一跳中选择一个或多个目标下一跳,并分别生成指向各目标下一跳的fib表并同步到转发芯片,通过在系统资源不足于生成指向多个下一跳的fib表时,将该指向多个下一跳的fib表降级为指向单个下一跳的fib表进行生成,提高fib表生成成功的概率,减少由于fib表生成失败导致的流量中断的情况发生。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。

应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。

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