具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明所述方案作进一步地详细说明。
本发明实施例中提出一种调整等价路由均衡分担的方法,该方法应用于由多个芯片组成的网络设备上。在通过第一哈希算法实现等价路由分担的模式下,当分配到该等价路由的各个下一跳上的流量不均衡时,将等价路由和虚拟聚合结合,能够实现等价路由的流量均衡分担。
假设该网络设备将等价路由的每个下一跳分布于一个芯片,假设支持的某一个等价路由有N个下一跳,则分布在该网络设备的N个芯片上,即一个芯片实现该等价路由的一个下一跳。
参见图1,图1为本发明具体实施例中调整等价路由均衡分担的方法流程示意图。具体步骤为:
步骤101,当分配到该等价路由的各个下一跳上的流量不均衡时,网络设备获取总流量的平均值,并将分配的流量大于平均值的该等价路由的下一跳的信息中的出口信息,配置为虚拟聚合组,与分配的流量小于平均值的该等价路由的下一跳的出口信息关联。
其中,等价路由的下一跳的出口信息包括芯片ID,在这里的出口信息中可以不配置端口号,因为流量分配到各芯片上时,转发流量使用的是芯片上的转发表项中的出端口;即使配置,也会被覆盖,不用来转发报文。
当该等价路由的N个下一跳为路由1到路由N,且该N个下一跳上分配的流量比为X1:X2:…:XN,X1、X2、…、XN为整数,且不全相同;总流量的平均值为Q=(X1+X2+…+XN)/N时,本步骤中将分配的流量大于平均值的该等价路由的下一跳的信息中的出口信息,配置为虚拟聚合组,与分配的流量小于平均值的该等价路由的下一跳的出口信息关联,包括:
该网络设备遍历分配的流量大于平均值的该等价路由的下一跳,当遍历到路由m时,将该路由m的出口信息配置为虚拟聚合组,该虚拟聚合组包含Xm个索引值,其中,Q个索引值对应的内容均为实现路由m的芯片的芯片ID,Xm-Q个索引值对应的内容为实现分配的流量小于平均值的等价路由的下一跳的芯片的芯片ID。
若所述Xm-Q个索引值对应的内容为实现分配的流量小于平均值的等价路由的下一跳路由i的芯片的芯片ID,且Q-Xi小于Xm-Q时,将Q-Xi个索引值指向实现分配的流量小于平均值的等价路由的下一跳路由i的芯片的芯片ID,将Xi+Xm-2-Q个索引值指向其他实现分配的流量小于平均值的等价路由的下一跳的芯片的芯片ID,m为不小于1且不大于N的整数,i为不等于m,不小于1且不大于N的整数。
本发明实施例中将出口信息配置为虚拟聚合组,该虚拟聚合组是虚拟出来的链路聚合组,实际上这些端口对外并没有在一个真正的聚合组中,而是将其模拟成一个聚合组。主要目的是使用链路聚合的哈希算法,重新获取该等价路由下一跳所在的芯片ID,以覆盖原有的出口信息。
在具体实现时,遍历该等价路由的每一个下一跳,如果分配到某个下一跳的流量小于平均值时,确定该下一跳需要增加索引值分配流量,如路由1,需要增加的索引值的个数为Q-X1;如果分配到某个下一跳的流量大于平均时,确定该下一跳需要减少索引值分配流量,如路由2,需要减少的索引值的个数为X2-Q。如果分配到某个下一跳的流量等于平均值时,确定该下一跳不需要增加,且不需要减少索引值分配流量,即不做处理。
在具体实现时,需要将需要减少流量分配的下一跳的出口信息配置为虚拟聚合组。并在该虚拟聚合组中将需要减少的流量通过索引值指向其他需要增加流量分配的下一跳的出口信息。
在分配到某个下一跳,如路由2,的流量大于平均值,且减少索引值分配流量时,将减少的索引值指向分配流量小于平均值的下一跳的出口信息,如路由1,当路由1需要增加的索引值小于路由2需要减少的索引值时,则路由2继续将索引值指向其他分配流量小于平均值的下一跳的出口信息,如路由3,以此类推,直到将路由2需要减少的索引值全部指向分配流量小于平均值的下一跳为止。
由于本发明的具体实施例中,该等价路由的所有下一跳中需要减少索引值的总个数,同需要增加索引值的总个数相同,即需要增加和需要减少的流量比值的数量是相等的。因此,通过上述配置方法,最终指向该等价路由的各下一跳的索引值个数均相等,会使分配到该等价路由的各下一跳的流量达到均衡。
步骤102,该网络设备接收到流量时,通过第一哈希算法为该接收的流量匹配等价路由的下一跳并获取匹配到的下一跳的信息。
通过步骤101中的调整配置后,该网络设备再次接收到流量时,先按照同现有技术一样的实现方式进行第一哈希算法进行计算,根据第一哈希算法计算结果匹配索引值,并获取匹配到的索引值对应的该等价路由的下一跳的信息。
该等价路由的下一跳的信息包括转发表项索引号和出口信息。在配置虚拟聚合时,只对出端口信息进行虚拟聚合,无论虚拟聚合后将该流量分配到哪个芯片上,转发表项索引号是不变的,即该虚拟聚合组对应的转发表项索引号。
步骤103,当该下一跳的信息中的出口信息为虚拟聚合组时,通过第二哈希算法匹配,重新获取一个该等价路由下一跳所在的芯片的芯片ID,并将该流量分配给重新获取的芯片ID对应的芯片进行转发。
本步骤中,当分配该流量的等价路由的下一跳的信息中的出口信息为虚拟聚合组时,该网络设备通过第二哈希算法进行计算匹配。这里用的第二哈希算法同步骤101中的第一哈希算法不一样,因为一个是用于三层的等价路由的哈希算法,一个是用于二层的链路聚合的哈希算法。总之,以保证等价路由的哈希运算结果和链路的哈希运算结果不一样,使分配到聚合的流量再均衡地获取到各索引值对应的实现某个下一跳的芯片的芯片ID。
步骤101中,下一跳的信息还包括转发表项索引号,该转发表项索引号用于在各芯片上查找各等价路由对应的转发表项。
在现有实现中,在实现该等价路由的下一跳的各芯片上,配置N个转发表项,各转发表项对应的转发表项索引号为等价路由的各下一跳的信息中的转发表项索引号,其中本芯片实现的下一跳对应的转发表项索引号,对应的转发表项的内容为该下一跳的出端口和封装信息;其他转发表项索引号对应的转发表项的内容为空。
当该等价路由的N个下一跳上分配的流量比为X1:X2:…:XN时,本发明具体实施例中需要进行如下配置:
该网络设备在所述Xm-Q个索引值对应的内容为实现分配的流量小于平均值的等价路由的下一跳的芯片上,将路由m的信息中的转发表项索引号对应的转发表项的内容填充为本芯片实现的该等价路由的下一跳的出端口和封装信息。
该网络设备将该流量分配给重新获取的芯片ID对应的芯片进行转发,包括:
将该流量以及通过第一哈希算法匹配到的下一跳的信息中的转发表项索引号,分配给重新获取的芯片ID对应的芯片,并根据分配的转发表项索引号在该芯片上查找到对应的转发表项,根据转发表项中的出端口和封装信息转发该流量。
由上述配置和转发可见,通过其他路由通过第二哈希算法分配来的流量,根据转发表项索引号查找到的转发表项内容仍然为该芯片实现的等价路由的下一跳的出端口和封装信息。
下面具体举例,详细说明本发明具体实现时,如何将下一跳的信息配置为虚拟聚合组。以某个等价路由,如等价路由1有两个下一跳,分别为路由1和路由2,并分别分布在芯片1和芯片2上,且等价路由1在芯片1和芯片2上的转发表项的索引号为1。
首先,入流量按照传统的第一哈希算法,如上文中的第一哈希算法,分配到等价路由的两个下一跳,即路由1和路由2上的流量不均衡时,如比例为1:3,此时需要对流量分担情况进行均衡调整。
由于路由1和路由2的流量比为1:3,因此,路由1需要增加索引值分配流量,路由2需要减少索引值分配流量。将需要减少索引值分配流量的路由,即路由2的信息配置为虚拟聚合组。
参见表1,表1为本发明实施例中等价路由1的索引表项包含的内容。
表1
表1中,索引表项的信息主要包含两部分,第一部分是芯片ID,说明报文应该从这个芯片ID转发出去,第二部分是转发表项索引号,用于在这个芯片ID对应的芯片上查找出端口和封装信息。
在现有实现中,索引值2对应的内容为,转发表项索引号2和芯片ID2。参见表2,表2为本发明实施例中虚拟聚合组包含的内容。
表2
表2中,3个虚拟聚合组索引值中虚拟聚合组索引1对应的内容为路由1所在的芯片的芯片ID,虚拟聚合组索引2和虚拟聚合组索引3对应的内容均为路由2所在的芯片的芯片ID。在表2中索引值中的信息还可以包括端口号,该端口号可以使配置时指定的一个未使用的端口,也可以不指定。因为在流量分配到各芯片上时,通过各芯片上的转发表项转发,不会使用该指定的端口号转发。
参见表3,表3为本发明具体实施例中芯片1上的转发表项包含的内容。
表3
参见表4,表4为本发明具体实施例中芯片2上的转发表项包含的内容。
表4
现有实现中,在芯片1上的转发表项索引号2对应的内容为空。本发明具体实现中在流量分配不均衡时,在表3中的转发表项索引2对应的内容中添加路由1的出端口和封装信息。
表3和表4中,转发表项索引号2的信息是不一样的。由于路由1和路由2分别位于芯片1和芯片2,即使报文在第一次第一哈希算法中分到了转发表项索引号2,但是在第二次第二哈希算法中也有机会重新分配到芯片1上,在芯片1上由于转发表项索引号2的内容是路由1的信息,所以报文仍然会按照路由1进行转发;如果报文第二次第二哈希算法中重新分配到芯片2上,在芯片2上由于转发表项索引号2的内容是路由2的信息,那么报文仍然会按照路由2进行转发。这样通过两次哈希算法,使得报文能够有重新选择分配的机会,从而让流量变得更加均匀。
下面结合附图,详细描述本发明实施例中在调整等价路由均衡分担后,接收到流量的处理过程。
参见图2,图2为本发明实施例中网络设备转发流量示意图。
网络设备接收到流量时,根据流量信息通过第一哈希算法的哈希结果在等价路由1的索引表项匹配索引值。
当通过第一哈希算法运算的哈希结果为1时,匹配到索引值1,该索引值1对应的内容为路由1的信息,则将该流量以及路由1的信息中的转发表项索引号1,分配到路由1的出口信息中的芯片1上。该网络设备根据转发表项索引号1在芯片1上查找转发表项1,并通过转发表项1的路由1的出端口转发该流量。
当通过第一哈希算法运算的哈希结果为2时,匹配到索引值2,该索引值2对应的内容为转发表项索引号2和虚拟聚合组,则根据该流量的信息通过链路聚合路由哈希算法进行哈希运算。
当通过第二哈希算法运算的哈希结果为1时,匹配到虚拟聚合组中的虚拟聚合组索引1,该虚拟聚合组索引1对应的内容为芯片ID1,将该流量以及第一哈希算法中获取的转发表项索引号2,分配到芯片ID1上。该网络设备根据转发表项索引号2在芯片1上查找转发表项2,并通过转发表项2中路由1的出端口和封装信息转发该流量。
当通过第二哈希算法运算的哈希结果为2或3时,匹配到虚拟聚合组中的虚拟聚合组索引2或虚拟聚合组索引3,该虚拟聚合组索引2或虚拟聚合组索引3对应的内容为芯片ID2,将该流量以及路由2的信息中的转发表项索引号2,分配到路由2的信息中的芯片ID2上。该网络设备根据转发表项索引号2在芯片2上查找,并通过转发表项2中的路由2的出端口和封装信息转发该流量。
对于分配到路由1上的流量包括通过第一哈希算法运算分配来的流量和通过第二哈希算法运算分配来的流量。因此分配到路由1上的流量为总流量的一半,分配到路由2上的流量为总流量的一半。最终路由1和路由2之间的流量比为1:1,从而达到了流量均衡分担的效果。
本发明具体实施例中基于同样的发明构思,还提出一种网络设备,该网络设备将等价路由的每个下一跳分布于一个芯片。参见图3,图3为本发明具体实施例中应用于上述技术的网络设备的结构示意图。该网络设备包括:第一处理单元301、接收单元302和第二处理单元303。
第一处理单元301,用于当分配到该等价路由的各个下一跳上的流量不均衡时,获取总流量的平均值,将分配的流量大于平均值的该等价路由的下一跳的信息中的出口信息,配置为虚拟聚合组,与分配的流量小于平均值的该等价路由的下一跳的出口信息关联;该信息包括芯片标识ID。
接收单元302,用于当接收流量。
第二处理单元303,用于当接收单元302接收到流量时,将该流量分配到通过第一哈希算法匹配到的等价路由的下一跳,获取匹配到的下一跳的信息,当该下一跳的信息中的出口信息为第一处理单元301配置的虚拟聚合组时,通过第二哈希算法匹配,重新获取一个该等价路由下一跳所在的芯片的芯片ID,并将该流量分配给重新获取的芯片ID对应的芯片进行转发。
较佳地,
第一处理单元301,用于当该等价路由的N个下一跳为路由1到路由N,且该N个下一跳上分配的流量比为X1:X2:…:XN,,X1、X2、…、XN为整数,且不全相同,获取总流量的平均值为Q=(X1+X2+…+XN)/N时,遍历分配的流量大于平均值的等价路由的下一跳,当遍历到路由m时,将该路由m的出口信息配置为虚拟聚合组,该虚拟聚合组包含Xm个索引值,其中,Q个索引值对应的内容均为实现路由m的芯片的芯片ID,Xm-Q个索引值对应的内容为实现分配的流量小于平均值的等价路由的下一跳的芯片的芯片ID,其中,m为不小于1且不大于N的整数。
较佳地,
若所述Xm-Q个索引值对应的内容为实现分配的流量小于平均值的等价路由的下一跳路由i的芯片的芯片ID,且Q-Xi小于Xm-Q时,将Q-Xi个索引值指向实现分配的流量小于平均值的等价路由的下一跳路由i的芯片的芯片ID,将Xi+Xm-2Q个索引值指向其他实现分配的流量小于平均值的等价路由的下一跳的芯片的芯片ID,其中,i为不等于m,不小于1且不大于N的整数。
较佳地,
第一处理单元301,获取匹配到的下一跳的信息还包括转发表项索引号。
第二处理单元303,进一步用于当该等价路由的N个下一跳上分配的流量比为X1:X2:…:XN时,在所述Xm-Q个索引值对应的内容为实现分配的流量小于平均值的等价路由的下一跳的芯片上,将第一处理单元301获取的路由m的信息中的转发表项索引号对应的转发表项的内容填充为本芯片实现的该等价路由的下一跳的出端口和封装信息。
较佳地,
第二处理单元303,用于将该流量以及通过第一哈希算法匹配到的下一跳的信息中的转发表项索引号,分配给重新获取的芯片ID对应的芯片,并根据分配的转发表项索引号在该芯片上查找到对应的转发表项,根据转发表项中的出端口和封装信息转发该流量。
上述实施例的单元可以集成于一体,也可以分离部署;可以合并为一个单元,也可以进一步拆分成多个子单元。
综上所述,本发明具体实施例中在通过第一哈希算法实现等价路由分担的模式下,当分配到该等价路由的各个下一跳上的流量不均衡时,将等价路由和虚拟聚合结合,能够实现等价路由的流量均衡分担。
本发明在具体实施例中通过等价路由和聚合相结合,可以突破硬件资源的限制,实现等价路由的流量分担更加均匀。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。