发明内容
本发明提供一种等价路由的收敛方法和网络设备,以减少等价转发路径切换时间,实现等价转发路径的快速切换收敛。
为了达到上述目的,本发明提供一种等价路由的收敛方法,包括:
网络设备在转发信息表中维护目的标识组与等价多路径ECMP组的对应关系,在所述对应关系中,一个ECMP组对应于具有相同等价转发路径的至少一个目的标识,且所述ECMP组内具有所述等价转发路径的信息;
所述网络设备对所述ECMP组内的各条等价转发路径进行故障检测;
如果检测到有等价转发路径出现故障,则所述网络设备在所述ECMP组中设置该等价转发路径为无效转发路径。
所述维护目的标识组与等价多路径ECMP组的对应关系,具体包括:
所述网络设备获得待维护的目的标识对应的至少两条等价转发路径;
如果当前不存在记录所述至少两条等价转发路径的ECMP组,则所述网络设备建立ECMP组,在所述ECMP组内记录所述至少两条等价转发路径的信息,并建立所述目的标识与所述ECMP组的对应关系;或者,
如果当前存在记录所述至少两条等价转发路径的ECMP组,则所述网络设备在所述ECMP组对应的目的标识组中增加所述目的标识。
所述维护目的标识组与等价多路径ECMP组的对应关系,进一步包括:
在当前不存在记录所述至少两条等价转发路径的ECMP组时,所述网络设备为建立的ECMP组分配ECMP组ID,并将该ECMP组以及其分配的ECMP组ID下发到转发信息表;以及,将所述目的标识以及该ECMP组分配的ECMP组ID下发到转发信息表;并通过ECMP组ID在转发信息表中维护所述目的标识与所述ECMP组的对应关系;或者,
在当前存在记录所述至少两条等价转发路径的ECMP组时,所述网络设备获得该ECMP组分配的ECMP组ID,并将所述目的标识以及该ECMP组分配的ECMP组ID下发到转发信息表;以及,根据ECMP组ID,在转发信息表所维护的所述ECMP组ID对应的目的标识组中增加所述目的标识。
所述网络设备在所述ECMP组中设置该等价转发路径为无效转发路径,具体包括:
所述网络设备确定出现故障的等价转发路径对应的ECMP组所分配的ECMP组ID,并将该出现故障的等价转发路径以及所述ECMP组ID下发到转发信息表;以及,在所述转发信息表中将所述ECMP组ID对应的ECMP组中的该出现故障的等价转发路径设置为无效转发路径。
所述网络设备对所述ECMP组内的各条等价转发路径进行故障检测,包括:
所述网络设备为所述ECMP组内的每条等价转发路径分配唯一的双向转发检测BFD会话,并通过BFD会话对所述BFD会话对应的等价转发路径进行故障检测;在利用所述BFD会话检测到故障后,查找所述BFD会话对应的等价转发路径,并确定该查找到的等价转发路径出现故障;或者,
所述网络设备获得所述ECMP组内的每条等价转发路径对应的接口状态信息,当等价转发路径对应的接口状态信息为DOWN状态时,则确定该等价转发路径出现故障;否则,确定该等价转发路径没有出现故障。
BFD会话的源地址是所述BFD会话对应的等价转发路径的出接口IP地址,或者,是所述网络设备的环路口地址;且BFD会话的目的地址是所述BFD会话对应的等价转发路径的出接口IP地址,或者,是所述网络设备的环路口地址。
本发明提供一种网络设备,包括:
对应关系存储模块,用于在转发信息表中维护目的标识组与等价多路径ECMP组的对应关系,在所述对应关系中,一个ECMP组对应于具有相同等价转发路径的至少一个目的标识,且所述ECMP组内具有所述等价转发路径的信息;
故障检测模块,用于对所述对应关系存储模块中存储的所述ECMP组内的各条等价转发路径进行故障检测;
对应关系更新模块,用于在所述故障检测模块对所述ECMP组内的各条等价转发路径进行故障检测时,如果检测到有等价转发路径出现故障,则在所述对应关系存储模块存储的所述ECMP组中设置该等价转发路径为无效转发路径。
所述对应关系存储模块,具体用于获得待维护的目的标识对应的至少两条等价转发路径;
如果当前不存在记录所述至少两条等价转发路径的ECMP组,则建立ECMP组,在所述ECMP组内记录所述至少两条等价转发路径的信息,并建立所述目的标识与所述ECMP组的对应关系;或者,
如果当前存在记录所述至少两条等价转发路径的ECMP组,则在所述ECMP组对应的目的标识组中增加所述目的标识。
所述对应关系存储模块,进一步用于在当前不存在记录所述至少两条等价转发路径的ECMP组时,为建立的ECMP组分配ECMP组ID,并将该ECMP组以及其分配的ECMP组ID下发到转发信息表;以及,将所述目的标识以及该ECMP组分配的ECMP组ID下发到转发信息表;并通过ECMP组ID在转发信息表中维护所述目的标识与所述ECMP组的对应关系;或者,
在当前存在记录所述至少两条等价转发路径的ECMP组时,获得该ECMP组分配的ECMP组ID,并将所述目的标识以及该ECMP组分配的ECMP组ID下发到转发信息表;以及,根据ECMP组ID,在转发信息表所维护的所述ECMP组ID对应的目的标识组中增加所述目的标识。
所述对应关系更新模块,具体用于确定出现故障的等价转发路径对应的ECMP组所分配的ECMP组ID,并将该出现故障的等价转发路径以及所述ECMP组ID下发到转发信息表;以及,在所述转发信息表中将所述ECMP组ID对应的ECMP组中的该出现故障的等价转发路径设置为无效转发路径。
所述故障检测模块,具体用于为所述ECMP组内的每条等价转发路径分配唯一的双向转发检测BFD会话,并通过BFD会话对所述BFD会话对应的等价转发路径进行故障检测;在利用所述BFD会话检测到故障后,查找所述BFD会话对应的等价转发路径,并确定该查找到的等价转发路径出现故障;或者,
获得所述ECMP组内的每条等价转发路径对应的接口状态信息,当等价转发路径对应的接口状态信息为DOWN状态时,则确定该等价转发路径出现故障;否则,确定该等价转发路径没有出现故障。
BFD会话的源地址是所述BFD会话对应的等价转发路径的出接口IP地址,或者,是所述数据传输设备的环路口地址;且BFD会话的目的地址是所述BFD会话对应的等价转发路径的出接口IP地址,或者,是所述数据传输设备的环路口地址。
与现有技术相比,本发明至少具有以下优点:本发明中,通过维护目的标识(如目的地址)组与ECMP(EqualCostMulti-Path,等价多路径)组的对应关系,并对ECMP组内各等价转发路径进行故障检测,从而实现链路故障的快速检测,且等价转发路径的切换时间与目的标识的数量无关,继而实现等价转发路径的快速切换。
具体实施方式
本发明提出一种等价路由的收敛方法,以图1为本发明实施例的一种应用场景示意图,该方法可以应用于包括网络设备(即被测试设备DUT)和TestCenter的网络系统中,且在该网络设备上需要维护有目的标识(如目的地址、目的设备的设备标识、目的MAC地址等;为方便描述,后续以目的地址(如IPv4地址加掩码或者IPv6地址加掩码)为例进行说明;基于不同的路由协议,网络设备可以在建立邻居的过程中获知目的地址的相关信息;或者在静态配置路由时获知目的地址的相关信息)组与ECMP组的对应关系。
需要注意的是,在目的地址组与ECMP组的对应关系中,目的地址组内可以包含有至少一个目的地址,且一个ECMP组对应于具有相同等价转发路径的至少一个目的地址,且该ECMP组内具有该等价转发路径的信息。
本发明实施例中,目的地址可以为TestCenter模拟的目的地址,且ECMP组内具有该目的地址对应的多条等价转发路径(如该目的地址对应的所有等价转发路径,其至少为两条等价转发路径)的信息;此外,对于TestCenter模拟的多个目的地址,由于该多个目的地址可能对应相同的等价转发路径,因此上述对应关系具体为:多个目的地址与一个ECMP组的对应关系,且该ECMP组内将记录有该多个目的地址同时对应的至少两条等价转发路径。
假设TestCenter模拟的目的地址为目的地址1、目的地址2和目的地址3,且目的地址1、目的地址2和目的地址3对应于相同的两条等价转发路径(如图1中的转发路径2和转发路径3),因此可以设置目的地址1、目的地址2和目的地址3与ECMP组的对应关系,且ECMP组内具有目的地址1、目的地址2和目的地址3对应的等价转发路径的信息(如转发路径2的相关信息以及转发路径3的相关信息),如图2所示,为本发明实施例中维护的一种目的地址组与ECMP组的对应关系的示意图。
为了在网络设备上维护目的地址组与ECMP组的对应关系,则一种具体的实现方式中,针对某一待维护的目的地址,网络设备获得该待维护的目的地址对应的多条等价转发路径;如果当前不存在记录该多条等价转发路径的ECMP组,则网络设备建立ECMP组,在该ECMP组内记录多条等价转发路径的信息,并建立该目的地址与ECMP组的对应关系;或者,如果当前存在记录多条等价转发路径的ECMP组,则网络设备直接在该ECMP组对应的目的地址组中增加该目的地址,从而维护该目的地址与ECMP组的对应关系,当然,如果目的地址组中已经存在有该目的地址,此时则不需要执行任何动作。
以上述应用场景为例,则针对目的地址1,网络设备获得目的地址1对应的等价转发路径为转发路径2和转发路径3,当前不存在记录转发路径2和转发路径3的ECMP组,因此网络设备建立ECMP组1,并在ECMP组1内记录转发路径2和转发路径3的信息,以及建立目的地址1与该ECMP组1的对应关系;针对目的地址2,网络设备获得目的地址2对应的等价转发路径为转发路径2和转发路径3,当前存在记录转发路径2和转发路径3的ECMP组1,因此网络设备可直接维护目的地址2与该ECMP组1的对应关系,在ECMP组1所对应的目的地址中增加目的地址2即可;针对目的地址3,网络设备获得目的地址3对应的等价转发路径为转发路径2和转发路径3,当前存在记录转发路径2和转发路径3的ECMP组1,因此网络设备可直接维护目的地址3与该ECMP组1的对应关系。
需要注意的是,当前用于指导进行数据转发的转发信息表通常为软件转发表或硬件转发表,因此需要在软件转发表或硬件转发表中维护目的地址组与ECMP组的对应关系,且ECMP组和目的地址可以分别独立的下发到软件转发表或硬件转发表中;为此,本发明中可以通过如下方式实现:
针对当前不存在记录多条等价转发路径的ECMP组的情况,网络设备在建立ECMP组之后,需要为建立的ECMP组分配ECMP组ID(每个ECMP组对应的ECMP组ID具有唯一性),并将该ECMP组以及其分配的ECMP组ID下发到转发信息表(如软件转发表或硬件转发表等,后续以软件转发表或硬件转发表为例进行说明);以及,将目的地址以及该ECMP组分配的ECMP组ID下发到软件转发表或硬件转发表;并通过ECMP组ID在软件转发表或硬件转发表中维护目的地址与ECMP组的对应关系;
针对当前存在记录多条等价转发路径的ECMP组的情况,如果目的地址组中已经存在有该目的地址,此时则不需要执行任何动作;如果目的地址组中不存在该目的地址,则网络设备直接获得该目的地址对应的ECMP组所分配的ECMP组ID,并将该目的地址以及该ECMP组分配的ECMP组ID下发到软件转发表或硬件转发表;以及,根据ECMP组ID,在软件转发表或硬件转发表所维护的该ECMP组ID对应的目的标识组中增加该待维护的目的标识。
以上述应用场景为例,则针对目的地址1,网络设备获得目的地址1对应的等价转发路径为转发路径2和转发路径3,当前不存在记录转发路径2和转发路径3的ECMP组,因此网络设备需要建立ECMP组(该ECMP组内记录转发路径2和转发路径3的信息),为建立的ECMP组分配ECMP组ID(如ECMP组1),并将记录转发路径2和转发路径3的信息的ECMP组以及ECMP组ID下发到软件转发表或硬件转发表;以及,将目的地址1以及该ECMP组ID下发到软件转发表或硬件转发表;之后,在软件转发表或硬件转发表中,通过关联ECMP组ID,可以在软件转发表或硬件转发表中维护目的地址1与该ECMP组1(记录有转发路径2和转发路径3的信息)的对应关系;
针对目的地址2,网络设备获得目的地址2对应的等价转发路径为转发路径2和转发路径3,当前存在记录转发路径2和转发路径3的ECMP组,因此网络设备需要直接获得目的地址2对应的ECMP组所分配的ECMP组ID(即ECMP组1),并将目的地址2以及该ECMP组ID下发到软件转发表或硬件转发表;之后,在软件转发表或硬件转发表中,通过关联ECMP组ID,可以在软件转发表或硬件转发表中维护目的地址2与该ECMP组1的对应关系;
针对目的地址3,网络设备获得目的地址3对应的等价转发路径为转发路径2和转发路径3,当前存在记录转发路径2和转发路径3的ECMP组,因此网络设备需要直接获得目的地址3对应的ECMP组所分配的ECMP组ID(即ECMP组1),并将目的地址3以及该ECMP组ID下发到软件转发表或硬件转发表;之后,在软件转发表或硬件转发表中,通过关联ECMP组ID,可以在软件转发表或硬件转发表中维护目的地址3与该ECMP组1的对应关系。
本发明中,基于维护的目的地址组与ECMP组的对应关系,则如图3所示,该等价路由的收敛方法包括以下步骤:
步骤301,网络设备对ECMP组内的各条等价转发路径进行故障检测。
步骤302,如果检测到有等价转发路径出现故障,则网络设备在该ECMP组中设置该等价转发路径为无效转发路径。
本发明中,网络设备需要对ECMP组内的各条等价转发路径进行故障检测(在实际应用中,网络设备可以实时的对各条等价转发路径进行故障检测,或者根据预设周期对各条等价转发路径进行故障检测,或者基于事件触发对各条等价转发路径进行故障检测),且在对ECMP组内的各条等价转发路径进行故障检测时,如果检测到有等价转发路径出现故障,则网络设备需要设置该等价转发路径为无效转发路径(如为该等价转发路径设置标识0,用于表示该等价转发路径为无效转发路径,且无效转发路径不能用于数据的传输)。
本发明的一种优选实施方式中,可以利用BFD(BidirectionalForwardingDetection,双向转发检测)会话或者接口状态信息实现对ECMP组内的各条等价转发路径进行故障检测;当然具体实现中并不局限于此,所有用于进行链路状态检测的方式均在本发明的保护范围之内,如通过ARP(AddressResolutionProtocol,地址解析协议)对等价转发路径进行故障检测等;以下只对BFD会话或者接口状态信息的情况进行详细说明,其他方式不再赘述。
在通过BFD会话实现对ECMP组内的各条等价转发路径进行故障检测的过程中,网络设备为ECMP组内的每条等价转发路径分配唯一的BFD会话(如BFDecho报文,该BFDEcho报文提供了一种不依赖于BFD控制报文的故障检测方式,由网络设备本端进行发送,并由网络设备本端进行接收,远端不对该BFDecho报文进行处理,而只是将此BFDecho报文在反向通道上返回给网络设备),并通过BFD会话对该BFD会话对应的等价转发路径进行故障检测;而且在利用BFD会话检测到故障后,查找该BFD会话对应的等价转发路径,并确定该查找到的等价转发路径出现故障。
例如,网络设备为ECMP组内的等价转发路径1关联BFD会话1,并为等价转发路径2关联BFD会话2,则网络设备通过BFD会话1对等价转发路径1进行故障检测,如果通过BFD会话1检测到故障(如对于网络设备发送的BFDecho报文,网络设备本身并没有接收到),则通过查找BFD会话1对应的等价转发路径,可确定等价转发路径1出现故障。
需要注意的是,BFD会话的源地址是BFD会话对应的等价转发路径的出接口IP地址,或者,是网络设备的环路口地址;且BFD会话的目的地址是BFD会话对应的等价转发路径的出接口IP地址,或者,是网络设备的环路口地址。当然,BFD会话的源地址和目的地址并不局限于此,对于网络设备上的地址,只要保证对端设备有到该地址的转发路径,并且保证BFD会话可以通过该地址的转发路径被发送至该网络设备即可。
在通过接口状态信息实现对ECMP组内的各条等价转发路径进行故障检测的过程中,网络设备获得ECMP组内的每条等价转发路径对应的接口状态信息(如接口处于DOWN状态或者UP状态),当等价转发路径对应的接口状态信息为DOWN状态时,则确定该等价转发路径出现故障;否则(如接口状态信息为UP状态),确定该等价转发路径没有出现故障。
本发明中,步骤302中,网络设备在该ECMP组中设置该等价转发路径为无效转发路径,具体包括:网络设备确定出现故障的等价转发路径对应的ECMP组所分配的ECMP组ID,并将该出现故障的等价转发路径以及ECMP组ID下发到软件转发表或硬件转发表;以及,在软件转发表或硬件转发表中将ECMP组ID对应的目的地址与ECMP组的对应关系中的该出现故障的等价转发路径设置为无效转发路径。
综上所述,针对通过硬件转发表指导进行数据转发的应用场景,对于目的地址组与ECMP组的对应关系,需要将该目的地址组与ECMP组的对应关系同步到所有接口板;且在将等价转发路径设置为无效转发路径之后,还需要在ECMP组内更新该信息,并将更新后的ECMP组同步到所有接口板,从而实现等价转发路径的快速切换。
通过采用上述方案,可以获知等价转发路径的快速切换时间为:检测故障时间+ECMP组更新时间;因此等价转发路径的快速切换时间与模拟的目的地址数量无关,可以实现等价转发路径的快速切换。
基于上述目的地址组与ECMP组的对应关系,或者,设置有无效转发路径的目的地址与ECMP组的对应关系,则该方法还可以包括以下步骤:
步骤A,网络设备在接收到数据后,利用目的地址组与ECMP组的对应关系确定该数据的目的地址所对应的ECMP组。
以图1为例,则TestCenter会模拟多个目的地址,并通过转发路径1发送各目的地址的数据;且网络设备将从Port4收到数据,并利用该数据中的目的地址确定其对应的ECMP组。如网络设备利用目的地址1确定其对应的ECMP组、利用目的地址2确定其对应的ECMP组、利用目的地址3确定其对应的ECMP组,且目的地址1、目的地址2、目的地址3对应于同一ECMP组。
步骤B,网络设备通过ECMP组内未被设置为无效转发路径的等价转发路径的信息发送数据。其中,由于目的地址组与ECMP组的对应关系同步到所有接口板,因此接口板可以直接利用等价转发路径的信息发送数据。
对于ECMP组内的各等价转发路径,如果有未被设置为无效转发路径的等价转发路径,则利用该等价转发路径的信息进行数据传输;如网络设备可利用转发路径2的相关信息(如出接口5以及接口2的IP地址)以及转发路径3的相关信息(如出接口6以及接口3的IP地址)将数据传输给TestCenter。
基于与上述方法同样的发明构思,本发明还提出了一种基于网络设备,如图4所示,该网络设备包括:
对应关系存储模块11,用于在转发信息表中维护目的标识组与等价多路径ECMP组的对应关系,在所述对应关系中,一个ECMP组对应于具有相同等价转发路径的至少一个目的标识,且所述ECMP组内具有所述等价转发路径的信息;
故障检测模块12,用于对所述对应关系存储模块11中存储的所述ECMP组内的各条等价转发路径进行故障检测;
对应关系更新模块13,用于在所述故障检测模块12对所述ECMP组内的各条等价转发路径进行故障检测时,如果检测到有等价转发路径出现故障,则在所述对应关系存储模块11存储的所述ECMP组中设置该等价转发路径为无效转发路径。
所述对应关系存储模块11,具体用于获得待维护的目的标识对应的至少两条等价转发路径;如果当前不存在记录所述至少两条等价转发路径的ECMP组,则建立ECMP组,在所述ECMP组内记录所述至少两条等价转发路径的信息,并建立所述目的标识与所述ECMP组的对应关系;或者,如果当前存在记录所述至少两条等价转发路径的ECMP组,则在所述ECMP组对应的目的标识组中增加所述目的标识。
所述对应关系存储模块11,进一步用于在当前不存在记录所述至少两条等价转发路径的ECMP组时,为建立的ECMP组分配ECMP组ID,并将该ECMP组以及其分配的ECMP组ID下发到转发信息表;以及,将所述目的标识以及该ECMP组分配的ECMP组ID下发到转发信息表;并通过ECMP组ID在转发信息表中维护所述目的标识与所述ECMP组的对应关系;或者,在当前存在记录所述至少两条等价转发路径的ECMP组时,获得该ECMP组分配的ECMP组ID,并将所述目的标识以及该ECMP组分配的ECMP组ID下发到转发信息表;以及,根据ECMP组ID,在转发信息表所维护的所述ECMP组ID对应的目的标识组中增加所述目的标识。
所述对应关系更新模块13,具体用于确定出现故障的等价转发路径对应的ECMP组所分配的ECMP组ID,并将该出现故障的等价转发路径以及所述ECMP组ID下发到转发信息表;以及,在所述转发信息表中将所述ECMP组ID对应的ECMP组中的该出现故障的等价转发路径设置为无效转发路径。
所述故障检测模块12,具体用于为所述ECMP组内的每条等价转发路径分配唯一的双向转发检测BFD会话,并通过BFD会话对所述BFD会话对应的等价转发路径进行故障检测;在利用所述BFD会话检测到故障后,查找所述BFD会话对应的等价转发路径,并确定该查找到的等价转发路径出现故障;或者,获得所述ECMP组内的每条等价转发路径对应的接口状态信息,当等价转发路径对应的接口状态信息为DOWN状态时,则确定该等价转发路径出现故障;否则,确定该等价转发路径没有出现故障。
本发明中,BFD会话的源地址是所述BFD会话对应的等价转发路径的出接口IP地址,或者,是所述数据传输设备的环路口地址;且BFD会话的目的地址是所述BFD会话对应的等价转发路径的出接口IP地址,或者,是所述数据传输设备的环路口地址。
其中,本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明序号仅仅为了描述,不代表实施例的优劣。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。