CN103078804B - 等价多路径表处理方法、装置及网络设备 - Google Patents
等价多路径表处理方法、装置及网络设备 Download PDFInfo
- Publication number
- CN103078804B CN103078804B CN201210583390.0A CN201210583390A CN103078804B CN 103078804 B CN103078804 B CN 103078804B CN 201210583390 A CN201210583390 A CN 201210583390A CN 103078804 B CN103078804 B CN 103078804B
- Authority
- CN
- China
- Prior art keywords
- down hop
- ecmp
- index
- list item
- filled
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Stored Programmes (AREA)
Abstract
本发明提供一种等价多路径表处理方法、装置及网络设备。方法包括:确定ECMP表对应的下一跳中有下一跳被剔出,其中,ECMP表所包含的表项的总数大于ECMP表对应的下一跳的总数,ECMP表中的每个表项均填充有ECMP表对应的下一跳的索引;按照预设的填充策略,用ECMP表对应的下一跳中未被剔出的下一跳的索引,更新ECMP表中填充有被剔出的下一跳的索引的表项。采用本发明技术方案可以解决链路故障导致TCP传输路径变化的问题,提高CDN网络的可靠性。
Description
技术领域
本发明涉及通信技术,尤其涉及一种等价多路径表处理方法、装置及网络设备。
背景技术
图1为现有内容分发网络(Content Delivery Network,简称为CDN)的一种拓扑结构示意图。如图1所示,CDN中一些性能较好的服务器组成Linux虚拟服务器(Linux Virtual Server,简称为LVS)集群,整个LVS集群对外以一个公网网际协议(Internet Protocol,简称为IP)地址呈现,LVS集群中的每个服务器都有自己的实际IP地址,LVS集群中的服务器可称为LVS服务器。对于图1所示的网络拓扑,通过路由协议的运算,可以得到LVS集群中每个LVS服务器都会构成一条到达LVS集群的公网IP地址的路径,所以在交换机上到达LVS集群的公网IP地址的路由是一条等价多路径(Equal-Cost Multipath Routing,简称为ECMP)路由。
CDN和LVS的工作原理为:当用户需要浏览某网站时,可以通过所使用的终端设备通过域名系统(Domain Name System,简称为DNS)服务器,将传输控制协议(Transmission Control Protocol,简称为TCP)请求报文转发至CDN节点;CDN节点将TCP请求报文转发至CDN网络中的交换机,交换机根据TCP请求报文自身相关的特征,例如TCP请求报文的IP地址等,通过哈希(hash)运算从ECMP路由中选择一条路径进行转发,即TCP请求报文到达LVS集群中的某一LVS服务器,该LVS服务器通过网络地址转换(Network Address Translation,简称为NAT)和CDN网络中各服务器的实际负载情况,将TCP请求报文转发给CDN网络中可以处理该TCP请求报文的服务器,称为目标服务器;目标服务器在接收到TCP请求报文后,进行相关处理,将回应报文发送给对应的LVS服务器,由LVS服务器进行NAT,之后发送给用户的终端设备。
在上述过程中,交换机通过哈希运算从ECMP路由中选择转发路径的方法比较简单,通常为采用循环冗余校验(Cyclical Redundancy Check,简称为CRC)来计算哈希值,然后将哈希值和ECMP表中存储的下一跳的索引的个数进行取模运算,得出数据流的实际出口;其中,ECMP表中存储的下一跳的索引的个数也就是ECMP路由对应的下一跳的个数。但是,由于服务器和交换机存在故障的可能,服务器可能宕机,服务器和交换机之间的物理链路可能损坏,所以当其中一条链路发生故障时,交换机需要将该条链路对应的下一跳剔出,即将ECMP表该条链路对应的下一跳的索引删除,这样ECMP表所存储的下一跳的索引的个数就会减少,交换机需要基于减少后的下一跳的索引的个数重新为各条数据流选择转发路径。其中,重新选择的转发路径可能与之前选择并使用的转发路径不同,这样对于那些通过未发生故障的链路进行传输的数据流,交换机会将该数据流转发给不同于之前的另一LVS服务器,由于LVS服务器之间无法同步NAT信息,接收到该数据流的另一LVS服务器会将该数据流视为一条新的TCP连接,但由于该数据流并非TCP请求报文,故会将该数据流丢弃,造成用户的连接中断,业务中断,降低了CDN网络的可靠性。
发明内容
本发明提供一种等价多路径表处理方法、装置及网络设备,用以解决链路故障导致TCP传输路径变化的问题,提高CDN网络的可靠性。
第一方面提供一种等价多路径ECMP表处理方法,包括:
确定ECMP表对应的下一跳中有下一跳被剔出,其中,所述ECMP表所包含的表项的总数大于所述ECMP表对应的下一跳的总数,所述ECMP表中的每个表项均填充有所述ECMP表对应的下一跳的索引;
按照预设的填充策略,用所述ECMP表对应的下一跳中未被剔出的下一跳的索引,更新所述ECMP表中填充有所述被剔出的下一跳的索引的表项。
第二方面提供一种等价多路径ECMP表处理装置,包括:
第一确定模块,用于确定ECMP表对应的下一跳中有下一跳被剔出,其中,所述ECMP表所包含的表项的总数大于所述ECMP表对应的下一跳的总数,所述ECMP表中的每个表项均填充有所述ECMP表对应的下一跳的索引;
第一更新模块,用于按照预设的填充策略,用所述ECMP表对应的下一跳中未被剔出的下一跳的索引,更新所述ECMP表中填充有所述被剔出的下一跳的索引的表项。
第三方面提供一种网络设备,包括第二方面提供的任一等价多路径ECMP表处理装置。
本发明提供的等价多路径表处理方法、装置及网络设备,通过对ECMP表进行扩展,使得ECMP表包含的表项的总数大于ECMP表对应的下一跳的总数,然后将ECMP表中的每个表项都填充上ECMP表对应的下一跳的索引,这样当确定ECMP表对应的下一跳中有下一跳被剔出时,例如可能是由于链路故障导致该链路对应的下一跳被剔出,则可以按照预设的填充策略,用ECMP表对应的下一跳中剩余的未被剔出的下一跳的索引更新ECMP表中填充有所述被剔出的下一跳的索引的各表项,从而,即使ECMP表对应的下一跳的总数减少了,但ECMP表包含的填充有下一跳索引的表项的总数不变进而保持ECMP表所存储的有效下一跳的索引总数不变,这样对于那些通过未发生故障的链路进行传输的数据流,在通过哈希运算从ECMP路由中重新为其选择的转发路径与之前的转发路径相同,这些数据流不会发生中断,提高了CDN网络的可靠性。
附图说明
图1为现有CDN的一种拓扑结构示意图;
图2为本发明实施例提供的一种ECMP表处理方法的流程图;
图3-图7为本发明实施例提供的以循环填充策略对ECMP表进行处理过程中LPM路由表、ECMP表以及下一跳表的各种状态示意图;
图8-图12为本发明实施例提供的以链路间负载均衡的权重比例对ECMP表进行处理过程中ECMP表的各种状态示意图;
图13为本发明实施例提供的一种ECMP表处理装置的结构示意图;
图14为本发明实施例提供的另一种ECMP表处理装置的结构示意图。
具体实施方式
图2为本发明实施例提供的一种ECMP表处理方法的流程图。如图2所示,本实施例的方法包括:
步骤201、确定ECMP表对应的下一跳中有下一跳被剔出。
在本实施例中,所述ECMP表所包含的表项的总数大于所述ECMP表对应的下一跳的总数,所述ECMP表中的每个表项均填充有所述ECMP表对应的下一跳的索引。具体的,在本实施例中,ECMP表处理装置在为ECMP路由创建ECMP表时,不是按照当前ECMP表对应的实际下一跳的个数申请ECMP表资源,而是申请了比实际下一跳所需的更多的资源,例如可以按照硬件允许最大值创建ECMP表。这里所述的资源主要是指ECMP表所包含的表项。其中,ECMP表对应的每个下一跳对应一条链路,也对应一个实际的转发出口。ECMP表用于存储ECMP表对应的下一跳的索引。
在此说明,本实施例的ECMP表所包含的表项的总数大于ECMP表对应的下一跳的总数,但不限于此,对于ECMP表所包含的表项的总数等于ECMP表对应的下一跳的总数的情况同样适用于本发明。
创建ECMP表之后,ECMP表处理装置对ECMP表进行初始化,即在ECMP表的每个表项中填充ECMP路由对应的下一跳的索引。其中,由于ECMP表所包含的表项的总数大于ECMP表对应的下一跳的总数,故ECMP路由对应的下一跳的索引需要重复填充才能将ECMP表填充满。
其中,ECMP表处理装置对ECMP表进行初始化的一种可选的实施方式包括:ECMP表处理装置可以按照预设的填充策略,在ECMP表的每个表项中,填充所述ECMP表对应的下一跳的索引。
本实施例所述的填充策略可以是循环填充的策略,可以是按照下一跳对应的链路间负载均衡的权重比例的策略,还可以是按照下一跳对应链路的可用负载能力的策略,等等。下面对ECMP表处理装置按照预设的填充策略,在ECMP表的每个表项中,填充ECMP表对应的下一跳的索引的可选实施方式进行说明。
一种可选实施方式为:ECMP表处理装置按照循环填充的策略,将ECMP表对应的每个下一跳的索引循环填充到所述ECMP表的表项中。举例说明,假设ECMP表一共对应三个下一跳,三个下一跳的索引分别为a、b和c,而ECMP表所包含的表项的总数为9,则ECMP表处理装置按照循环填充的策略,将ECMP表对应的每个下一跳的索引循环填充到ECMP表中的一种结果如表1所示,但不限于表1所示。
表1
ECMP表 |
a |
b |
c |
a |
b |
c |
a |
b |
c |
另一种可选实施方式为:ECMP表处理装置按照下一跳对应的链路间负载均衡的权重比例,确定ECMP表对应的每个下一跳的索引在所述ECMP表中的第一填充次数,根据所述第一填充次数将ECMP表对应的每个下一跳的索引填充到所述ECMP表的表项中。这里所述的第一填充次数实际上是指根据下一跳对应的链路间负载均衡的权重比例,确定出的ECMP表对应的每个下一跳的索引在所述ECMP表中的填充次数,为便于区分各个填充次数,在各个填充次数前面分别冠以“第一”、“第二”等字样。举例说明,假设ECMP表一共对应三个下一跳,三个下一跳的索引分别为a、b和c,而ECMP表所包含的表项的总数为12,ECMP表对应的每个下一跳对应的链路间负载均衡的权重比例为1:2:1,则ECMP表处理装置按照下一跳对应的链路间负载均衡的权重比例,确定三个下一跳的索引在ECMP表中的填充次数分别为3、6和3,然后按照确定出的填充次数将ECMP表对应的每个下一跳的索引填充到所述ECMP表的表项中,一种填充结果如表2所示,但不限于表2所示。
表2
ECMP表 |
a |
b |
b |
c |
a |
b |
b |
c |
a |
b |
b |
c |
又一种可选实施方式为:ECMP表处理装置按照下一跳对应链路的可用负载能力,确定ECMP表对应的每个下一跳的索引在所述ECMP表中的第三填充次数,根据所述第三填充次数将ECMP表对应的每个下一跳的索引填充到所述ECMP表的表项中。其中,下一跳对应链路的可用负载能力越大,ECMP表中填充该下一跳的索引的表项的数量就越多。链路对应的可用负载能力主要是指该链路当前所能承载负载的多少。举例说明,假设ECMP表一共对应三个下一跳,三个下一跳的索引分别为a、b和c,而ECMP表所包含的表项的总数为12,ECMP表对应的下一跳对应链路的可用负载能力由小到大依次是a、b、c,则ECMP表处理装置按照下一跳对应链路的可用负载能力,确定三个下一跳的索引在ECMP表中的填充次数分别为3、3和6,然后按照确定的填充次数将ECMP表对应的每个下一跳的索引填充到所述ECMP表的表项中,一种填充结果如表3所示,但不限于表3所示。
表3
ECMP表 |
a |
b |
c |
c |
a |
b |
c |
c |
a |
b |
c |
c |
可选的,ECMP表处理装置除了创建ECMP表并对ECMP表进行初始化之外,还会监测ECMP表对应的下一跳的变化情况。例如,ECMP表处理装置可以通过各种方式监测ECMP表对应的下一跳中是否有下一跳被剔出。所述下一跳被剔出是指该下一跳变为无效。例如,ECMP表处理装置可以周期性的对ECMP链路进行监测,具体的可以通过监测每条链路在一定时间内是否有报文收发,以监测该链路是否发生故障;如果监测到某条链路在一定时间内没有报文收发,则确定该条链路故障。当监测到某条链路故障时,ECMP表处理装置确定该条链路对应的下一跳变为无效,于是将该条链路对应的下一跳从ECMP表对应的下一跳中剔出,所谓剔出主要是指通过各种方式使ECMP表中有关该下一跳的索引变为无效,例如可以将ECMP表中填充该下一跳的索引的表项标记为无效,或者还可以将ECMP表中有关该下一跳的索引删除等,进一步,所谓剔出还需要使相关下一跳表中该下一跳信息失效,例如可以将下一跳表中该下一跳信息标记为无效,或者可以将下一跳表中该下一跳信息删除。
步骤202、按照预设的填充策略,用所述ECMP表对应的下一跳中未被剔出的下一跳的索引,更新所述ECMP表中填充有所述被剔出的下一跳的索引的表项。
其中,因为有下一跳被剔出,故ECMP表处理装置需要重新为已经存在的各条数据流重新选择转发路径,为了保证重新为通过其他未被剔出的下一跳对应的链路进行传输的数据流选择出的转发路径保持不变,本实施例用ECMP表对应的下一跳中未被剔出的下一跳的索引,更新所述ECMP表中填充有所述被剔出的下一跳的索引的表项,具体是用ECMP表对应的下一跳中未被剔出的下一跳的索引,重新填充ECMP表中填充有所述被剔出的下一跳的索引的表项,从而保证ECMP表中存储的有效的下一跳的索引的总数保持不变,这样就可以保证通过未被剔出的下一跳对应的链路传输的数据流仍然通过该链路进行传输,不需要中断该数据流的传输,有利于提高CDN网络的可靠性。
在此说明,对于通过被剔出的下一跳对应的链路传输的数据流,其传输将被分配到未被剔出的下一跳对应的链路上进行传输。其中,根据预设的填充策略的不同,通过被剔出的下一跳对应的链路传输的数据流可能被分配到一个或多个其他未被剔出的下一跳对应的链路上进行传输,具有负载均衡的效果;其中,根据所使用的填充策略的不同,所达到的负载均衡的效果也会有所不同。
其中,步骤202的一种可选实施方式包括:
步骤2021、将所述ECMP表中填充有所述被剔出的下一跳的索引的表项标记为无效。
ECMP表处理装置在确定ECMP表对应的下一跳中有下一跳被剔出时,将ECMP表中填充有该被剔出的下一跳的索引的表项标记为无效,这样在使用该ECMP表为数据流选择转发路径时,就不会考虑该被剔出的下一跳对应的链路。
步骤2022、按照预设的填充策略,在所述ECMP表中被标记为无效的表项中,填充所述ECMP表对应的下一跳中未被剔出的下一跳的索引,并取消所述标记。
在本实施例方式中,因为有下一跳被剔出,故ECMP表处理装置需要重新为已经存在的各条数据流重新选择转发路径,为了保证重新为通过其他未被剔出的下一跳对应的链路进行传输的数据流选择出的转发路径保持不变,在将ECMP表中填充有被剔出的下一跳的索引的表项标记为无效之后,ECMP表处理装置按照预设的填充策略,在ECMP表中被标记为无效的表项中,填充未被剔出的下一跳的索引,从而保证ECMP表中存储的有效的下一跳的索引的总数保持不变,这样就可以保证通过未被剔出的下一跳对应的链路传输的数据流仍然通过该链路进行传输,不需要中断该数据流的传输,有利于提高CDN网络的可靠性。
在此说明,ECMP表处理装置对ECMP表进行初始化使用的填充策略,与有下一跳被剔出时进行更新使用的填充策略可以相同。
与上述初始化过程中使用的填充策略相适应,则步骤2022的一种可选实施方式包括:ECMP表处理装置按照循环填充的策略,用所述ECMP表对应的下一跳中未被剔出的下一跳的索引,更新所述ECMP表中填充有所述被剔出的下一跳的索引的表项。例如,ECMP表处理装置可以将ECMP表中填充有所述被剔出的下一跳的索引的表项标记为无效,然后按照循环填充的策略,将ECMP表对应的下一跳中未被剔出的下一跳的索引循环填充到所述ECMP表中被标记为无效的表项中,并取消用于标识该表项无效的标记。在此说明,在从未被剔出的下一跳中选取进行填充时,因为被剔出的下一跳的索引的数量不一定是未被剔出的下一跳个数的整数倍,因此,如果每次进行循环填充时都从第一个未被剔出的下一跳开始进行填充,有可能使得填充不均匀。为了使得用未被剔出的下一跳的索引对被剔出的下一跳的索引占据的表项的填充更加均匀,ECMP表处理装置可以记录下每次填充到的未被剔出的下一跳的位置,比如当前这次填充过程中最后填充的下一跳的索引是c,那么在下一次填充过程中则从索引为c的下一跳之后的下一跳,例如是索引为d的下一跳开始填充,而不是从索引为a的下一跳开始。
步骤2022的另一种可选实施方式包括:ECMP表处理装置按照下一跳对应的链路间负载均衡的权重比例,确定ECMP表对应的下一跳中未被剔出的下一跳的索引,在所述ECMP表中填充有所述被剔出的下一跳的索引的表项中的第二填充次数,根据所述第二填充次数,用所述ECMP表对应的下一跳中未被剔出的下一跳的索引更新所述ECMP表中填充有所述被剔出的下一跳的索引的表项。例如,ECMP表处理装置可以将ECMP表中填充有所述被剔出的下一跳的索引的表项标记为无效,然后按照下一跳对应的链路间负载均衡的权重比例,确定ECMP表对应的下一跳中每个未被剔出的下一跳的索引,在所述ECMP表中填充有所述被剔出的下一跳的索引的表项中的第二填充次数,根据所述第二填充次数将ECMP表对应的下一跳中每个未被剔出的下一跳的索引填充到所述ECMP表中被标记为无效的表项中,并取消用于标识该表项无效的标记。
步骤2022的又一种可选实施方式包括:ECMP表处理装置按照下一跳对应链路的可用负载能力,确定ECMP表对应的下一跳中未被剔出的下一跳的索引,在所述ECMP表中填充有所述被剔出的下一跳的索引的表项中的第四填充次数,根据所述第四填充次数,用所述ECMP表对应的下一跳中未被剔出的下一跳的索引更新所述ECMP表中填充有所述被剔出的下一跳的索引的表项。例如,ECMP表处理装置可以将ECMP表中填充有所述被剔出的下一跳的索引的表项标记为无效,然后按照下一跳对应链路的可用负载能力,确定ECMP表对应的下一跳中每个未被剔出的下一跳的索引,在所述ECMP表中填充有所述被剔出的下一跳的索引的表项中的第四填充次数,根据所述第四填充次数,将ECMP表对应的下一跳中每个未被剔出的下一跳的索引填充到所述ECMP表中被标记为无效的表项中,并取消用于标识该表项无效的标记。
在一可选实施方式中,ECMP表处理装置除了监测ECMP表对应的下一跳中是否有下一跳被剔出之外,还会监测ECMP表对应的下一跳中是否新增下一跳。例如,ECMP表处理装置在监测到新的链路加入时,可以确定ECMP表对应的下一跳中新增下一跳。在确定ECMP表对应的下一跳中新增下一跳后,ECMP表处理装置根据ECMP表所包含的表项的总数和新增下一跳之后ECMP表对应的下一跳的总数,确定在新增下一跳后每个下一跳的索引在ECMP表中被重复填充的次数,这里将在新增下一跳后每个下一跳的索引在ECMP表中被重复填充的次数记为第二次数。然后,ECMP表处理装置根据第二次数和第一次数,获得填充次数之差。其中,第一次数是指根据ECMP表所包含的表项的总数和新增下一跳之前所述ECMP表对应的下一跳的总数,确定出的在新增下一跳前每个下一跳的索引在所述ECMP表中被重复填充的次数;以表1所示为例,索引a、b和c分别被重复填充了3次。然后,ECMP表处理装置按照预设的填充策略对应的选择策略,从所述ECMP表中选择所述填充次数之差个表项,并用所述新增的下一跳的索引更新所选择的表项。
可选的,ECMP表处理装置按照预设的填充策略对应的选择策略,从所述ECMP表中选择所述填充次数之差个表项,并用所述新增的下一跳的索引更新所选择的表项的一种实施方式包括:ECMP表处理装置按照所述选择策略,从ECMP表中选择所述填充次数之差个表项,将所选择的表项标记为无效;之后,将所述新增的下一跳的索引填充到所述ECMP表中被标记为无效的表项中,并取消用于标识该表项无效的标记。
上述填充策略对应的选择策略是指与填充策略相适应的选择策略;当使用新增的下一跳的索引,对根据该选择策略选择出并被标记为无效的表项进行填充后,得到的ECMP表中各下一跳的索引之间满足所述预设的填充策略。
例如,如果填充策略为循环填充的策略,则对应的选择策略为循环选择的策略。基于此,ECMP表处理装置按照所述填充策略对应的选择策略,从所述ECMP表中选择所述填充次数之差个表项的一种实施方式包括:ECMP表处理装置按照循环选择的策略,从所述ECMP表中选择所述填充次数之差个表项,这样在ECMP表处理装置使用新增的下一跳的索引,对根据该选择策略选择出并标记为无效的表项进行填充后,ECMP表中各下一跳的索引之间具有循环填充的效果。
又例如,如果填充策略为按照下一跳对应的链路间负载均衡的权重比例,确定填充次数,并根据确定的填充次数进行填充,则相应的选择策略为按照下一跳对应的链路间负载均衡的权重比例,确定选择次数,并根据确定的选择次数进行选择。基于此,ECMP表处理装置按照所述填充策略对应的选择策略,从所述ECMP表中选择所述填充次数之差个表项的一种实施方式包括:ECMP表处理装置按照下一跳对应的链路间负载均衡的权重比例,确定ECMP表对应的每个下一跳的索引的第一选择次数,根据所述第一选择次数从所述ECMP表中选择所述填充次数之差个表项。这里的第一选择次数是指根据所述负载均衡的权重比例,确定出的ECMP表对应的每个下一跳的索引被选择的次数,为便于区分,本发明实施例中分别在选择次数之前冠以“第一”、“第二”等字样。这样在ECMP表处理装置使用新增的下一跳的索引,对根据该选择策略选择出并标记为无效的表项进行填充后,ECMP表中各下一跳的索引数量之间的比例关系满足上述负载均衡的权重比例。
又例如,如果填充策略为按照下一跳对应链路的可用负载能力,确定填充次数,并根据确定的填充次数进行填充,则相应的选择策略为按照下一跳对应链路的可用负载能力,确定选择次数,并根据确定的选择次数进行选择。基于此,ECMP表处理装置按照所述填充策略对应的选择策略,从所述ECMP表中选择所述填充次数之差个表项的一种实施方式包括:ECMP表处理装置按照下一跳对应链路的可用负载能力,确定ECMP表对应的每个下一跳的索引的第二选择次数,根据所述第二选择次数从所述ECMP表中选择所述填充次数之差个表项。
由上述可见,本实施例提供的ECMP表处理方法,通过对ECMP表进行扩展,使得ECMP表包含的表项的总数大于ECMP表对应的下一跳的总数,然后将ECMP表中的每个表项都填充上ECMP表对应的下一跳的索引,这样当确定ECMP表对应的下一跳中有下一跳被剔出时,例如可能是由于链路故障导致该链路对应的下一跳被剔出,则可以用ECMP表对应的下一跳中剩余的未被剔出的下一跳的索引,更新ECMP表中填充有所述被剔出的下一跳的索引的各表项,从而,即使ECMP表对应的下一跳的总数减少了,但ECMP表包含的填充有下一跳索引的表项的总数不变进而保持ECMP表所存储的有效下一跳的索引总数不变,这样对于那些通过未发生故障的链路进行传输的数据流,在通过哈希运算从ECMP路由中重新为其选择的转发路径与之前的转发路径相同,这些数据流不会发生中断,提高了CDN网络的可靠性。
下面将结合实际应用,以循环填充策略为例,对本发明技术方案进行举例说明。在该举例说明中,假设一个ECMP路由最多支持256个下一跳。
首先,以ECMP路由所支持的下一跳从4个变为5个为例,说明增加下一跳的处理过程。
创建ECMP组,该ECMP组包括最长前缀匹配(Longest Prefix Match,简称为LPM)路由表、ECMP表和下一跳表。假设ECMP路由为192.168.1.0/24,其ECMP表索引为x,如图3中的ECMP-ptr[x],且假设存在4个有效下一跳,其对应的索引分别为a、b、c和d,相应的用[a]、[b]、[c]、[d]分别表示4个下一跳;如图3所示,ECMP-CNT[256]表示一条LPM路由表最多占用256个ECMP表。LPM路由表与ECMP表之间的关系,以及ECMP表与下一跳表之间的关系也如图3所示。
将4个有效下一跳循环填充至ECMP表中,此时各表的结果如图3所示。每一个有效下一跳被循环填充64次。
此时新增一个下一跳,其索引为e,有效下一跳个数从4变为5。此时,重新计算新增下一跳后每一跳循环填充的次数为256/5=51,那么新旧填充次数之差为64-51=13次。
按照循环填充策略对应的选择策略,从ECMP表中有效下一跳的索引中选出13个标记为无效,同时在下一跳表中添加下一跳[e]的信息,此时各表的结果如图4所示。如图4所示,与循环填充策略对应的选择策略实际上是一种循环选择策略。可选的,除了按照图4所示循环选择方式从有效下一跳的索引中选择需要标记为无效的表项之外,还可以是顺序选取,还可以是每隔n个表项选取1个(简称为隔跳选取),n为大于等于1但小于256的整数,也可以通过监测这些下一跳所转发的数据流量,按照数据流量由小到大的顺序进行选择等等。
然后,在ECMP表中被标记为无效的表项位置填充新增的下一跳的索引e,同时取消用于标识该表项无效的标记,则填充结果如图5所示。
此时ECMP表的256个表项中:索引a、b、c和d分别存在51个,而索引e存在52个。基于此,原来走索引a所标识的下一跳的数据流存在13/64=20%,会因为新增索引e对应的下一跳,而被重新转发至索引e所标识的下一跳对应的链路上,引起20%左右的TCP连接超时。但在现有技术方案中,在新增下一跳的情况下,一般会出现80%-100%的连接超时,所以与现有技术方案相比,从整体上有利于降低连接超时,具有近4-5倍的性能提升。
接下来,以剔出索引a所标识的下一跳为例,说明本发明技术方案剔出下一跳的处理过程。
首先,确定需要剔出索引a所标识的下一跳。例如,索引a所标识的下一跳对应的链路发生故障。
将ECMP表中填充有索引a的表项标记为无效,并将下一跳表中下一跳[a]的信息做失效处理,本实施例以将下一跳[a]的信息删除为例进行说明,此时各表的结果如图6所示。
按照循环填充策略,将剩余的有效下一跳填充至ECMP表中被标记为无效的表项中,同时取消标记该表项无效的标记,填充结果如图7所示。可选的,可以记录本次填充过程中最后填充的下一跳[c],这样可以在下次填充过程中从本次最后填充的下一跳之后的下一跳[d]开始填充,有利于使填充更加均匀。
此时ECMP表的256个表项中:索引b、c和d分别存在64个,索引e存在64个。基于此,原来走索引a所标识的下一跳的数据流因为下一跳丢失全部失效,但是走其他4个下一跳的数据流依然保持原有路径。这样可以算出实际平均丢失数据流的概率为1/5=25%,而现有技术方案丢失数据流的概率一般可达到80%-100%,与现有技术方案相比,本发明实施例可以降低数据流的丢失概率,降低业务中断概率,在性能上存在3-4倍的提升,提高了CDN网络的可靠性。
在此说明,上述图3-图7所示的ECMP表中各表项中填充“next_hop_ptr[y]”,可以同时表示该表项所填充的索引以及索引代表的下一跳的含义。在该实施方式中,“y”可以是a、b、c、d或e。
下面将结合实际应用,以按照链路间负载均衡的权重比例,确定填充次数,然后根据填充次数进行填充为例,对本发明技术方案进行举例说明。在该举例说明中,假设ECMP表对应n个下一跳,即对应n条路径,则对这些下一跳进行统一扩充,例如扩充m倍,其中m为自然数。优选的,m可以大于(n-1),这样可以保证在有下一跳被剔出后,剩余的所有下一跳的索引能够在ECMP表中填充有被剔出下一跳的索引的表项中至少被填充一次,有利于维持原来负载均衡的权重比例,有利于提高在下一跳被剔出后的负载均衡效果。另外,在扩充过程中,按照链路负载均衡的权重比例对这些下一跳进行扩充,从而不改变链路间负载均衡的权重比例,这样可以保证均衡效果和扩充前一致。对下一跳进行统一扩充实际上是对ECMP表进行扩充,并按照链路间负载均衡的权重比例,确定每个下一跳的索引在ECMP表中的填充次数,然后根据确定的填充次数将下一跳的索引填充到ECMP表中的过程。如图8所示,假设ECMP表中原来有8个下一跳的索引,对应的索引分别为L1-L8,且各下一跳对应的链路间负载均衡的权重比例为1:1:1:1:1:1∶1:1,则按照m倍扩充后的ECMP表如图9所示。在此说明,如果ECMP表的容量无法支持按照链路间负载均衡的权重比例对下一跳进行扩充,则可以优先采用可用负载能力大的链路对应的下一跳进行填充。
假设某个LVS服务器宕机,则该LVS服务器对应的下一跳将被剔出。假设将被剔出的下一跳的索引为L3,则选择ECMP表中填充有L3的表项标记为无效,并按照链路间负载均衡的权重比例,确定有效的索引L1、L2、L4、L5、L6、L7和L8所标识的下一跳的索引在ECMP表中的填充次数,然后根据该填充次数用有效的索引L1、L2、L4、L5、L6、L7和L8对标记为无效的表项进行填充。假设m=7,则确定出的各有效下一跳的索引的填充次数均为1,则填充后的ECMP表如图10所示。
由于数据流内容不变,下一跳被剔出前后ECMP表中存储的有效下一跳的索引总数不变,且所使用的哈希算法也不变,因此以数据流作为CRC计算的输入得出哈希值,并用哈希值和ECMP表中存储的有效下一跳的索引总数进行取模运算之后得出的数据流的实际出口,与下一跳被剔出之前得出的实际出口相同,即原有数据流的哈希选路结果不会发生改变。
如图11所示,在索引L3对应的LVS服务器宕机前,第一数据流和第二数据流的哈希选路结果是对应于ECMP表中第8个表项和第17个表项;如图12所示,在索引L3对应的LVS服务器宕机后,第一数据流和第二数据流的哈希选路结果仍然是对应于ECMP表中第8个表项和第17个表项。索引L3对应的LVS服务器宕机前第一数据流从索引L2对应的LVS服务器进行转发;索引L3对应的LVS服务器宕机后第一数据流仍然从索引L2对应的LVS服务器进行转发,第一数据流对应的TCP连接不需要重新建立,不会中断传输。对于从索引L3对应的LVS服务器转发的第二数据流,将从索引L4对应的LVS服务器进行转发。由于索引L3对应的LVS服务器宕机后,其在ECMP表中对应的表项是被有效下一跳按照权重比例填充的,因此原来通过索引L3对应的LVS服务器转发的数据流,会被重新负载均衡到新填充的下一跳对应的链路上,实现了数据流的重新负载均衡。
在此说明,在上述按照链路间负载均衡的权重比例对ECMP表进行处理的过程中,仅对ECMP表的变化过程进行了说明,关于下一跳表,有下一跳被剔出时,需要将被剔出下一跳的信息删除或标记为无效,在新增下一跳时,需要增加该新增下一跳的信息,在此不再细述。另外,上述m取值越大,在某个下一跳被剔出后,该被剔出的下一跳对应链路上所承载的数据流被重新负载均衡的效果越好。
图13为本发明实施例提供的一种ECMP表处理装置的结构示意图。如图13所示,本实施例的装置包括:第一确定模块1311和第一更新模块1312。
第一确定模块1311,用于确定ECMP表对应的下一跳中有下一跳被剔出。其中,所述ECMP表所包含的表项的总数大于所述ECMP表对应的下一跳的总数,所述ECMP表中的每个表项均填充有所述ECMP表对应的下一跳的索引。
第一更新模块1312,与第一确定模块1311连接,用于按照预设的填充策略,用所述ECMP表对应的下一跳中未被剔出的下一跳的索引,更新所述ECMP表中填充有所述被剔出的下一跳的索引的表项。
在一可选实施方式中,第一更新模块1312具体可用于将所述ECMP表中填充有所述被剔出的下一跳的索引的表项标记为无效,按照所述填充策略,在所述ECMP表中被标记为无效的表项中,重新填充所述ECMP表对应的下一跳中未被剔出的下一跳的索引,并取消所述标记。
在一可选实施方式中,如图14所示,本实施例的ECMP表处理装置还包括:第二确定模块1313、获得模块1314和第二更新模块1315。
第二确定模块1313,用于确定所述ECMP表对应的下一跳中新增下一跳,并根据所述ECMP表所包含的表项的总数和新增下一跳之后所述ECMP表对应的下一跳的总数,确定在新增下一跳后每个下一跳的索引在所述ECMP表中被重复填充的第二次数。
获得模块1314,与第二确定模块1313连接,用于根据第二确定模块1313确定的第二次数和第一次数,获得填充次数之差。所述第一次数是根据所述ECMP表所包含的表项的总数和新增下一跳之前所述ECMP表对应的下一跳的总数,确定出的在新增下一跳前每个下一跳的索引在所述ECMP表中被重复填充的次数。可选的,第一次数可以由获得模块1314获得,也可以由第二确定模块1313获得。
第二更新模块1315,与获得模块1314连接,用于按照所述填充策略对应的选择策略,从所述ECMP表中选择所述填充次数之差个表项,并用所述新增的下一跳的索引更新所选择的表项。
在一可选实施方式中,第二更新模块1315具体可用于按照所述选择策略,从所述ECMP表中选择所述填充次数之差个表项,并将所选择的表项标记为无效,将所述新增的下一跳的索引填充到所述ECMP表中被标记为无效的表项中,并取消所述标记。
在一可选实施方式中,如图14所示,所述ECMP表处理装置还包括:创建模块1316和填充模块1317。
创建模块1316,与第一确定模块1311连接,用于在第一确定模块1311确定所述ECMP表对应的下一跳中有下一跳被剔出之前,创建所述ECMP表。
填充模块1317,与创建模块1316连接,用于按照所述填充策略,在所述ECMP表的每个表项中,填充所述ECMP表对应的下一跳的索引。其中,填充模块1317还与第一确定模块1311和第二确定模块1313连接,用于向第一确定模块1311和第二确定模块1313提供填充有下一跳的索引的ECMP表。
在一可选实施方式中,填充模块1317具体可用于按照循环填充的策略,将所述ECMP表对应的每个下一跳的索引循环填充到所述ECMP表的表项中。相应的,第一更新模块1312具体可用于按照循环填充的策略,用所述ECMP表对应的下一跳中未被剔出的下一跳的索引,更新所述ECMP表中填充有所述被剔出的下一跳的索引的表项。相应的,如果所述填充策略为循环填充的策略,则第二更新模块1315具体可用于按照循环选择的策略,从所述ECMP表中选择所述填充次数之差个表项。
在一可选实施方式中,填充模块1317具体可用于按照下一跳对应的链路间负载均衡的权重比例,确定所述ECMP表对应的每个下一跳的索引在所述ECMP表中的第一填充次数,根据所述第一填充次数将所述ECMP表对应的每个下一跳的索引填充到所述ECMP表的表项中。相应的,第一更新模块1312具体可用于按照下一跳对应的链路间负载均衡的权重比例,确定所述ECMP表对应的下一跳中未被剔出的下一跳的索引,在所述ECMP表中填充有所述被剔出的下一跳的索引的表项中的第二填充次数,根据所述第二填充次数,用所述ECMP表对应的下一跳中未被剔出的下一跳的索引更新所述ECMP表中填充有所述被剔出的下一跳的索引的表项。相应的,如果所述填充策略为按照下一跳对应的链路间负载均衡的权重比例的填充策略,则第二更新模块1315具体可用于按照下一跳对应的链路间负载均衡的权重比例,确定所述ECMP表对应的每个下一跳的索引的第一选择次数,根据所述第一选择次数从所述ECMP表中选择所述填充次数之差个表项。
在一可选实施方式中,填充模块1317具体可用于按照下一跳对应链路的可用负载能力,确定所述ECMP表对应的每个下一跳的索引在所述ECMP表中的第三填充次数,根据所述第三填充次数将所述ECMP表对应的每个下一跳的索引填充到所述ECMP表的表项中。相应的,第一更新模块1312具体可用于按照下一跳对应链路的可用负载能力,确定所述ECMP表对应的下一跳中未被剔出的下一跳的索引,在所述ECMP表中填充有所述被剔出的下一跳的索引的表项中的第四填充次数,根据所述第四填充次数,用所述ECMP表对应的下一跳中未被剔出的下一跳的索引更新所述ECMP表中填充有所述被剔出的下一跳的索引的表项。相应的,如果所述填充策略为按照下一跳对应链路的可用负载能力的填充策略,则第二更新模块1315具体可用于按照下一跳对应链路的可用负载能力,确定所述ECMP表对应的每个下一跳的索引的第二选择次数,根据所述第二选择次数从所述ECMP表中选择所述填充次数之差个表项。
本实施例提供的ECMP表处理装置可以是CDN网络中的交换机,但不限于此。
本实施例提供的ECMP表处理装置的各功能模块可用于执行图2所示ECMP表处理方法实施例的流程,其具体工作原理不再赘述,详见方法实施例的描述。
本实施例提供的ECMP表处理装置,通过对ECMP表进行扩展,使得ECMP表包含的表项的总数大于ECMP表对应的下一跳的总数,然后将ECMP表中的每个表项都填充上ECMP表对应的下一跳的索引,这样当确定ECMP表对应的下一跳中有下一跳被剔出时,例如可能是由于链路故障导致该链路对应的下一跳被剔出,则可以按照预设的填充策略,用ECMP表对应的下一跳中剩余的未被剔出的下一跳的索引更新ECMP表中填充有所述被剔出的下一跳的索引的各表项,从而,即使ECMP表对应的下一跳的总数减少了,但ECMP表包含的填充有下一跳索引的表项的总数不变进而保持ECMP表所存储的有效下一跳的索引总数不变,这样对于那些通过未发生故障的链路进行传输的数据流,在通过哈希运算从ECMP路由中重新为其选择的转发路径与之前的转发路径相同,这些数据流不会发生中断,提高了CDN网络的可靠性。
本发明实施例提供一种网络设备,包括本发明上述实施例提供的ECMP表处理装置。本实施例提供的网络设备可以是CDN网络中的交换机,但不限于此。
本实施例提供的网络设备,也可以执行上述方法实施例的流程,同样可以在ECMP表对应的下一跳的总数减少时,保持ECMP表包含的填充有下一跳索引的表项的总数不变,进而保持ECMP表所存储的有效下一跳的索引总数不变,这样对于那些通过未发生故障的链路进行传输的数据流,在通过哈希运算从ECMP路由中重新为其选择的转发路径与之前的转发路径相同,这些数据流不会发生中断,提高了CDN网络的可靠性。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (13)
1.一种等价多路径ECMP表处理方法,其特征在于,包括:
确定ECMP表对应的下一跳中有下一跳被剔出,其中,所述ECMP表所包含的表项的总数大于所述ECMP表对应的下一跳的总数,所述ECMP表中的每个表项均填充有所述ECMP表对应的下一跳的索引;
按照预设的填充策略,用所述ECMP表对应的下一跳中未被剔出的下一跳的索引,更新所述ECMP表中填充有所述被剔出的下一跳的索引的表项;
确定所述ECMP表对应的下一跳中新增下一跳;
根据所述ECMP表所包含的表项的总数和新增下一跳之后所述ECMP表对应的下一跳的总数,确定在新增下一跳后每个下一跳的索引在所述ECMP表中被重复填充的第二次数;
根据所述第二次数和第一次数,获得填充次数之差;所述第一次数是根据所述ECMP表所包含的表项的总数和新增下一跳之前所述ECMP表对应的下一跳的总数,确定出的在新增下一跳前每个下一跳的索引在所述ECMP表中被重复填充的次数;
按照所述填充策略对应的选择策略,从所述ECMP表中选择所述填充次数之差个表项,并用所述新增的下一跳的索引更新所选择的表项。
2.根据权利要求1所述的ECMP表处理方法,其特征在于,所述按照预设的填充策略,用所述ECMP表对应的下一跳中未被剔出的下一跳的索引,更新所述ECMP表中填充有所述被剔出的下一跳的索引的表项包括:
将所述ECMP表中填充有所述被剔出的下一跳的索引的表项标记为无效;
按照所述填充策略,在所述ECMP表中被标记为无效的表项中,重新填充所述ECMP表对应的下一跳中未被剔出的下一跳的索引,并取消所述标记。
3.根据权利要求1所述的ECMP表处理方法,其特征在于,所述按照所述填充策略对应的选择策略,从所述ECMP表中选择所述填充次数之差个表项,并用所述新增的下一跳的索引更新所选择的表项包括:
按照所述选择策略,从所述ECMP表中选择所述填充次数之差个表项,并将所选择的表项标记为无效;
将所述新增的下一跳的索引填充到所述ECMP表中被标记为无效的表项中,并取消所述标记。
4.根据权利要求1-3任一项所述的ECMP表处理方法,其特征在于,所述确定ECMP表对应的下一跳中有下一跳被剔出之前,包括:
创建所述ECMP表;
按照所述填充策略,在所述ECMP表的每个表项中,填充所述ECMP表对应的下一跳的索引。
5.根据权利要求4所述的ECMP表处理方法,其特征在于,所述按照所述填充策略,在所述ECMP表的每个表项中,填充所述ECMP表对应的下一跳的索引包括:按照循环填充的策略,将所述ECMP表对应的每个下一跳的索引循环填充到所述ECMP表的表项中;
则所述按照预设的填充策略,用所述ECMP表对应的下一跳中未被剔出的下一跳的索引,更新所述ECMP表中填充有所述被剔出的下一跳的索引的表项包括:
按照循环填充的策略,用所述ECMP表对应的下一跳中未被剔出的下一跳的索引,更新所述ECMP表中填充有所述被剔出的下一跳的索引的表项;
或者,
所述按照所述填充策略,在所述ECMP表的每个表项中,填充所述ECMP表对应的下一跳的索引包括:
按照下一跳对应的链路间负载均衡的权重比例,确定所述ECMP表对应的每个下一跳的索引在所述ECMP表中的第一填充次数,根据所述第一填充次数将所述ECMP表对应的每个下一跳的索引填充到所述ECMP表的表项中;
则所述按照预设的填充策略,用所述ECMP表对应的下一跳中未被剔出的下一跳的索引,更新所述ECMP表中填充有所述被剔出的下一跳的索引的表项包括:
按照下一跳对应的链路间负载均衡的权重比例,确定所述ECMP表对应的下一跳中未被剔出的下一跳的索引,在所述ECMP表中填充有所述被剔出的下一跳的索引的表项中的第二填充次数,根据所述第二填充次数,用所述ECMP表对应的下一跳中未被剔出的下一跳的索引更新所述ECMP表中填充有所述被剔出的下一跳的索引的表项;
或者,
所述按照所述填充策略,在所述ECMP表的每个表项中,填充所述ECMP表对应的下一跳的索引包括:
按照下一跳对应链路的可用负载能力,确定所述ECMP表对应的每个下一跳的索引在所述ECMP表中的第三填充次数,根据所述第三填充次数将所述ECMP表对应的每个下一跳的索引填充到所述ECMP表的表项中;
则所述按照预设的填充策略,用所述ECMP表对应的下一跳中未被剔出的下一跳的索引,更新所述ECMP表中填充有所述被剔出的下一跳的索引的表项包括:
按照下一跳对应链路的可用负载能力,确定所述ECMP表对应的下一跳中未被剔出的下一跳的索引,在所述ECMP表中填充有所述被剔出的下一跳的索引的表项中的第四填充次数,根据所述第四填充次数,用所述ECMP表对应的下一跳中未被剔出的下一跳的索引更新所述ECMP表中填充有所述被剔出的下一跳的索引的表项。
6.根据权利要求1或3所述的ECMP表处理方法,其特征在于,
如果所述填充策略为循环填充的策略,则所述按照所述填充策略对应的选择策略,从所述ECMP表中选择所述填充次数之差个表项包括:按照循环选择的策略,从所述ECMP表中选择所述填充次数之差个表项;
如果所述填充策略为按照下一跳对应的链路间负载均衡的权重比例的填充策略,则所述按照所述填充策略对应的选择策略,从所述ECMP表中选择所述填充次数之差个表项包括:按照下一跳对应的链路间负载均衡的权重比例,确定所述ECMP表对应的每个下一跳的索引的第一选择次数,根据所述第一选择次数从所述ECMP表中选择所述填充次数之差个表项;
如果所述填充策略为按照下一跳对应链路的可用负载能力的填充策略,则所述按照所述填充策略对应的选择策略,从所述ECMP表中选择所述填充次数之差个表项包括:按照下一跳对应链路的可用负载能力,确定所述ECMP表对应的每个下一跳的索引的第二选择次数,根据所述第二选择次数从所述ECMP表中选择所述填充次数之差个表项。
7.一种等价多路径ECMP表处理装置,其特征在于,包括:
第一确定模块,用于确定ECMP表对应的下一跳中有下一跳被剔出,其中,所述ECMP表所包含的表项的总数大于所述ECMP表对应的下一跳的总数,所述ECMP表中的每个表项均填充有所述ECMP表对应的下一跳的索引;
第一更新模块,用于按照预设的填充策略,用所述ECMP表对应的下一跳中未被剔出的下一跳的索引,更新所述ECMP表中填充有所述被剔出的下一跳的索引的表项;
第二确定模块,用于确定所述ECMP表对应的下一跳中新增下一跳,并根据所述ECMP表所包含的表项的总数和新增下一跳之后所述ECMP表对应的下一跳的总数,确定在新增下一跳后每个下一跳的索引在所述ECMP表中被重复填充的第二次数;
获得模块,用于根据所述第二次数和第一次数,获得填充次数之差;所述第一次数是根据所述ECMP表所包含的表项的总数和新增下一跳之前所述ECMP表对应的下一跳的总数,确定出的在新增下一跳前每个下一跳的索引在所述ECMP表中被重复填充的次数;
第二更新模块,用于按照所述填充策略对应的选择策略,从所述ECMP表中选择所述填充次数之差个表项,并用所述新增的下一跳的索引更新所选择的表项。
8.根据权利要求7所述的ECMP表处理装置,其特征在于,所述第一更新模块具体用于将所述ECMP表中填充有所述被剔出的下一跳的索引的表项标记为无效,按照所述填充策略,在所述ECMP表中被标记为无效的表项中,重新填充所述ECMP表对应的下一跳中未被剔出的下一跳的索引,并取消所述标记。
9.根据权利要求7所述的ECMP表处理装置,其特征在于,所述第二更新模块具体用于按照所述选择策略,从所述ECMP表中选择所述填充次数之差个表项,并将所选择的表项标记为无效,将所述新增的下一跳的索引填充到所述ECMP表中被标记为无效的表项中,并取消所述标记。
10.根据权利要求7-9任一项所述的ECMP表处理装置,其特征在于,还包括:
创建模块,用于在所述第一确定模块确定所述ECMP表对应的下一跳中有下一跳被剔出之前,创建所述ECMP表;
填充模块,用于按照所述填充策略,在所述ECMP表的每个表项中,填充所述ECMP表对应的下一跳的索引。
11.根据权利要求10所述的ECMP表处理装置,其特征在于,所述填充模块具体用于按照循环填充的策略,将所述ECMP表对应的每个下一跳的索引循环填充到所述ECMP表的表项中;
则所述第一更新模块具体用于按照循环填充的策略,用所述ECMP表对应的下一跳中未被剔出的下一跳的索引,更新所述ECMP表中填充有所述被剔出的下一跳的索引的表项;
或者,
所述填充模块具体用于按照下一跳对应的链路间负载均衡的权重比例,确定所述ECMP表对应的每个下一跳的索引在所述ECMP表中的第一填充次数,根据所述第一填充次数将所述ECMP表对应的每个下一跳的索引填充到所述ECMP表的表项中;
则所述第一更新模块具体用于按照下一跳对应的链路间负载均衡的权重比例,确定所述ECMP表对应的下一跳中未被剔出的下一跳的索引,在所述ECMP表中填充有所述被剔出的下一跳的索引的表项中的第二填充次数,根据所述第二填充次数,用所述ECMP表对应的下一跳中未被剔出的下一跳的索引更新所述ECMP表中填充有所述被剔出的下一跳的索引的表项;
或者,
所述填充模块具体用于按照下一跳对应链路的可用负载能力,确定所述ECMP表对应的每个下一跳的索引在所述ECMP表中的第三填充次数,根据所述第三填充次数将所述ECMP表对应的每个下一跳的索引填充到所述ECMP表的表项中;
则所述第一更新模块具体用于按照下一跳对应链路的可用负载能力,确定所述ECMP表对应的下一跳中未被剔出的下一跳的索引,在所述ECMP表中填充有所述被剔出的下一跳的索引的表项中的第四填充次数,根据所述第四填充次数,用所述ECMP表对应的下一跳中未被剔出的下一跳的索引更新所述ECMP表中填充有所述被剔出的下一跳的索引的表项。
12.根据权利要求7或9所述的ECMP表处理装置,其特征在于,如果所述填充策略为循环填充的策略,则所述第二更新模块具体用于按照循环选择的策略,从所述ECMP表中选择所述填充次数之差个表项;
如果所述填充策略为按照下一跳对应的链路间负载均衡的权重比例的填充策略,则所述第二更新模块具体用于按照下一跳对应的链路间负载均衡的权重比例,确定所述ECMP表对应的每个下一跳的索引的第一选择次数,根据所述第一选择次数从所述ECMP表中选择所述填充次数之差个表项;如果所述填充策略为按照下一跳对应链路的可用负载能力的填充策略,则所述第二更新模块具体用于按照下一跳对应链路的可用负载能力,确定所述ECMP表对应的每个下一跳的索引的第二选择次数,根据所述第二选择次数从所述ECMP表中选择所述填充次数之差个表项。
13.一种网络设备,其特征在于,包括:权利要求7-12任一项所述的等价多路径ECMP表处理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210583390.0A CN103078804B (zh) | 2012-12-28 | 2012-12-28 | 等价多路径表处理方法、装置及网络设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210583390.0A CN103078804B (zh) | 2012-12-28 | 2012-12-28 | 等价多路径表处理方法、装置及网络设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103078804A CN103078804A (zh) | 2013-05-01 |
CN103078804B true CN103078804B (zh) | 2015-07-22 |
Family
ID=48155213
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210583390.0A Active CN103078804B (zh) | 2012-12-28 | 2012-12-28 | 等价多路径表处理方法、装置及网络设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103078804B (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104144120A (zh) * | 2013-05-07 | 2014-11-12 | 杭州华三通信技术有限公司 | 转发信息配置方法及装置 |
CN104348717B (zh) * | 2013-08-02 | 2018-05-11 | 新华三技术有限公司 | 报文转发方法和装置 |
CN104301417B (zh) * | 2014-10-22 | 2018-08-07 | 网宿科技股份有限公司 | 一种负载均衡方法及装置 |
CN105721321B (zh) * | 2014-12-02 | 2019-09-06 | 南京中兴新软件有限责任公司 | 一种等价多路径的出接口更新方法及装置 |
CN106330748B (zh) | 2015-06-30 | 2019-04-09 | 中兴通讯股份有限公司 | 一种流量控制方法及装置 |
CN105681130B (zh) * | 2016-01-27 | 2019-04-19 | 北京百度网讯科技有限公司 | 传输控制协议链接构建方法及装置 |
CN107370671B (zh) * | 2016-05-13 | 2020-05-15 | 平安科技(深圳)有限公司 | 一种基于sdn网络的等价路由交互方法及终端 |
CN106059924B (zh) | 2016-08-19 | 2020-04-03 | 华为技术有限公司 | 一种管理信息的方法,装置及系统 |
CN107995123B (zh) * | 2016-10-27 | 2020-05-01 | 贵州白山云科技股份有限公司 | 一种基于交换机的负载均衡系统及方法 |
CN108259346B (zh) | 2017-01-25 | 2020-08-04 | 新华三技术有限公司 | 一种等价路由表项建立方法和装置 |
CN108259334A (zh) | 2017-01-25 | 2018-07-06 | 新华三技术有限公司 | 一种等价路由表项建立方法和装置 |
CN107948087A (zh) * | 2017-12-07 | 2018-04-20 | 锐捷网络股份有限公司 | 一种负载均衡的方法及设备 |
CN109361778A (zh) * | 2018-12-18 | 2019-02-19 | 厦门商集网络科技有限责任公司 | 一种管理会话的方法及终端 |
CN110995609A (zh) * | 2019-12-20 | 2020-04-10 | 新华三半导体技术有限公司 | 报文发送方法、装置、电子设备及存储介质 |
CN113132443B (zh) * | 2019-12-31 | 2022-06-07 | 北京金山云网络技术有限公司 | 资源获取方法、装置及cdn网络中的节点设备 |
CN113422731A (zh) * | 2021-06-22 | 2021-09-21 | 恒安嘉新(北京)科技股份公司 | 一种负载均衡输出方法、装置、汇聚分流设备和介质 |
CN115550247A (zh) * | 2021-06-29 | 2022-12-30 | 中兴通讯股份有限公司 | 等价路由管理方法、交换机、交换机系统及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1261178A2 (en) * | 2001-05-24 | 2002-11-27 | Alcatel | System and method for enhancing the availability of routing systems through equal cost multipath |
CN101442494A (zh) * | 2008-12-16 | 2009-05-27 | 中兴通讯股份有限公司 | 一种实现快速重路由的方法 |
CN102025538A (zh) * | 2010-12-03 | 2011-04-20 | 中兴通讯股份有限公司 | 基于ecmp路径实现组播流量负荷分担的方法和装置 |
CN102347885A (zh) * | 2010-07-29 | 2012-02-08 | 杭州华三通信技术有限公司 | 一种路由切换的方法和装置 |
-
2012
- 2012-12-28 CN CN201210583390.0A patent/CN103078804B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1261178A2 (en) * | 2001-05-24 | 2002-11-27 | Alcatel | System and method for enhancing the availability of routing systems through equal cost multipath |
CN101442494A (zh) * | 2008-12-16 | 2009-05-27 | 中兴通讯股份有限公司 | 一种实现快速重路由的方法 |
CN102347885A (zh) * | 2010-07-29 | 2012-02-08 | 杭州华三通信技术有限公司 | 一种路由切换的方法和装置 |
CN102025538A (zh) * | 2010-12-03 | 2011-04-20 | 中兴通讯股份有限公司 | 基于ecmp路径实现组播流量负荷分担的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN103078804A (zh) | 2013-05-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103078804B (zh) | 等价多路径表处理方法、装置及网络设备 | |
CN101442494B (zh) | 一种实现快速重路由的方法 | |
CN102571998B (zh) | 网络系统及地址解析方法 | |
CN101394400B (zh) | 用于建立避免地址解析协议高速缓冲存储器破坏的网络连接的方法 | |
CN110417569B (zh) | 一种网络链路故障处理方法和隧道端点设备 | |
JPH0936873A (ja) | リンクステートルーティング装置 | |
CN101601232A (zh) | 三层任播寻址 | |
WO2015142969A1 (en) | Switch-based load balancer | |
CN108173765A (zh) | 一种报文转发方法和装置 | |
CN104618243B (zh) | 路由方法、装置及系统、网关调度方法及装置 | |
CN102347885B (zh) | 一种路由切换的方法和装置 | |
CN101848171A (zh) | 一种基于gre隧道的数据传输方法、设备和系统 | |
CN101350818A (zh) | 网络业务的智能负载平衡和故障转移 | |
CN106130920A (zh) | 一种报文转发方法及装置 | |
CN101827039A (zh) | 一种负载分担的方法和设备 | |
CN103001865B (zh) | 一种lsp分片报文中发布信息的方法和设备 | |
CN105450540A (zh) | 一种负载均衡方法、装置及dhcp服务器 | |
CN102857547B (zh) | 分布式缓存的方法及设备 | |
JP5437290B2 (ja) | サービス振分方法、サービス振分装置、およびプログラム | |
CN107835095A (zh) | 一种日志的处理方法及装置 | |
CN103348722B (zh) | 用于提供通信连接弹性的系统和方法 | |
CN102638396B (zh) | 负载均衡方法和设备 | |
CN104780201A (zh) | 一种ipvs集群中的数据包处理方法及装置 | |
CN106209634B (zh) | 地址映射关系的学习方法及装置 | |
CN109951388B (zh) | 路由不间断方法和主控板 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder |
Address after: Cangshan District of Fuzhou City, Fujian province 350002 Jinshan Road No. 618 Garden State Industrial Park 19 floor Patentee after: RUIJIE NETWORKS Co.,Ltd. Address before: Cangshan District of Fuzhou City, Fujian province 350002 Jinshan Road No. 618 Garden State Industrial Park 19 floor Patentee before: Beijing Star-Net Ruijie Networks Co.,Ltd. |
|
CP01 | Change in the name or title of a patent holder |