一种负载分担方法和相关装置与流程
未命名
07-27
阅读:109
评论:0
一种负载分担方法和相关装置
1.本技术要求于2022年01月14日提交的申请号为202210041176.6、发明名称为“一种负载分担方法和相关装置”的中国专利申请的优先权,其全部内容通过引用结合在本技术中。
技术领域
2.本技术涉及通信技术领域,特别涉及一种负载分担方法和相关装置。
背景技术:
3.在进行人工智能(artificial intelligence,ai)计算时,数据中心中的架顶(top of rack,tor)交换机负责将本地服务器产生的数据流通过脊(spine)交换机转发给其他交换机连接的远端服务器。tor交换机上配置有多个出接口,多个出接口分别连接多个spine交换机中的一个spine交换机,形成多条路径。基于此,tor交换机在接收到本地服务器发送的数据流时,需要从这多条路径中选择一条路径发送该数据流,以实现多条路径之间的负载分担。
技术实现要素:
4.本技术提供了一种负载分担方法和相关装置,可以提升各条路径之间的负载均衡性,以避免网络拥塞。
5.第一方面,提供了一种负载分担方法。在该方法中,网络设备接收第一数据流,获取第一数据流对应的多条等价路径。该网络设备从多条等价路径中确定目标路径,通过目标路径转发第一数据流。
6.其中,目标路径为多条等价路径中满足预设条件的路径,预设条件包括:转发的数据流的数量最少,且每条数据流中的报文间隔小于设定时间间隔;或,负载对应的负载等级为当前允许的最轻负载等级,每条等价路径的负载等级是根据当前等价路径的负载以及多条等价路径的历史负载确定的。
7.在本技术中,目标路径可以通过各条等价路径转发的数据流的数量来确定,也可以通过各条等价路径的负载对应的负载等级来确定。
8.当目标路径通过各条等价路径转发的数据流的数量来确定时,由于等价路径转发的数据流的数量在等价路径发送数据流之后便可立即更新,相对于通过各条等价路径的负载来确定目标路径,该方法无需确定各条等价路径的负载,从而避免了由于确定的负载不能及时显现真实负载所带来的问题。换句话说,相对于通过各条等价路径的负载来被动地进行负载均衡,该方法基于各条等价路径转发的数据流的数量来主动进行负载分担,从源头上保证负载均衡性。
9.当目标路径通过各条等价路径的负载对应的负载等级来确定时,由于负载对应的负载等级为当前允许的最轻负载等级,且每条等价路径的负载等级是根据当前等价路径的负载以及多条等价路径的历史负载确定的。也即,本技术以历史负载为参考对象,确定等价
路径的负载对应的负载等级。相对于以固定的负载阈值为参考对象确定等价路径的负载对应的负载等级,以历史负载为参考对象,可以在等价路径的负载相对于历史负载发生变化时,相应调整等价路径对应的负载等级,相应地基于各条等价路径确定出的目标路径会随之调整,从而实现在等价路径的负载发生变化时,能够快速调整当前的负载均衡策略。换句话说,在目标路径通过各条等价路径的负载对应的负载等级来确定的方案中,当等价路径的负载变化时,网络设备能快速感知到该等价路径的负载变化,从而能够快速调整当前的负载均衡策略。
10.可选地,每条等价路径的负载等级是根据当前等价路径的负载以及负载等级表确定的,负载等级表指示n个负载阈值,n个负载阈值是根据多条等价路径的历史负载确定的,历史负载为多条等价路径之间的负载均衡度达到目标负载均衡度时的负载,负载均衡度为多条等价路径中负载之间的差值低于第一差值阈值的等价路径所占的比例,n大于等于1。
11.为了能够实现以历史负载为参考对象,确定等价路径的负载对应的负载等级,在本技术中,可以根据历史负载确定负载等级表所指示的负载阈值,从而基于确定的负载阈值配置负载等级表。并且,由于负载等级表中的n个负载阈值是根据多条等价路径的历史负载确定的,且该历史负载为多条等价路径之间的负载均衡度达到目标负载均衡度时的负载,因此,通过负载等级表进行负载分担时,能够更有效地利用负载较轻的路径,实现当前多条路径之间的负载均衡。
12.可选地,在该方法中,还可以确定多条等价路径的当前负载;基于多条等价路径的当前负载确定多条等价路径的负载均衡度;如果确定的负载均衡度低于目标负载均衡度,则调整负载等级表,并返回执行确定多条等价路径的当前负载的操作,直至最近一次确定的负载均衡度超过目标负载均衡度。
13.本技术还可以结合各条等价路径的当前负载更新负载等级表,以提升后续基于负载等级表进行负载分担后各条等价路径之间的负载均衡性。
14.可选地,调整负载等级表的实现过程可以为:基于多条等价路径的当前负载,将多条等价路径聚类为m个负载分担组,每个负载分担组包括至少一条等价路径,m大于等于1;基于每个负载分担组中的等价路径的当前负载,确定与每个负载分担组对应的负载阈值,得到与m个负载分担组一一对应的m个负载阈值,根据m个负载阈值更新负载等级表。例如,将负载等级表中的n个负载阈值替换为该m个负载阈值。
15.通过对多条等价路径进行聚类,将负载基本相同的等价路径聚类为一个负载分担组。然后将负载阈值重新配置在每个负载分担组中的等价路径的当前负载附近,从而实现对负载等级表的更新。如此在后续基于更新后的负载等级表进行负载分担时,如果某条等价路径的当前负载相对于之前的负载发生变化时,由于负载阈值基本在该等价路径之前的负载左右,因此会随之调整该等价路径的当前负载对应的负载等级,从而触发对当前负载均衡策略的调整,以提升各条等价路径之间的负载均衡性。
16.可选地,基于每个负载分担组中等价路径的当前负载,确定与每个负载分担组对应的负载阈值的实现过程可以为:将每个负载分担组中等价路径的当前负载中的最大负载,作为与负载分担组对应的负载阈值。
17.该实现过程同样是为了网络设备能够快速感知等价路径的负载变化,以快速调整负载均衡策略,从而提升各条等价路径之间的负载均衡性。
18.可选地,基于多条等价路径的当前负载,将多条等价路径聚类为至少一个负载分担组的实现过程可以为:每间隔采样周期采集一次多条等价路径中每条等价路径的负载;在每次获取到当前采样周期采集的每条等价路径的负载时,基于滑动权重确定每条等价路径的滑动平均负载;基于多条等价路径中每条等价路径的滑动平均负载,对多条等价路径进行聚类,得到x个等价路径簇,x大于等于1;如果x个等价路径簇中的至少一个等价路径簇不满足目标条件,则增大滑动权重和/或减小采样周期的时长,并返回执行每间隔采样周期采集一次多条等价路径中每条等价路径的负载,直至最近一次聚类后得到m个等价路径簇满足目标条件,则将m个等价路径簇作为m个负载分担组。
19.其中,目标条件为:不同等价路径簇中任意两条等价路径的滑动平均负载之间的距离超过距离阈值。
20.对于任意两个不同的等价路径簇,如果这两个等价路径簇中任意两条等价路径的滑动平均负载之间的距离超过该距离阈值,则表明不同等价路径簇之间距离的较远,此时聚类结果达到预期聚类结果。相应地,如果这两个等价路径簇中存在两条等价路径的滑动平均负载之间的距离低于该距离阈值,则表明这两个等价路径簇之间距离的较近,此时聚类后的各个等价路径簇并没有很好分开。因此,需要重新进行聚类。基于此,上述聚类的实现过程能够实现聚类结果达到预期聚类结果。
21.可选地,在该方法中,如果x个等价路径簇满足目标条件,则减小滑动权重和/或增大采样周期的时长,并返回执行每间隔采样周期采集一次多条等价路径中每条等价路径的负载,直至最近一次聚类后的至少一个等价路径簇不满足目标条件,则将倒数第二次聚类后的m个等价路径簇作为m个负载分担组。
22.如果x个等价路径簇满足目标条件,表明第一次聚类之后的效果已达到预期聚类效果。这种场景下,如果当前聚类效果非常好,则表明之前设置的滑动权重过大或采样周期的时长过小。如果在下一次更新负载等级表时直接基于该滑动权重或采样周期的时长确定等价路径的当前负载,确定该等价路径的当前负载的数据处理量会较多。因此,通过上述实现过程,可以使得最终完成聚类时所使用的滑动权重和采样周期的时长刚刚满足聚类要求即可,而不至于滑动权重过大或采样周期的时长过小。
23.可选地,基于滑动权重确定每条等价路径的滑动平均负载的实现过程可以为:获取等价路径的历史滑动平均负载,历史滑动平均负载是基于当前采样周期的上一个采样周期采集的负载确定的;如果当前采样周期采集的等价路径的负载超过等价路径的历史滑动平均负载、且与等价路径历史滑动平均负载之间的差值超过第二差值阈值,则基于第一滑动权重和历史滑动平均负载确定等价路径的滑动平均负载;如果当前采样周期采集的等价路径的负载低于等价路径的历史滑动平均负载,则基于第二滑动权重和历史滑动平均负载确定等价路径的滑动平均负载。其中,第二滑动权重大于第一滑动权重。
24.在本技术中,在基于滑动权重确定每条等价路径的滑动平均负载时,还提供了一种不同阶段采用不同滑动权重的方案,目的在于能够使得等价路径的真实负载快速显现在确定的滑动平均负载中。
25.可选地,如果当前采样周期采集的等价路径的负载低于等价路径的历史滑动平均负载,则基于第二滑动权重和历史滑动平均负载确定等价路径的滑动平均负载的实现过程可以为:如果当前采样周期采集的等价路径的负载低于等价路径的历史滑动平均负载,且
负载连续下降次数不超过目标次数,则基于第二滑动权重和历史滑动平均负载确定等价路径的滑动平均负载,负载连续下降次数为采样周期采集的负载连续小于相应历史滑动平均负载时的连续采样周期的数量。
26.相应地,如果当前采样周期采集的等价路径的负载低于等价路径的历史滑动平均负载,且负载连续下降次数超过目标次数,则基于第三滑动权重和历史滑动平均负载确定等价路径的滑动平均负载。其中,第三滑动权重小于第二滑动权重。
27.如果当前采样周期采集的等价路径的负载低于等价路径的历史滑动平均负载,该等价路径转发的数据流可能处于流量稳定阶段,也可以处于流量降低或停止阶段。如果等价路径转发的数据流处于流量降低或停止阶段,通过上述实现过程可以让滑动权重设置的小一点,这样确定的滑动平均负载相较于历史滑动平均负载,也会出现一个快速下降的现象,从而使得数据流流量降低或停止阶段时等价路径的负载情况真实体现在确定的滑动平均负载中。
28.可选地,多条等价路中的每条等价路径的负载是通过以下方式获得的:获取等价路径的第一负载,第一负载为接收第一数据流之前最近一次采样周期采集的等价路径的负载;如果第一负载小于负载阈值,则获取在该最近一次采样周期的上一采样周期内从等价路径发送的第二数据流的流量大小,将第二数据流的流量大小叠加在第一负载上,得到等价路径的负载。
29.如果第一负载小于负载阈值,表明该等价路径转发的数据流处于刚启动阶段,此时可以将当前时间之前该等价路径转发的数据流的大小叠加到采集的负载上,从而避免在流量刚启动时,确定的该等价路径的负载过小,进而引发后续负载分担不均匀的问题。
30.可选地,当目标路径包括y条等价路径时,在通过目标路径转发第一数据流之后,如果接收第三数据流,且第三数据流对应目标路径,则还可以从y条等价路径中通过轮询方式选择与一条等价路径;通过选择的等价路径发送第三数据流。
31.为了避免将第一数据流和第三数据流发送至y条等价路径中的同一等价路径从而造成流量拥堵,对于第三数据流,可以从y条等价路径中通过轮询方式选择与一条等价路径,通过选择的等价路径发送第三数据流。
32.可选地,从多条等价路径中确定目标路径的实现过程可以为:获取多条等价路径中每条等价路径对应的数据流数量,该数据流数量指示相应等价路径转发的数据流的数量;将多条等价路径中对应的数据流数量最少的等价路径作为目标路径。相应地,在该方法中,还可以增加与目标路径对应的数据流数量。
33.在通过目标路径转发第一数据流后,还可以更新目标路径对应的数据流数量,以便于后续基于更新后的数据流数据进行负载分担,从而提升各条等价路径之间的负载均衡性。
34.可选地,在该方法中,通过目标路径转发第一数据流之后,还可以确定当前时间之前最近一次接收到属于第一数据流的报文的时间;如果当前时间之前最近一次接收到属于第一数据流的报文的时间,与当前时间之间的差值超过设定时间间隔,则减少目标路径对应的数据流数量。
35.随着通信时间的增加,各条等价路径对应的数据流数量是越来越大的。如果记录的各条等价路径对应的数据流数量不能表征最近一段时间各条等价路径转发的数据流数
量,这种情况下基于各条等价路径对应的数据流数量进行负载分担并不能很好地提升负载均衡性。因此,在本技术中,还设置有设定时间间隔(也即老化时间),该设定时间间隔用于老化流表中各条等价路径对应的数据流数量。
36.可选地,在该方法中,通过目标路径转发第一数据流之后,还可以获取当前时间与起始发送时间之间的差值,起始发送时间为首次通过目标路径转发属于第一数据流的报文的时间;如果当前时间与起始发送时间之间的差值超过路径切换间隔,则获取当前时间之前通过目标路径转发的第一数据流的流量大小;如果当前时间之前转发的第一数据流的流量大小超过目标数值,则从多条等价路径中选择替换路径,替换路径与目标路径为不同的等价路径;通过替换路径继续发送第一数据流,并增加替换路径对应的数据流数量,减少目标路径对应的数据流数量。
37.在本技术中,如果一条大流的全部报文在同一等价路径上转发,若由于该大流引发该等价路径拥堵,则该等价路径拥堵时间持续较长。为了避免该情况发生,还可以设置路径切换间隔,通过路径切换间隔切换大流的转发路径。
38.可选地,路径切换间隔大于路径时延差,路径时延差为第一路径时延和第二路径时延之间的差值,第一路径时延为通过第一路径发送报文所需的时长,第二路径时延为通过第二路径发送报文所需的时长,第一路径和第二路径为从第一数据流的源地址至目的地址的两条不同路径。
39.当路径切换间隔大于路径时延差时,大流即使通过上述方式换路也不会引发乱序。
40.可选地,在该方法中,在获取多条等价路径中每条等价路径对应的数据流数量之后,如果与每条等价路径对应的数据流数量均达到目标数量,则通过轮询方式从多条等价路径中选择一条等价路径作为目标路径。
41.如果与每条等价路径对应的数据流数量均达到目标数量,则表明当前用于记录数据流数量的流表的大小已经达到流表的规格,此时则通过轮询方式从多条等价路径中选择一条等价路径作为目标路径。以实现在流表大小达到规格所允许大小时,通过轮询的方式,将数据流均匀分配到各条等价路径上。
42.第二方面,提供了一种网络设备,所述网络设备具有实现上述第一方面中负载分担方法行为的功能。所述网络设备包括接收模块、发送模块和处理模块,接收模块和发送模块用于实现上述第一方面所提供的负载分担方法中收发相关操作,处理模块用于实现上述第一方面所提供的负载分担方法中的数据处理操作。
43.第三方面,提供了一种网络设备,所述网络设备的结构中包括处理器和存储器,所述存储器用于存储支持网络设备执行上述第一方面所提供的负载分担方法的程序,以及存储用于实现上述第一方面所提供的负载分担方法所涉及的数据。所述处理器被配置为用于执行所述存储器中存储的程序。所述存储设备的操作装置还可以包括通信总线,该通信总线用于该处理器与存储器之间建立连接。
44.第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面所述的负载分担方法。
45.第五方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面所述的负载分担方法。
46.上述第二方面、第三方面、第四方面和第五方面所获得的技术效果与第一方面中对应的技术手段获得的技术效果近似,在这里不再赘述。
附图说明
47.图1是本技术实施例提供的一种ai计算组网的架构示意图;
48.图2是本技术实施例提供的一种ai计算通信模型示意图;
49.图3是本技术实施例提供的一种负载等级示意图;
50.图4是本技术实施例提供的一种滑动平均负载的确定方法示意图;
51.图5是本技术实施例提供的一种路径过载示意图;
52.图6是本技术实施例提供的一种负载统计结果示意图;
53.图7是本技术实施例提供的一种dlb系统的架构示意图;
54.图8是本技术实施例提供的一种负载分担方法;
55.图9是本技术实施例提供的一种负载分担方法流程图;
56.图10a-图10c是本技术实施例提供的一种调整负载等级表的过程示意图;
57.图11是本技术实施例提供的一种基于快升慢降的分段函数确定的等价路径的负载曲线示意图;
58.图12是本技术实施例提供的一种自适应调整负载阈值的流程示意图;
59.图13是本技术实施例提供的一种调整后的负载阈值的示意图;
60.图14是本技术实施例提供的一种采样周期内采用轮询方式选路的示意图;
61.图15是本技术实施例提供的一种负载分担方法流程图;
62.图16是本技术实施例提供的一种网络设备的结构示意图;
63.图17是本技术实施例提供的另一种网络设备的结构示意图。
具体实施方式
64.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合附图对本技术实施方式作进一步地详细描述。
65.在对本技术实施例进行详细解释说明之前,先对本技术实施例的应用场景进行解释说明。
66.目前网络中诸如交换机等转发节点通常配置有多个出接口,不同出接口对应不同的报文转发路径。为了避免某条路径发生流量拥堵,转发节点在转发报文时,需要从不同的路径中选择一个当前时间负载最轻的路径发送该报文,该过程即为负载分担。负载分担的目的是为了实现各条路径之间的负载均衡,避免网络拥塞。
67.下面以ai计算组网为例对网络中的负载分担过程进行解释说明。
68.图1是本技术实施例提供的一种ai计算组网的架构示意图。如图1所示,ai计算组网中包括服务器(server)101,tor交换机102以及脊(spine)交换机103。服务器101和tor交换机102之间通过有线或无线方式连接以进行通信,tor交换机102和脊交换机103之间也通过有线或无线方式连接以进行通信。
69.其中,ai计算组网中的服务器101、tor交换机102以及脊交换机103的数量可以为任意数量。图1中示例地包括两个tor交换机102、每个tor交换机102连接有4个服务器101,
且每个tor交换机102与两个脊交换机103连接。
70.此外,每个服务器101挂载多个图形处理单元(graphics processing unit,gpu),每个服务器101和所连接的tor交换机102之间有多条路径,每条路径和该服务器上的一个gpu对应,用于传输该gpu产生的数据流。示例地,如图1所示,每个服务器101挂载有8个gpu,因此每个服务器101和tor交换机102之间有8条路径。这8条路径的带宽示例地可以为100千兆比特每秒(gbps),也即,一个服务器101和所连接的tor交换机102之间的路径的总带宽为8*100gbps。
71.此外,每个tor交换机和多个脊交换机103分别连接,且每个tor交换机102和任一脊交换机103之间有多条等价路径。示例地,在图1中,每个tor交换机102和2个脊交换机103分别连接,每个tor交换机102和任一脊交换机103之间有16条带宽为100gbps的等价路径,也即,一个tor交换机102和一个脊交换机103之间的等价路径的总带宽为16*100gbps。这种场景下,每个tor交换机102有32个出接口,每个出接口对应一条通往脊交换机103的等价路径。
72.图1中的各个服务器上的gpu组成进行ai计算的gpu集群。其中,gpu集群中的gpu是按照计算阶段和通信阶段轮流交替的方式工作,计算阶段为gpu生成数据流的过程,通信阶段为gpu向tor交换机发送数据流的过程。其中,计算阶段和通信阶段轮流交替包括:预先配置第一时长和第二时长,在gpu集群进行ai计算时,gpu轮流进行第一时长的计算阶段和第二时长的通信阶段。换句话说,gpu当前时间要么处于计算阶段,要么处于通信阶段。
73.图2是本技术实施例提供的一种ai计算通信模型示意图。如图2所示,在该ai计算通信模型中,各个gpu轮流进行9ms的计算阶段和10ms的通信阶段。
74.对于图1所示的组网,假设每个gpu计算阶段中产生两条数据流,这样在通信阶段每个tor交换机102将接收到64条数据流,而每个tor交换机102只有32条等价路径(每条等价路径对应tor交换机上的一个出接口)。对于任一tor交换机102,该tor交换机102接收的64条数据流需要在32条等价路径上进行负载分担。
75.在上述负载分担的场景中,对于任一tor交换机102,该64条数据流之间的发送时间差为100微秒(us)级别,因此这64条数据流的并发性(或同步性)很高。此时,如果tor交换机102和脊交换机103之间出现了负载分担不均匀的问题,很容易出现tor交换机102和脊交换机103之间的某条等价路径发生流量拥堵,从而将导致ai计算性能下降。
76.本技术实施例提供的方法可应用于ai计算组网进行负载分担的场景中。可选地,本技术实施例提供的方法也可以应用在其他需要进行负载分担的场景,在此不再一一举例说明。
77.为了便于后续理解本技术实施例的技术效果,下面对基于固定负载等级表进行负载分担的技术进行分析。其中,固定负载等级表中的负载等级是基于预先设置多个固定的负载阈值配置的。
78.图3是本技术实施例提供的一种负载等级示意图。如图3所示,基于预先配置多个固定的负载阈值划分了多个负载等级。在图3中,配置了7个负载阈值,分别标记为阈值1、阈值2、阈值3、阈值4、阈值5、阈值6以及阈值7。这七个阈值逐渐增大。其中,小于阈值1的负载范围对应的负载等级为7级,阈值1和阈值2之间的负载范围对应的负载等级为6级,阈值2和阈值3之间的负载范围对应的负载等级为5级,阈值3和阈值4之间的负载范围对应的负载等
级为4级,阈值4和阈值5之间的负载范围对应的负载等级为3级,阈值5和阈值6之间的负载范围对应的负载等级为2级,阈值6和阈值7之间的负载范围对应的负载等级为1级,大于阈值7的负载范围对应的负载等级为0级。
79.基于各条等价路径的平均负载确定各条等价路径的负载等级,然后在需要负载分担时,选择当前负载最轻(本实施例中是负载等级编号最大,在其他的实施例中,也可以是负载等级编号最小)的等价路径进行负载分担。
80.由于各条等价路径的平均负载通常采用滑动平均的方式来确定,也即各条等价路径的平均负载为滑动平均负载,而滑动平均负载是采用当前时间之前若干个采样周期采集的负载进行滑动平均化处理得到,如此在数据流通过tor交换机的某条等价路径的刚开始阶段中,统计得到的该等价路径的滑动平均负载是逐渐变大的,在数据流通过该等价路径若干个周期后,统计得到的该等价路径的平均负载才能表征该等价路径的真实负载。也即,在数据流通过该等价路径时,统计得到的该等价路径的滑动平均负载不能快速地反馈该等价路径的真实负载,进而导致基于统计得到的滑动平均负载进行负载分担时,容易出现分担不均匀的问题。
81.图4是本技术实施例提供的一种滑动平均负载的确定方法示意图。如图4所示,滑动平均负载是采用当前时间之前最近的8个采样周期采集的负载确定的,每个采样周期为16μs。具体地,在数据流通过某条等价路径时,每间隔16μs统计一次这16μs内通过该等价路径的数据流的大小,得到该等价路径在每个采样周期的负载,在得到当前采样周期采集的负载时,便可结合前面7个采样周期采集的负载,确定该等价路径的滑动平均负载。
82.如此,在第一个采样周期内采集到该等价路径的负载时,标记为负载1,由于当前时间之前还没采集该等价路径的负载,此时则默认当前时间之前采样周期采集到的负载为0,此时计算得到的8个采样周期的滑动平均负载比该等价路径的真实负载要小,在8个采样周期(128μs)后,计算得到的滑动平均负载才能接近该等价路径的真实负载,也即该等价路径的真实负载至少要128μs以上才能完全体现。
83.上述滑动平均负载的确定过程很容易出现图5所示的路径过载的问题。如图5所示,当tor交换机接收到60gbps的数据流1时,基于当前的负载等级选择等价路径1发送数据流1。在之后较短的时间内tor交换机又接收到60gbps数据流2,这种场景下,如果数据流1对应的负载还未真实体现到等价路径1的滑动平均负载中(图5中采集到的等价路径1的负载为4gbps),则基于当前的负载等级还会选择等价路径1发送数据流2。这样将导致同时通过等价路径1发送数据流1和数据流2,而数据流1和数据流2的总流量大小为120gbps,超出了等价路径1的带宽100gbps,从而引发等价路径1发生拥堵。也即,出现了同时发送的大数据流无法负载分担均匀的问题。
84.此外,由于是基于各条等价路径的已发送数据流的平均负载进行负载分担的,如果当前已经出现了各条等价路径的负载不均匀的问题,则根据已产生的负载不均匀的结果,被动地调整各条等价路径的负载等级,这种调整速度慢,只能暂时缓解各条等价路径的负载不均匀性。
85.此外,当首次通过某条等价路径发送大的数据流后,后续该数据流的报文均通过该等价路径发送,这样若有多条大的数据流同时通过某条等价路径发送进而导致负载分担不均匀的情况,该情况的持续时间将比较长。也即,大流等价路径选定之后,不可修改,只能
一直使用该等价路径,一旦多条大流出现负载分担不均匀的情况,持续时间长。
86.基于上述分析可知,基于固定负载等级表进行负载分担的技术容易出现以下问题:
87.1)由于等价路径的负载显现过慢,导致识别出流的真实负载的时间过慢。
88.2)由于负载等级是基于多个固定的负载阈值确定的,导致一条数据流在通过某条等价路径发送时,该等价路径对应的负载等级可能横跨多个负载等级。比如图6所示的负载统计结果中,两条数据流通过同一等价路径先后发送,每条数据流通过该等价路径时,该等价路径的负载等级均横跨4个负载等级。如果不同等价路径的负载统计结果均呈现图6所示的结果,这样在同一时间不同等价路径的负载等级也可能同时包括4个等级,如此在进行负载分担时会将不同等价路径划分4组,从负载等级最高的一组中选择一条等价路径发送报文,这样将导致能够发送报文的接口的数量成倍下降。比如,对于图1所示的包括32条等价路径的tor交换机,在将等价路径划分为4组之后,能够选择的等价路径为8个,相对于从32条等价路径中选择目标路径,选择机会下降了4倍。
89.3)由于是被动地根据等价路径的负载进行选路调整(也即重新选择等价路径来转发数据流),将导致在做出选路调整时网络已经严重拥塞,此时即使切换新接收到的数据流的转发路径,只能缓解问题,而不能避免拥塞产生。
90.4)大的数据流在整个生命周期中均采用同一条等价路径,这样将导致一旦出现大的数据流所选的等价路径拥堵,该等价路径的拥堵情况的持续时间较长,导致业务的中断。
91.基于此,本技术实施例提供了一种负载分担方法,以解决上述负载分担过程产生的问题。
92.本技术实施例提供的负载分担方法包括两个方面。第一方面是基于转发节点的历史负载来配置负载阈值,这样当等价路径的负载相较于历史负载发生变化时,会相应调整该等价路径的负载等级,如此转发节点便可快速感知到等价路径的负载变化。第二方面是基于各条等价路径已发送的数据流的数量进行负载分担,从源头上保证负载均衡性。这两方面的内容将在后续实施例中详细说明。
93.为了实现本技术实施例提供的负载分担方法,本技术实施例还提供了一种动态负载均衡(dynamic load balance,dlb)系统。该dlb系统可以部署到任意转发节点上,以实现该转发节点上各条等价路径之间的负载均衡。示例地,该dlb系统可以部署到图1所示的tor交换机中,以实现ai计算中的负载均衡。
94.图7是本技术实施例提供的一种dlb系统的架构示意图。如图7所示,该dlb系统包括多个功能模块。其中,图7中包括了三类功能模块,一类是新增模块(图7中深灰色标记的方框),一种是在原有功能模块改进后的功能模块(图7中浅灰色标记的方框),一种是原有功能模块(图7中白色标记的方框)。
95.下面对新增或改进的功能模块的功能介绍。
96.1)负载分析模块:该功能模块为新增功能模块,用于分析等价路径的负载,根据等价路径的负载,确定出合适的负载阈值。
97.2)平均负载计算模块:该功能模块为在原有功能模块上改进的模块,用于计算等价路径的平均负载,本技术实施例会修改平均负载的计算算法,以加速负载显现。
98.3)选路模块:该功能模块为在原有功能模块上改进后的模块,用于使用一定的算
法,从一组等价路径选择一条等价路径,该功能模块做了一些改进以在某些场景下采用轮询(round-robin)方式而不是随机(random)方式选择等价路径,后续实施例有详细说明。
99.4)流表模块:该功能模块为在原有功能模块上改进的模块,用于记录数据流的等价路径信息、时间戳信息等。该功能模块中增加对数据流的识别功能和数据流的大小的统计功能,以在计算平均负载时,能够将历史统计的数据流的大小直接叠加到等价路径的负载上,以加快负载显现。
100.下面对本技术实施例提供的方法进行详细解释说明。
101.图8是本技术实施例提供的一种负载分担方法。该方法应用于任意转发节点,后续实施例以第一节点为例进行说明。如图8所示,该负载分担方法包括如下步骤801至804。
102.步骤801:第一节点接收第一数据流。
103.第一节点接收第一数据流是指:第一节点接收到属于第一数据流的报文。其中,报文中携带有报文所属的数据流的标识,因此第一节点在接收到报文时,便可基于报文中携带的数据流的标识确定出当前所接收到的数据流为哪一条数据流。
104.步骤802:第一节点获取第一数据流对应的多条等价路径。
105.第一数据流对应的多条等价路径是指:从第一节点到第二节点的多条路径,第二节点为第一节点转发第一数据流的下一跳。基于此,第一数据流对应的多条等价路径的确定方式可以为:第一节点确定转发第一数据流的下一跳,然后确定第一节点上能够到达该下一跳的多个出接口,并将多个出接口中每个出接口作为一条等价路径。
106.示例地,对于图1所示的ai组网,tor交换机在接收到本地gpu发送的第一数据流时,确定转发第一数据流的下一跳为脊交换机。由于tor交换机上配置有32个出接口用于向脊交换机发送流量,因此tor交换机可以确定出第一数据流对应的32条等价路径,该32条等价路径可以通过这32个出接口分别标识。
107.步骤803:第一节点从多条等价路径中确定目标路径,目标路径为多条等价路径中满足预设条件的路径,预设条件包括:转发的数据流的数量最少,且每条数据流中的报文间隔小于设定时间间隔;或,负载对应的负载等级为当前允许的最轻负载等级,每条等价路径的负载等级是根据当前等价路径的负载以及多条等价路径的历史负载确定的。
108.步骤804:第一节点通过目标路径转发第一数据流。
109.通过目标路径转发第一数据流,也即通过目标路径所对应的出接口转发第一数据流。
110.在本技术实施例中,目标路径可以通过各条等价路径转发的数据流的数量来确定。由于等价路径转发的数据流的数量在等价路径发送数据流之后便可立即更新,相对于通过各条等价路径的负载来确定目标路径,该方法无需确定各条等价路径的负载,从而避免了由于确定的负载不能及时显现真实负载所带来的问题。换句话说,相对于通过各条等价路径的负载来被动地进行负载均衡,该方法基于各条等价路径转发的数据流的数量来主动进行负载分担,可以从源头上保证负载均衡性。
111.此外,在本技术实施例中,目标路径还可以通过各条等价路径的负载对应的负载等级来确定。由于负载对应的负载等级为当前允许的最轻负载等级,且每条等价路径的负载等级是根据当前等价路径的负载以及多条等价路径的历史负载确定的。也即,以历史负载为参考对象,确定等价路径的负载对应的负载等级。相对于以固定的负载阈值为参考对
象确定等价路径的负载对应的负载等级,以历史负载为参考对象,可以在等价路径的负载相对于历史负载发生变化时,相应调整等价路径的负载对应的负载等级,相应地第一节点基于各条等价路径确定出的目标路径会随之调整,从而可以在等价路径的负载发生变化时,第一节点能够快速调整当前的负载均衡策略。换句话说,在目标路径通过各条等价路径的负载对应的负载等级来确定的方案中,当等价路径的负载变化时,第一节点能快速感知到该等价路径的负载变化,从而能够快速调整当前的负载均衡策略。
112.基于图8所示的实施例可知,第一节点在进行负载分担时,可以通过各条等价路径的负载对应的负载等级来确定目标路径,也可以通过各条等价路径转发的数据流的数量来确定目标路径。下面通过两个实施例对此进行详细解释说明。
113.图9是本技术实施例提供的一种负载分担方法流程图。该方法用于解释说明第一节点如何通过各条等价路径的负载对应的负载等级来确定目标路径。如图9所示,该方法包括如下步骤901至步骤904。
114.步骤901:第一节点接收第一数据流。
115.步骤902:第一节点获取第一数据流对应的多条等价路径。
116.步骤903:第一节点基于多条等价路径中每条等价路径的负载对应的负载等级,从多条等价路径中确定目标路径。其中,目标路径为多条等价路径中满足预设条件的路径,预设条件包括:负载对应的负载等级为当前允许的最轻负载等级,每条等价路径的负载等级是根据当前等价路径的负载以及多条等价路径的历史负载确定的。
117.步骤904:第一节点通过目标路径转发第一数据流。
118.其中,在步骤903中,每条等价路径的负载等级可以是根据该等价路径的负载以及负载等级表确定的,负载等级表指示n个负载阈值,n为大于或等于1的正整数。
119.其中,负载等级表指示n个负载阈值可以理解为:负载等级表中的负载等级是基于n个负载阈值确定的。具体地,将n个负载阈值按照大小顺序依次排列,基于排序后的n个负载阈值可以得到n+1个数值范围,n+1个数值范围包括排序后每相邻两个负载阈值之间的数值范围、大于最大的负载阈值的数值范围、以及小于最小的负载阈值的数值范围。对于这n+1个数值范围可分别配置n+1个负载等级,即可得到负载等级表。其中,负载等级越大,负载等级对应的数值范围中的数值越小。
120.另外,负载等级也可称为负载分担等级。基于此,负载等级表中负载分担等级和负载阈值之间的对应关系可以参考图3,在此不再重复说明。
121.在本技术实施例中,负载等级表所指示的n个负载阈值是根据多条等价路径的历史负载确定的,该历史负载为多条等价路径之间的负载均衡度达到目标负载均衡度时的负载。其中,负载均衡度为多条等价路径中负载之间的差值低于第一差值阈值的等价路径所占的比例。
122.第一差值阈值为配置的数值。示例地,第一差值阈值为一个较小的数值,若两条等价路径之间的负载差值低于第一差值阈值,则可认为这两条等价路径的负载基本相同。
123.另外,目标负载均衡度也为配置的数值。示例地,目标负载均衡度为一个接近1的数值,比如90%或95%。基于此,当多条等价路径之间的负载均衡度超过目标负载均衡度时,则可认为多条等价路径中大部分等价路径之间的负载基本相同,也即多条等价路径之间实现了负载均衡。
124.由于负载等级表所指示的n个负载阈值是根据多条等价路径的历史负载确定的,且该历史负载为多条等价路径之间的负载均衡度达到目标负载均衡度时的负载。因此,通过负载等级表进行负载分担时,能够更有效地利用负载较轻的路径,实现当前多条路径之间的负载均衡。
125.以图2所示的ai计算通信模型为例进行说明。假设负载等级表所指示的n个负载阈值是基于从左到右第一个10ms的通信阶段中tor交换机向spine交换机发送的流量确定的,则在第二个10ms的通信阶段中,tor交换机可直接使用该负载等级表进行负载分担,从而提升tor交换机上32个出接口对应的32条等价路径之间的负载均衡性。
126.需要说明的是,在图2所示的ai计算通信模型中,每一轮的通信阶段中gpu产生的数据流和上一轮通信阶段中gpu产生的数据流的大小基本相同,也即,ai计算通信模型中数据流的大小具有重复出现的特点。基于此,通过图9所示的实施例,在每一轮的通信阶段中,直接使用基于上一轮通信阶段的流量确定的负载等级表进行负载分担,以提升当前这一轮通信阶段中各条等价路径之间的负载均衡性。
127.也即,对于图1所示的ai组网,图9实施例中的第一节点为tor交换机,第一节点挂载有多个服务器,这多个服务器中每个服务器配置有多个gpu,多个gpu用于进行ai计算。第一节点用于将多个gpu产生的数据流发送至第二节点,第二节点为脊(spine)交换机。这种场景下,步骤903中的历史负载具体可以理解为:在多个gpu距离当前时间最近一轮与tor交换机之间的通信阶段中,tor交换机上的多条等价路径之间的负载均衡度达到目标负载均衡度时,这多条等价路径的负载。
128.此外,在第一节点通信阶段中,还可以结合各条等价路径的当前负载更新负载等级表,以提升后续基于更新后的负载等级表进行负载分担时各条等价路径之间的负载均衡性。
129.示例地,对于图2所示的ai计算通信模型,在每一轮的通信阶段中,使用基于上一轮通信阶段确定的负载等级表进行负载分担之后,还可以进一步结合当前各条路径的负载以及目标负载均衡度,更新负载等级表中的负载阈值(也即更新负载等级表),以使当前这一轮的通信阶段中各条路径之间的负载均衡度达到目标均衡度。后续在下一轮通信阶段可以使用这一轮更新后的负载等级表进行负载分担。
130.下面对如何更新负载等级表进行详细解释说明。
131.在本技术实施例中,更新负载等级表的实现过程可以为:确定多条等价路径的当前负载;基于多条等价路径的当前负载确定多条等价路径的负载均衡度;如果确定的负载均衡度低于目标负载均衡度,则调整负载等级表,并返回执行确定多条等价路径的当前负载的操作,直至最近一次确定的负载均衡度超过目标负载均衡度。
132.如果确定的负载均衡度低于目标负载均衡度,则表明通过当前的负载等级表进行负载分担之后,各条等价路径之间的负载均衡性不是很好,因此需要调整负载等级表,以提升各条等价路径之间的负载均衡性。
133.在本技术实施例中,调整负载等级表可以通过调整负载阈值来实现。基于此,在一种可能的实现方式中,调整负载等级表的实现过程可以为:基于多条等价路径的当前负载,将多条等价路径聚类为m个负载分担组,每个负载分担组包括至少一条等价路径,m大于等于1;基于每个负载分担组中的等价路径的当前负载,确定与每个负载分担组对应的负载阈
值,得到与m个负载分担组一一对应的m个负载阈值,根据m个负载阈值更新负载等级表。
134.其中,根据m个负载阈值更新负载等级表可以理解为:将m个负载阈值替换原来的n个负载阈值,然后重新基于m个负载阈值配置负载等级表中的各个负载等级,得到更新后的负载等级表。
135.通过对多条等价路径进行聚类,将负载基本相同的等价路径聚类为一个负载分担组。然后将负载阈值重新配置在每个负载分担组中的等价路径的当前负载附近,以实现对负载等级表的更新。如此在后续基于更新后的负载等级表进行负载分担时,如果某条等价路径的当前负载相对于之前的负载发生变化时,由于负载等级表中的负载阈值基本在该等价路径之前的负载左右,因此该等价路径对应的负载等级会随之调整,相应地第一节点会随之调整当前的负载均衡策略,以提升各条等价路径之间的负载均衡性。
136.换句话说,通过对多条等价路径聚类来调整负载阈值,进而基于调整后的负载阈值更新负载等级表,能够实现在按照更新后的负载等级表进行负载分担后,提升各条等价路径之间的负载均衡性,从而使得各条等价路径之间的负载均衡度达到目标负载均衡度。
137.其中,基于每个负载分担组中等价路径的当前负载,确定与每个负载分担组对应的负载阈值的实现过程可以为:将每个负载分担组中等价路径的当前负载中的最大负载,作为与该负载分担组对应的负载阈值。该实现过程同样是为了第一节点能够快速感知等价路径的负载变化,以快速调整负载均衡策略,从而提升各条等价路径之间的负载均衡性。
138.可选地,也可以确定每个负载分担组中等价路径的当前负载的平均值,将平均值作为与该负载分担组对应的负载阈值。或者,也可以对该负载分担组中等价路径的当前负载进行其他处理,以得到与该负载分担组对应的负载阈值,在此不再一一举例说明。
139.上述是基于各条等价路径的当前负载更新n个负载阈值。可选地,在另一种可能的实现方式中,可以在原来的n个负载阈值的基础上直接微调,比如上下波动下原来的n个负载阈值,从而完成更新原负载等级表。该实现方式操作较为简单,对应算法比较容易实现。
140.另外,本技术实施例还提供了针对多条路径聚类过程的详细方案,下面对此进行解释说明。
141.在一种可能的实现方式中,基于多条等价路径的当前负载,将多条等价路径聚类为至少一个负载分担组的实现过程可以为:每间隔采样周期采集一次多条等价路径中每条等价路径的负载;在每次获取到当前采样周期采集的每条等价路径的负载时,基于滑动权重确定每条等价路径的滑动平均负载;基于多条等价路径中每条等价路径的滑动平均负载,对多条等价路径进行聚类,得到x个等价路径簇;如果x个等价路径簇中的至少一个等价路径簇不满足目标条件,则增大滑动权重和/或减小采样周期的时长,并返回执行每间隔采样周期采集一次多条等价路径中每条等价路径的负载,直至最近一次聚类后得到m个等价路径簇满足目标条件,则将m个等价路径簇作为m个负载分担组。
142.其中,目标条件为:不同等价路径簇中任意两条等价路径的滑动平均负载之间的距离超过距离阈值。该距离阈值为预先配置的数值,该数值用于判断上述聚类结果是否达到预期的聚类结果。对于任意两个不同的等价路径簇,如果这两个等价路径簇中任意两条等价路径的滑动平均负载之间的距离超过该距离阈值,则表明不同等价路径簇之间的距离较远,此时聚类结果达到预期聚类结果。相应地,如果这两个等价路径簇中存在两条等价路径的滑动平均负载之间的距离低于该距离阈值,则表明这两个等价路径簇之间的距离较
近,此时聚类后的各个等价路径簇的边界不清晰。因此,需要重新进行聚类。
143.另外,在每次获取到当前采样周期采集的每条等价路径的负载时,基于滑动权重确定每条等价路径的滑动平均负载可以通过下述公式确定:
144.aveportloading
t+1
=
145.aveportloading
t
+(portloading
t+1-aveportloading
t
)/2w146.其中,aveportloading
t+1
指示在得到第t+1个采样周期采集的负载时确定的滑动平均负载。portloading
t+1
指示第t+1个采样周期采集的负载。aveportloading
t
指示在得到第t个采样周期采集的负载时确定的滑动平均负载。w表示滑动权重。
147.基于上述公式可知,在每次获取到当前采样周期采集的等价路径的负载,通过上述公式基于当前采样周期采集的负载和上一采样周期确定的滑动平均负载,重新确定该等价路径的滑动平均负载。也即,在每次获取到当前采样周期采集的等价路径的负载,都会确定出一个和当前采样周期对应的滑动平均负载。
148.上述基于多条等价路径中每条等价路径的滑动平均负载,对多条等价路径进行聚类可以理解为:基于每条等价路径在多个采样周期分别对应的滑动平均负载,对多条等价路径进行聚类。
149.为了便于理解,在此对滑动权重做如下解释:2w是一个整体值,当该整体值为1时,当前采样周期采集的负载portloading
t+1
引起的负载波动即可直接反映到滑动平均负载上;当2w为2时,当前采样周期对应的滑动平均负载只能反映1/2的负载波动,以此类推。写成2w的形式,主要是考虑到一些专用芯片的算法无法做除法操作,但可以做右移操作,通过2w可以保证芯片针对滑动平均负载的算法通过右移操作即可实现。
150.基于上述滑动权重的解释可知,滑动权重w越大,不同采样周期对应的滑动平均负载之间的波动越小,也即等价路径在不同采样周期对应的滑动平均负载之间越稳定,进而有利于对各条等价路径进行聚类。因此,当聚类效果不佳时,可以增加滑动权重,然后重新进行聚类。
151.另外,采样周期的时长越小,通过上述公式确定的等价路径在不同采样周期对应的滑动平均负载越稳定,同样有利于对各条等价路径进行聚类。因此,当聚类效果不佳时,可以减小采样周期的时长,然后重新进行聚类。
152.需要说明的是,增大滑动权重的步长、以及减小采样周期的时长的步长均可以预先配置,本技术实施例对此不做限定。
153.另外,在通过上述循环过程直至聚类效果达到预期聚类效果之后,为了避免在下一次更新负载等级表时聚类花费时间较长,还可以存储最近一次聚类时所使用的滑动权重以及采样周期的时长。如此,在下一次需要更新负载等级表时,可以直接基于存储的滑动权重和采样周期的时长,重新确定各条等价路径的当前负载,以便于快速完成对各条等价路径的聚类。
154.此外,在上述对多条等价路径进行第一次聚类,得到x个等价路径簇之后,如果x个等价路径簇满足目标条件,表明第一次聚类之后的效果已达到预期聚类效果。这种场景下,如果当前聚类效果非常好,则表明之前设置的滑动权重过大或采样周期的时长过小。如果在下一次更新负载等级表时直接基于该滑动权重或采样周期的时长确定等价路径的当前负载,确定该等价路径的当前负载的数据处理量会较多。
155.基于此,在上述对多条等价路径进行第一次聚类,得到x个等价路径簇之后,如果x个等价路径簇满足目标条件,则减小滑动权重和/或增大采样周期的时长,并返回执行每间隔采样周期采集一次多条等价路径中每条等价路径的负载,直至最近一次聚类后的至少一个等价路径簇不满足目标条件,则将倒数第二次聚类后的m个等价路径簇作为m个负载分担组。
156.通过这种方式,可以使得最终完成聚类时所使用的滑动权重和采样周期的时长刚刚满足聚类要求即可,而不至于滑动权重过大或采样周期的时长过小。
157.为了便于理解,下面以图10a至图10c为例对上述调整负载等级表的过程进行解释说明。图10a至图10c中横坐标为时间,纵坐标为负载,图10a至图10c中的每条线代表一条等价路径的负载随时间的变化情况。等价路径的负载具体是指滑动平均负载。
158.在基于负载等级表对数据流进行负载分担之后,第一节点收集各条等价路径的负载。基于收集的各条等价路径的负载,确定各条等价路径之间的负载均衡度,如果负载均衡度低于目标负载均衡度,则基于各条等价路径的负载,对各条等价路径进行聚类。
159.在首次聚类后,得到图10a所示的聚类结果。如图10a所示,各条路径所对应的线条没有很好的分开,因此聚类效果不佳。然后调整滑动权重和/或采样周期对应的时长,在调整之后,重新收集各条等价路径的负载,并基于重新收集的各条等价路径的负载,对各条等价路径进行聚类,得到图10b所示的聚类结果,如图10b所示,各条等价路径所对应的线条被分明显为四个等价路径簇,聚类效果达到预期效果。此时,可以确定每个等价路径簇对应的负载阈值,比如将负载阈值设置在该等价路径簇的最大负载附近。然后基于每个等价路径簇对应的负载阈值,调整负载等级表。并基于调整后的负载等级表重新进行负载分担。
160.在基于调整后的负载等级表重新进行负载分担后,继续收集各条等价路径的负载。基于收集各条等价路径的负载,确定各条等价路径之间的负载均衡度,如果负载均衡度低于目标负载均衡度,则基于各条等价路径的负载,对各条等价路径进行聚类。得到图10c所示的聚类结果。聚类过程和上述一样,在此不再重复说明。
161.如图10c所示,各条等价路径所对应的线条被分明显为两个等价路径簇,聚类效果达到预期效果。此时,同样可以确定每个等价路径簇对应的负载阈值,比如将负载阈值设置在该等价路径簇的最大负载附近。然后基于每个等价路径簇对应的负载阈值,调整负载等级表。并基于调整后的负载等级表重新进行负载分担。依次类推,直至各条等价路径之间的负载均衡度达到目标负载均衡度,则完成对负载等级表的更新。
162.需要说明的是,图10a至图10c是聚类过程中的一种示例说明,并不构成对本技术涉及的聚类过程的限定。
163.此外,在本技术实施中,在基于滑动权重确定每条等价路径的滑动平均负载时,还提供了一种不同阶段采用不同滑动权重的方案,目的在于能够使得等价路径的真实负载快速显现在确定的滑动平均负载中。下面对此进行详细解释说明。
164.对于任一等价路径,在一种可能的实现方式中,不同阶段采用不同滑动权重确定该等价路径的滑动平均负载的实现过程可以为:获取该等价路径的历史滑动平均负载,该历史滑动平均负载是基于当前采样周期的上一个采样周期采集的负载确定的;如果当前采样周期采集的该等价路径的负载超过该等价路径的历史滑动平均负载、且与该等价路径历史滑动平均负载之间的差值超过第二差值阈值,则基于第一滑动权重和历史滑动平均负载
确定该等价路径的滑动平均负载;如果当前采样周期采集的该等价路径的负载低于该等价路径的历史滑动平均负载,则基于第二滑动权重和历史滑动平均负载确定该等价路径的滑动平均负载。
165.其中,第二滑动权重大于第一滑动权重。
166.第二差值阈值是预先配置的数值。如果当前采样周期采集的该等价路径的负载超过该等价路径的历史滑动平均负载、且与该等价路径历史滑动平均负载之间的差值超过第二差值阈值,则表明该等价路径当前转发的数据流处于流量上升阶段,此时可以让滑动权重设置的小一点,这样确定的滑动平均负载相较于历史滑动平均负载,也会出现一个快速上升的现象,从而使得数据流流量上升阶段时该等价路径的负载情况真实体现在确定的滑动平均负载中。
167.相应地,如果当前采样周期采集的该等价路径的负载低于该等价路径的历史滑动平均负载,表明该等价路径转发的数据流当前可能处于流量稳定阶段。这种场景下,可以让滑动权重设置的大一点,如此在流量稳定阶段的不同采样周期时,确定的该等价路径的滑动平均负载也相对稳定。
168.此外,如果当前采样周期采集的该等价路径的负载低于该等价路径的历史滑动平均负载,该等价路径转发的数据流可能处于流量稳定阶段,也可以处于流量降低或停止阶段。如果该等价路径转发的数据流处于流量降低或停止阶段,此时也可以让滑动权重设置的小一点,这样确定的滑动平均负载相较于历史滑动平均负载,也会出现一个快速下降的现象,从而使得数据流流量降低或停止阶段时该等价路径的负载情况真实体现在确定的滑动平均负载中。
169.基于此,如果当前采样周期采集的该等价路径的负载低于该等价路径的历史滑动平均负载,则基于第二滑动权重和历史滑动平均负载确定该等价路径的滑动平均负载的实现过程可以为:如果当前采样周期采集的该等价路径的负载低于该等价路径的历史滑动平均负载,且负载连续下降次数不超过目标次数,则基于第二滑动权重和历史滑动平均负载确定该等价路径的滑动平均负载。
170.其中,负载连续下降次数为采样周期采集的负载连续小于相应历史滑动平均负载时的连续采样周期的数量。示例地,负载连续下降次数为10,则表明包括当前采样周期在内,已经连续有10次采样周期对应的滑动平均负载小于上一个采样周期对应的滑动平均负载。
171.目标次数也为配置的数值。当负载连续下降次数超过目标次数,则表明已经有多个采样周期对应的滑动平均负载小于上一个采样周期对应的滑动平均负载,此时该等价路径转发的数据流是处于流量降低或停止阶段的。相应地,当负载连续下降次数低于目标次数,则表明当前该等价路径转发的数据流的流量只是暂时出现了流量降低,这种情况仍然属于流量稳定阶段。
172.基于上述分析,如果当前采样周期采集的该等价路径的负载低于该等价路径的历史滑动平均负载,但是负载连续下降次数不超过目标次数,则基于上述第二滑动权重确定滑动平均负载。相应地,如果当前采样周期采集的该等价路径的负载低于该等价路径的历史滑动平均负载,且负载连续下降次数超过目标次数,则基于第三滑动权重和历史滑动平均负载确定该等价路径的滑动平均负载。其中,第三滑动权重小于第二滑动权重。
173.上述不同阶段采用不同滑动权重的方案可以通过如下算法来表示:
[0174][0175][0176]
也即,上述算法中,第一滑动权重w1小于第二滑动权重w2,第三滑动权重w3也小于第二滑动权重w2。上述算法也称为快升慢降的分段函数。
[0177]
需要说明的是,本技术实施例并不限定第一滑动权重w1和第三滑动权重w3之间的大小关系。
[0178]
图11是本技术实施例提供的一种基于快升慢降的分段函数确定的等价路径的负载曲线示意图。如图11所示,在流量上升阶段,确定的滑动平均负载是快速上升的。在流量稳定阶段,确定的滑动平均负载是稳定的。由此可知,基于快升慢降的分段函数确定等价路径的负载时,能够实现等价路径的真实负载快速体现在确定的负载中。
[0179]
此外,上述内容还可以通过图12所示的流程图进一步说明,如图12所示,在第一节点按照当前负载等级表(当前负载等级所指示的负载阈值为预设阈值)进行负载分担之后,第一节点中的dlb系统可以对各条等价路径的负载进行状态监控,基于监控结果,自适应调整负载阈值,进而更新负载等级表。
[0180]
图13是本技术实施例提供的一种调整后的负载阈值的示意图。如图13所示,通过各条等价路径的当前负载对负载阈值调整后,调整后的负载阈值只有三个。相对于图6中预先配置7个固定的负载阈值,一条数据流在通过某条等价路径发送时,该等价路径对应的负载等级基本不会横跨多个负载等级,从而避免了由于一条等价路径横跨多个负载等级而导致当前能够选择的等价路径数量成倍下降,进而引发负载分担不均匀的问题。具体原因分析过程可以参考前述图6所示的内容。
[0181]
此外,在图9所示的实施例中,为了避免在流量刚启动时由于等价路径的真实负载未能体现在确定的负载中,从而导致多条大流同时选择同一等价路径,进而造成该等价路径后续发生流量拥堵(具体过程参考图5)。图9中的多条等价路中的每条等价路径的负载可以通过以下方式获得。
[0182]
对于多条等价路径中任一等价路径,获取该等价路径的第一负载,第一负载为接收第一数据流之前最近一次采样周期采集的该等价路径的负载。如果第一负载小于负载阈值,则获取在最近一次采样周期的上一采样周期内通过第一节点的第二数据流的流量大小,将第二数据流的流量大小叠加在第一负载上,得到该等价路径的负载。
[0183]
其中,在最近一次采样周期的上一采样周期内从该等价路径发送的第二数据流可以理解为:在最近一次采样周期的上一采样周期内从该等价路径发送的全部数据流。
[0184]
负载阈值为预先配置的数值。如果第一负载小于负载阈值,表明该等价路径当前
时间转发的数据流处于刚启动阶段,此时可以将当前时间之前该等价路径转发的数据流的大小叠加到采集的负载上,从而避免在流量刚启动时,确定的该等价路径的负载过小。
[0185]
另外,在图9所示的实施例中,当步骤903中的目标路径包括y条等价路径时,y为大于1的正整数,在第一节点通过目标路径转发第一数据流之后,当第一节点接收到第三数据流,如果当前确定的目标路径和步骤903中的确定的目标路径一致,也即第三数据流对应步骤903中的目标路径。这种场景下,为了避免将第一数据流和第三数据流发送至y条等价路径中的同一等价路径从而造成流量拥堵,对于第三数据流,可以从y条等价路径中通过轮询方式选择与一条等价路径,通过选择的等价路径发送第三数据流。
[0186]
从y条等价路径中通过轮询方式选择与一条等价路径可以理解为:如果第一数据流是通过y条等价路径中的其中一条等价路径发送,则从y条等价路径中的其他等价路径中选择一条等价路径发送第三数据流。当第一节点再次接收到一个新的数据流,该新的数据流也对应步骤903中的目标路径,则继续从y条等价路径中的剩下等价路径中选择一条等价路径发送新的数据流。
[0187]
可以理解的是,在当前采样周期之内,由于当前采样还没有结束,因此各条等价路径的负载一直是基于上一次采样周期采集的数据确定的负载,如此各条等价路径的负载对应的负载等级在当前采样周期之内也是不变的。基于此,在当前采样周期之内,如果第一节点接收到多条数据流,则对于这多条数据流确定的目标路径则是同一目标路径。这种场景下,在目标路径包括y条等价路径的情况下,为了避免将这多条数据流通过同一等价路径发送而导致流量拥堵,则通过轮询方式从这y条等价路径中为这多条数据流分别选择一条等价路径,进而发送这多条数据流。
[0188]
示例地,如图14所示,假设采样周期为1μs,在当前采样周期内满足预设条件的目标路径为路径1和路径2。如果在当前采样周期内,同时接收到4条数据流,则将这4条数据流分别通过路径1、路径2、路径1以及路径2发送。从而实现在当前采样周期内,对于接收到的多条数据流,采用轮询(round-robin)方式选路。
[0189]
总之,基于图9所示的实施例,可以实现如下技术效果:
[0190]
(1)基于各条等价路径的负载调整负载等级表所指示的负载阈值,进而更新负载等级表,以提升各条等价路径之间的负载均衡性。
[0191]
(2)通过调整采样周期的时长和/或滑动权重,对等价路径的负载重新塑形,以便于对等价路径聚类,然后基于每一类等价路径的负载设置合适的负载阈值。基于此,当等价路径的负载变化时,第一节点能更快的感知到该等价路径的负载变化,从而快速调整负载均衡策略。
[0192]
(3)通过改进滑动平均负载算法来加快负载显现,从根本上解决负载显现过慢导致的负载判断不准的问题。
[0193]
(4)在多条数据流对应同一目标路径的场景中(比如采样周期内),采用轮询方式为多条数据流选路,从而在采样周期内真实负载还未体现到采集的负载上时,尽量避免各条等价路径的负载过度不均。
[0194]
此外,对于图7所示的dlb系统,负载分析模块可以完成上述对等价路径进行聚类,并基于聚类结果调整负载阈值的过程。平均负载计算模块可以通过上述快升慢降的分段函数来确定滑动平均负载。选路模块可以在多条数据流对应同一目标路径的场景中,采用轮
询方式为多条数据流选路。
[0195]
图15是本技术实施例提供的一种负载分担方法流程图。该方法用于说明第一节点如何通过各条等价路径转发的数据流的数量来确定目标路径。如图15所示,该方法包括步骤1501至步骤1504。
[0196]
步骤1501:第一节点接收第一数据流。
[0197]
步骤1501中,第一节点接收第一数据流可以理解为第一节点首次接收到属于第一数据流的报文。为了便于后续将同一数据流的报文通过同一路径发送,本技术实施例还针对各条等价路径配置有数据流标识,该数据流标识指示等价路径转发的数据流。
[0198]
这种场景下,第一节点在接收到任一报文时,先确定该报文所属的第一数据流的标识。然后获取与多条等价路径中每条等价路径对应的数据流标识,若第一数据流的标识与获取的数据流标识中的均不相同,则确定第一数据流不是第一节点已发送的数据流,这种场景下则执行下述步骤1502至1504,为该报文选择转发路径。
[0199]
相应地,如果基于第一数据流的标识,确定第一数据流是第一节点已发送的数据流,则确定当前时间之前转发第一数据流所使用的等价路径,通过确定的等价路径发送该报文。
[0200]
步骤1502:第一节点获取第一数据流对应的多条等价路径、以及多条等价路径中每条等价路径对应的数据流数量,该数据流数量指示相应等价路径转发的数据流的数量。
[0201]
步骤1503:第一节点基于多条等价路径中每条等价路径对应的数据流数量,从多条等价路径中确定目标路径。其中,目标路径为多条等价路径中满足预设条件的路径,预设条件包括:转发的数据流的数量最少,且每条数据流中的报文间隔小于设定时间间隔。
[0202]
步骤1504:第一节点通过目标路径转发第一数据流。
[0203]
其中,各条等价路径对应的数据流数量可以记录在流表中。基于此,在步骤1502中,可以从流表中获取各条等价路径对应的数据流数量。相应地,在步骤1504中通过目标路径转发第一数据流后,还可以更新流表中目标路径对应的数据流数量,比如增加与目标路径对应的数据流数量。示例地,可以将目标路径对应的数据流数量加1。
[0204]
另外,在通过目标路径转发第一数据流后,还可以进一步更新目标路径对应的数据流标识,以便于后续再次接收到属于第一数据流的报文时,基于目标路径转发该报文。
[0205]
此外,随着通信时间的增加,第一节点上各条等价路径对应的数据流数量是越来越大的。如果流表中记录的各条等价路径对应的数据流数量不能表征最近一段时间各条等价路径转发的数据流的数量,这种情况下基于各条等价路径对应的数据流数量进行负载分担并不能很好地提升负载均衡性。因此,在本技术实施例中,还设置有设定时间间隔(也即老化时间),该设定时间间隔用于老化流表中各条等价路径对应的数据流数量。
[0206]
在一种可能的实现方式中,基于设定时间间隔老化流表中各条等价路径对应的数据流数量的实现方式可以为:在通过目标路径发送第一数据流之后,确定当前时间之前最近一次接收到属于第一数据流的报文的时间,如果当前时间之前最近一次接收到属于第一数据流的报文的时间,与当前时间之间的差值超过该设定时间间隔,则减少目标路径对应的数据流数量。
[0207]
其中,设定时间间隔预先配置。示例地,设定时间间隔可以为200μs至1000μs之间的数值。如果当前时间之前最近一次接收到属于第一数据流的报文的时间,与当前时间之
间的差值超过该设定时间间隔,则表明在最近一段时间内都没有接收到第一数据流的报文,此时则需要将第一数据流从目标路径对应的数据流中老化掉,以减少目标路径对应的数据流数量。示例地,将目标路径对应的数据流数量减1。
[0208]
此外,在将第一数据流从目标路径对应的数据流中老化掉时,还从目标路径对应的数据流标识中删除第一数据流的标识。
[0209]
另外,在本技术实施例中,如果一条大流的全部报文在同一等价路径上转发,若由于该大流引发该等价路径拥堵,则该等价路径拥堵时间持续较长。为了避免该情况发生,还可以设置路径切换间隔,通过路径切换间隔为大流切换转发路径。
[0210]
在一种可能的实现方式中,通过路径切换间隔为大流切换转发路径的实现过程可以为:在通过目标路径转发第一数据流之后,获取当前时间与起始发送时间之间的差值,起始发送时间为首次通过目标路径转发属于第一数据流的报文的时间;如果当前时间与起始发送时间之间的差值超过路径切换间隔,则获取当前时间之前通过目标路径转发的第一数据流的流量大小;如果当前时间之前转发的第一数据流的流量大小超过目标数值,则从多条等价路径中选择替换路径,替换路径与目标路径为不同的等价路径;通过替换路径继续发送第一数据流,并增加替换路径对应的数据流数量,减少目标路径对应的数据流数量。
[0211]
相应地,如果当前时间之前转发的第一数据流的流量大小低于目标数值,则无需通过上述方式为第一数据流换路。
[0212]
也即,在首次发送第一数据流的报文后开始计时,当计时时间达到路径切换间隔时,如果路径切换间隔内第一数据流的流量超过目标数值,则表明第一数据流是一条大流,为了避免目标路径拥堵,则在计时时间达到路径切换间隔时重新选择一条等价路径发送第一数据流。如果当前时间之前转发的第一数据流的流量大小低于目标数值,表明第一数据流目前是一条小流,此时则无需切换第一数据流的转发路径。通过这种方式,可以将一条大流划分为多条小流,然后在不同的等价路径上发送划分后的小流。
[0213]
上述路径切换间隔预先配置。示例地,路径切换间隔可以为10μs至100μs之间的数值。
[0214]
在一种可能的实现方式中,路径切换间隔可以大于路径时延差。其中,该路径时延差为第一路径时延和第二路径时延之间的差值,第一路径时延为通过第一路径发送报文所需的时长,第二路径时延为通过第二路径发送报文所需的时长,第一路径和第二路径为从第一数据流的源地址至目的地址的两条不同路径。
[0215]
比如,对于图1所示的组网,第一路径和第二路径可以为两个不同的gpu之间的两条路径。当路径切换间隔大于路径时延差时,大流即使通过上述方式换路也不会引发乱序。
[0216]
可选地,路径切换间隔也可以通过其他方式确定,在此不再一一举例说明。
[0217]
此外,第一节点在首次发送第一数据流的报文后,可以通过计数器记录第一节点后续发送的第一数据流的报文的数量,以便在当前时间达到路径切换间隔时,基于该计数器确定第一节点已发送的第一数据流的报文的数量,将该报文的数量作为第一节点转发的第一数据流的流量大小。
[0218]
此外,目前流表的规格,也即,流表中针对等价路径能够记录的数据流,是有限的。比如,目前流表中针对每条等价路径允许记录100个数据流。这种场景下,第一节点在首次接收到属于第一数据流的报文的情况下,获取多条等价路径中每条等价路径对应的数据流
数量,如果与每条等价路径对应的数据流数量均达到目标数量,则通过轮询方式从多条等价路径中选择一条等价路径作为目标路径。
[0219]
其中,目标数量即流表允许针对单条等价路径记录的数据流的数量。如果与每条等价路径对应的数据流数量均达到目标数量,则表明当前流表中记录的内容的大小已经达到流表规格所允许大小,此时则通过轮询方式从多条等价路径中选择一条等价路径作为目标路径。并且,在通过轮询方式选路时,不再将这些数据流的信息记录在流表中。
[0220]
总之,基于图15所示的实施例,可以实现如下技术效果:
[0221]
(1)相对于通过各条等价路径的负载来被动地调整负载均衡策略,图15所示的实施例基于各条等价路径转发的数据流的数量来主动进行负载分担,从而主动保证了数据流在各条等价路径上的均匀性。
[0222]
(2)通过大流重新选路的机制,将大流切分成为若干个小流,保证了流量细粒度的划分。另外,将路径切换间隔配置为大于路径延时差,从而避免将大流划分之后换路引发乱序的问题。
[0223]
下面对本技术实施例涉及的网络设备的结构进行解释说明。前述实施例涉及的任一节点的功能均可以通过下述网络设备来实现。
[0224]
图16是本技术实施例提供的一种网络设备的结构示意图。如图16所示,该网络设备1600包括接收模块1601、和处理模块1602和发送模块1603。
[0225]
接收模块1601,用于接收第一数据流。具体实现方式可以参考图8实施例中的步骤801,或图9实施例中的步骤901,或图15实施例中的步骤1501。
[0226]
处理模块1602,用于获取第一数据流对应的多条等价路径。具体实现方式可以参考图8实施例中的步骤802,或图9实施例中的步骤902,或图15实施例中的步骤1502。
[0227]
处理模块1602,还用于从多条等价路径中确定目标路径,目标路径为多条等价路径中满足预设条件的路径,预设条件包括:转发的数据流的数量最少,且每条数据流中的报文间隔小于设定时间间隔;或,负载对应的负载等级为当前允许的最轻负载等级,每条等价路径的负载等级是根据当前等价路径的负载以及多条等价路径的历史负载确定的。具体实现方式可以参考图8实施例中的步骤803,或图9实施例中的步骤903,或图15实施例中的步骤1503。
[0228]
发送模块1603,还用于通过目标路径转发第一数据流。具体实现方式可以参考图8实施例中的步骤804,或图9实施例中的步骤904,或图15实施例中的步骤1504。
[0229]
可选地,每条等价路径的负载等级是根据当前等价路径的负载以及负载等级表确定的,负载等级表指示n个负载阈值,n个负载阈值是根据多条等价路径的历史负载确定的,历史负载为多条等价路径之间的负载均衡度达到目标负载均衡度时的负载,负载均衡度为多条等价路径中负载之间的差值低于第一差值阈值的等价路径所占的比例,n大于等于1。
[0230]
可选地,处理模块1602还用于:
[0231]
确定多条等价路径的当前负载;
[0232]
基于多条等价路径的当前负载确定多条等价路径的负载均衡度;
[0233]
如果确定的负载均衡度低于目标负载均衡度,则调整负载等级表,并返回执行确定多条等价路径的当前负载的操作,直至最近一次确定的负载均衡度超过目标负载均衡度。
[0234]
可选地,处理模块1602具体用于:
[0235]
基于多条等价路径的当前负载,将多条等价路径聚类为m个负载分担组,每个负载分担组包括至少一条等价路径,m大于等于1;
[0236]
基于每个负载分担组中的等价路径的当前负载,确定与每个负载分担组对应的负载阈值,得到与m个负载分担组一一对应的m个负载阈值,根据m个负载阈值更新负载等级表。
[0237]
可选地,处理模块1602具体用于:
[0238]
将每个负载分担组中等价路径的当前负载中的最大负载,作为与负载分担组对应的负载阈值。
[0239]
可选地,处理模块1602具体用于:
[0240]
每间隔采样周期采集一次多条等价路径中每条等价路径的负载;
[0241]
在每次获取到当前采样周期采集的每条等价路径的负载时,基于滑动权重确定每条等价路径的滑动平均负载;
[0242]
基于多条等价路径中每条等价路径的滑动平均负载,对多条等价路径进行聚类,得到x个等价路径簇,x大于等于1;
[0243]
如果x个等价路径簇中的至少一个等价路径簇不满足目标条件,则增大滑动权重和/或减小采样周期的时长,并返回执行每间隔采样周期采集一次多条等价路径中每条等价路径的负载,直至最近一次聚类后得到m个等价路径簇满足目标条件,则将m个等价路径簇作为m个负载分担组;
[0244]
其中,目标条件为:不同等价路径簇中任意两条等价路径的滑动平均负载之间的距离超过距离阈值。
[0245]
可选地,处理模块1602具体用于:
[0246]
如果x个等价路径簇满足目标条件,则减小滑动权重和/或增大采样周期的时长,并返回执行每间隔采样周期采集一次多条等价路径中每条等价路径的负载,直至最近一次聚类后的至少一个等价路径簇不满足目标条件,则将倒数第二次聚类后的m个等价路径簇作为m个负载分担组。
[0247]
可选地,处理模块1602具体用于:
[0248]
获取等价路径的历史滑动平均负载,历史滑动平均负载是基于当前采样周期的上一个采样周期采集的负载确定的;
[0249]
如果当前采样周期采集的等价路径的负载超过等价路径的历史滑动平均负载、且与等价路径历史滑动平均负载之间的差值超过第二差值阈值,则基于第一滑动权重和历史滑动平均负载确定等价路径的滑动平均负载;
[0250]
如果当前采样周期采集的等价路径的负载低于等价路径的历史滑动平均负载,则基于第二滑动权重和历史滑动平均负载确定等价路径的滑动平均负载;
[0251]
其中,第二滑动权重大于第一滑动权重。
[0252]
可选地,处理模块1602具体用于:
[0253]
如果当前采样周期采集的等价路径的负载低于等价路径的历史滑动平均负载,且负载连续下降次数不超过目标次数,则基于第二滑动权重和历史滑动平均负载确定等价路径的滑动平均负载,负载连续下降次数为采样周期采集的负载连续小于相应历史滑动平均
负载时的连续采样周期的数量。
[0254]
可选地,处理模块1602具体用于:
[0255]
如果当前采样周期采集的等价路径的负载低于等价路径的历史滑动平均负载,且负载连续下降次数超过目标次数,则基于第三滑动权重和历史滑动平均负载确定等价路径的滑动平均负载;
[0256]
其中,第三滑动权重小于第二滑动权重。
[0257]
可选地,处理模块1602还用于:
[0258]
获取等价路径的第一负载,第一负载为接收第一数据流之前最近一次采样周期采集的等价路径的负载;
[0259]
如果第一负载小于负载阈值,则获取在该最近一次采样周期的上一采样周期内从等价路径发送的第二数据流的流量大小,将第二数据流的流量大小叠加在第一负载上,得到等价路径的负载。
[0260]
可选地,当目标路径包括y条等价路径时,接收模块1601还用于:接收第三数据流,第三数据流对应目标路径;
[0261]
相应地,处理模块1602还用于:从y条等价路径中通过轮询方式选择与一条等价路径;
[0262]
发送模块1603还用于:通过选择的等价路径发送第三数据流。
[0263]
可选地,处理模块1602具体用于:
[0264]
获取多条等价路径中每条等价路径对应的数据流数量,数据流数量指示等价路径转发的数据流的数量;
[0265]
将多条等价路径中对应的数据流数量最少的等价路径作为目标路径。
[0266]
相应地,处理模块1602还用于:
[0267]
增加与目标路径对应的数据流数量。
[0268]
可选地,处理模块1602还用于:
[0269]
确定当前时间之前最近一次接收到属于第一数据流的报文的时间;
[0270]
如果当前时间之前最近一次接收到属于第一数据流的报文的时间,与当前时间之间的差值超过设定时间间隔,则减少目标路径对应的数据流数量。
[0271]
可选地,处理模块1602还用于:
[0272]
获取当前时间与起始发送时间之间的差值,起始发送时间为首次通过目标路径转发属于第一数据流的报文的时间;
[0273]
如果当前时间与起始发送时间之间的差值超过路径切换间隔,则获取当前时间之前通过目标路径转发的第一数据流的流量大小;
[0274]
如果当前时间之前转发的第一数据流的流量大小超过目标数值,则从多条等价路径中选择替换路径,替换路径与目标路径为不同的等价路径;
[0275]
通过替换路径继续发送第一数据流,并增加替换路径对应的数据流数量,减少目标路径对应的数据流数量。
[0276]
可选地,路径切换间隔大于路径时延差,路径时延差为第一路径时延和第二路径时延之间的差值,第一路径时延为通过第一路径发送报文所需的时长,第二路径时延为通过第二路径发送报文所需的时长,第一路径和第二路径为从第一数据流的源地址至目的地
址的两条不同路径。
[0277]
可选地,获取多条等价路径中每条等价路径对应的数据流数量之后,处理模块1602还用于:
[0278]
如果与每条等价路径对应的数据流数量均达到目标数量,则通过轮询方式从多条等价路径中选择一条等价路径作为目标路径。
[0279]
在本技术实施例中,目标路径可以通过各条等价路径转发的数据流的数量来确定。由于等价路径转发的数据流的数量在等价路径发送数据流之后便可立即更新,相对于通过各条等价路径的负载来确定目标路径,该方法无需确定各条等价路径的负载,从而避免了由于确定的负载不能及时显现真实负载所带来的问题。换句话说,相对于通过各条等价路径的负载来被动地进行负载均衡,该方法基于各条等价路径转发的数据流的数量来主动进行负载分担,从源头上保证负载均衡性。
[0280]
此外,在本技术实施例中,目标路径还可以通过各条等价路径的负载对应的负载等级来确定。由于负载对应的负载等级为当前允许的最轻负载等级,且每条等价路径的负载等级是根据当前等价路径的负载以及多条等价路径的历史负载确定的。也即,以历史负载为参考对象,确定等价路径的负载对应的负载等级。相对于以固定的负载阈值为参考对象确定等价路径的负载对应的负载等级,以历史负载为参考对象,可以在等价路径的负载相对于历史负载发生变化时,相应调整等价路径的负载对应的负载等级,相应地第一节点基于各条等价路径确定出的目标路径会随之调整,从而实现在等价路径的负载发生变化时,第一节点能够快速调整当前的负载均衡策略。换句话说,在目标路径通过各条等价路径的负载对应的负载等级来确定的方案中,当等价路径的负载变化时,第一节点能快速感知到该等价路径的负载变化,从而能够快速调整当前的负载均衡策略。
[0281]
需要说明的是:上述实施例提供的网络设备在进行负载分担时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的网络设备与负载分担方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
[0282]
图17是本技术施例提供的一种网络设备的结构示意图。前述的任一节点均可以通过图17所示的网络设备来实现。参见图17,该网络设备包括处理器1701,通信总线1702、存储器1703以及至少一个通信接口1704。
[0283]
处理器1701可以是通用中央处理器(central processing unit,cpu)、特定应用集成电路(application-specific integrated circuit,asic)或一个或多个用于控制本技术方案程序执行的集成电路。
[0284]
通信总线1702用于在上述组件之间传送信息。
[0285]
存储器1703可以是只读存储器(read-only memory,rom)或可存储静态信息和指令的其它类型的静态存储设备,随机存取存储器(random access memory,ram)或者可存储信息和指令的其它类型的动态存储设备,也可以是电可擦可编程只读存储器(electrically erasable programmable read-only memory,eeprom)、只读光盘(compact disc read-only memory,cd-rom)或其它光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘或者其它磁存储设备、或者能够用于携带或存储具有
指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质,但不限于此。存储器1703可以是独立存在,通过通信总线1702与处理器1701相连接。存储器1703也可以和处理器1701集成在一起。
[0286]
其中,存储器1703用于存储执行本技术方案的程序代码,并由处理器1701来控制执行。处理器1701用于执行存储器1703中存储的程序代码。程序代码中可以包括一个或多个软件模块。网络设备可以通过处理器1701以及存储器1703中的程序代码中的一个或多个软件模块,来确定用于开发应用的数据。
[0287]
通信接口1704,使用任何收发器一类的装置,用于与其它设备或通信网络通信,通信网络可以是以太网,无线接入网(radio access network,ran),无线局域网(wireless local area networks,wlan)等。
[0288]
在具体实现中,作为一种实施例,网络设备可以包括多个处理器,例如图17中所示的处理器1701和处理器1705。这些处理器中的每一个可以是一个单核(single-cpu)处理器,也可以是一个多核(multi-cpu)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
[0289]
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机指令时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如:同轴电缆、光纤、数据用户线(digital subscriber line,dsl))或无线(例如:红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如:软盘、硬盘、磁带)、光介质(例如:数字通用光盘(digital versatile disc,dvd))、或者半导体介质(例如:固态硬盘(solid state disk,ssd))等。
[0290]
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0291]
以上所述为本技术提供的实施例,并不用以限制本技术实施例,凡在本技术实施例的原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术实施例的保护范围之内。
技术特征:
1.一种负载分担方法,其特征在于,包括:接收第一数据流;获取所述第一数据流对应的多条等价路径;从所述多条等价路径中确定目标路径,所述目标路径为所述多条等价路径中满足预设条件的路径,所述预设条件包括:转发的数据流的数量最少,且每条数据流中的报文间隔小于设定时间间隔;或,负载对应的负载等级为当前允许的最轻负载等级,每条等价路径的负载等级是根据所述等价路径的负载以及所述多条等价路径的历史负载确定的;通过所述目标路径转发所述第一数据流。2.如权利要求1所述的方法,其特征在于,当所述预设条件为负载对应的负载等级为当前允许的最轻负载等级时,每条等价路径的负载等级具体是根据所述等价路径的负载以及负载等级表确定的,所述负载等级表指示n个负载阈值,所述n个负载阈值是根据所述多条等价路径的历史负载确定的,所述历史负载为所述多条等价路径之间的负载均衡度达到目标负载均衡度时的负载,所述负载均衡度为所述多条等价路径中负载之间的差值低于第一差值阈值的等价路径所占的比例,n大于等于1。3.如权利要求2所述的方法,其特征在于,所述方法还包括:确定所述多条等价路径的当前负载;基于所述多条等价路径的当前负载确定所述多条等价路径的负载均衡度;如果确定的负载均衡度低于所述目标负载均衡度,则调整所述负载等级表,并返回执行确定所述多条等价路径的当前负载的操作,直至最近一次确定的负载均衡度超过所述目标负载均衡度。4.如权利要求3所述的方法,所述调整所述负载等级表,包括:基于所述多条等价路径的当前负载,将所述多条等价路径聚类为m个负载分担组,每个负载分担组包括至少一条等价路径,m大于等于1;基于每个负载分担组中的等价路径的当前负载,确定与每个负载分担组对应的负载阈值,得到与所述m个负载分担组一一对应的m个负载阈值,根据所述m个负载阈值更新所述负载等级表。5.如权利要求4所述的方法,其特征在于,所述基于每个负载分担组中等价路径的当前负载,确定与每个负载分担组对应的负载阈值,包括:将每个负载分担组中等价路径的当前负载中的最大负载,作为与所述负载分担组对应的负载阈值。6.如权利要求4或5所述的方法,其特征在于,所述基于所述多条等价路径的当前负载,将所述多条等价路径聚类为至少一个负载分担组,包括:每间隔采样周期采集一次所述多条等价路径中每条等价路径的负载;在每次获取到当前采样周期采集的每条等价路径的负载时,基于滑动权重确定每条等价路径的滑动平均负载;基于所述多条等价路径中每条等价路径的滑动平均负载,对所述多条等价路径进行聚类,得到x个等价路径簇,x大于等于1;如果所述x个等价路径簇中的至少一个等价路径簇不满足目标条件,则增大所述滑动权重和/或减小所述采样周期的时长,并返回执行每间隔采样周期采集一次所述多条等价
路径中每条等价路径的负载,直至最近一次聚类后得到m个等价路径簇满足所述目标条件,则将所述m个等价路径簇作为所述m个负载分担组;其中,所述目标条件为:不同等价路径簇中任意两条等价路径的滑动平均负载之间的距离超过距离阈值。7.如权利要求6所述的方法,其特征在于,所述方法还包括:如果所述x个等价路径簇满足所述目标条件,则减小所述滑动权重和/或增大所述采样周期的时长,并返回执行每间隔采样周期采集一次所述多条等价路径中每条等价路径的负载,直至最近一次聚类后的至少一个等价路径簇不满足所述目标条件,则将倒数第二次聚类后的m个等价路径簇作为所述m个负载分担组。8.如权利要求6或7所述的方法,其特征在于,所述基于滑动权重确定每条等价路径的滑动平均负载,包括:获取所述等价路径的历史滑动平均负载,所述历史滑动平均负载是基于当前采样周期的上一个采样周期采集的负载确定的;如果当前采样周期采集的所述等价路径的负载超过所述等价路径的历史滑动平均负载、且与所述等价路径历史滑动平均负载之间的差值超过第二差值阈值,则基于第一滑动权重和所述历史滑动平均负载确定所述等价路径的滑动平均负载;如果当前采样周期采集的所述等价路径的负载低于所述等价路径的历史滑动平均负载,则基于第二滑动权重和所述历史滑动平均负载确定所述等价路径的滑动平均负载;其中,所述第二滑动权重大于所述第一滑动权重。9.如权利要求8所述的方法,其特征在于,所述如果当前采样周期采集的所述等价路径的负载低于所述等价路径的历史滑动平均负载,则基于第二滑动权重和所述历史滑动平均负载确定所述等价路径的滑动平均负载,包括:如果当前采样周期采集的所述等价路径的负载低于所述等价路径的历史滑动平均负载,且负载连续下降次数不超过目标次数,则基于第二滑动权重和所述历史滑动平均负载确定所述等价路径的滑动平均负载,所述负载连续下降次数为采样周期采集的负载连续小于相应历史滑动平均负载时的连续采样周期的数量。10.如权利要求9所述的方法,其特征在于,所述获取所述等价路径的历史滑动平均负载之后,所述方法还包括:如果当前采样周期采集的所述等价路径的负载低于所述等价路径的历史滑动平均负载,且所述负载连续下降次数超过所述目标次数,则基于第三滑动权重和所述历史滑动平均负载确定所述等价路径的滑动平均负载;其中,所述第三滑动权重小于所述第二滑动权重。11.如权利要求1-10任一所述的方法,其特征在于,所述多条等价路中的每条等价路径的负载是通过以下方式获得的:获取所述等价路径的第一负载,所述第一负载为接收所述第一数据流之前最近一次采样周期采集的所述等价路径的负载;如果所述第一负载小于负载阈值,则获取在所述最近一次采样周期的上一采样周期内从所述等价路径发送的第二数据流的流量大小,将所述第二数据流的流量大小叠加在所述第一负载上,得到所述等价路径的负载。
12.如权利要求2-11任一所述的方法,其特征在于,当所述目标路径包括y条等价路径时,所述通过所述目标路径转发所述第一数据流之后,所述方法还包括:接收第三数据流,所述第三数据流对应所述目标路径;从所述y条等价路径中通过轮询方式选择与一条等价路径;通过所述选择的等价路径发送所述第三数据流。13.如权利要求1所述的方法,其特征在于,所述从所述多条等价路径中确定目标路径,包括:获取所述多条等价路径中每条等价路径对应的数据流数量,所述数据流数量指示所述等价路径转发的数据流的数量;将所述多条等价路径中对应的数据流数量最少的等价路径作为所述目标路径;相应地,所述方法还包括:增加与所述目标路径对应的数据流数量。14.如权利要求13所述的方法,其特征在于,所述通过所述目标路径转发所述第一数据流之后,所述方法还包括:确定当前时间之前最近一次接收到属于所述第一数据流的报文的时间;如果当前时间之前最近一次接收到属于所述第一数据流的报文的时间,与当前时间之间的差值超过所述设定时间间隔,则减少所述目标路径对应的数据流数量。15.如权利要求13或14所述的方法,其特征在于,所述通过所述目标路径转发所述第一数据流之后,所述方法还包括:获取当前时间与起始发送时间之间的差值,所述起始发送时间为首次通过所述目标路径转发属于所述第一数据流的报文的时间;如果当前时间与所述起始发送时间之间的差值超过路径切换间隔,则获取当前时间之前通过所述目标路径转发的所述第一数据流的流量大小;如果当前时间之前转发的所述第一数据流的流量大小超过目标数值,则从所述多条等价路径中选择替换路径,所述替换路径与所述目标路径为不同的等价路径;通过所述替换路径继续发送所述第一数据流,并增加所述替换路径对应的数据流数量,减少所述目标路径对应的数据流数量。16.如权利要求15所述的方法,其特征在于,所述路径切换间隔大于路径时延差,所述路径时延差为第一路径时延和第二路径时延之间的差值,所述第一路径时延为通过第一路径发送报文所需的时长,所述第二路径时延为通过第二路径发送报文所需的时长,所述第一路径和所述第二路径为从所述第一数据流的源地址至目的地址的两条不同路径。17.如权利要求13-16任一所述的方法,其特征在于,所述获取所述多条等价路径中每条等价路径对应的数据流数量之后,所述方法还包括:如果与每条等价路径对应的数据流数量均达到目标数量,则通过轮询方式从所述多条等价路径中选择一条等价路径作为所述目标路径。18.一种网络设备,其特征在于,所述网络设备包括:接收模块,用于接收第一数据流;处理模块,用于:获取所述第一数据流对应的多条等价路径;从所述多条等价路径中确定目标路径,所
述目标路径为所述多条等价路径中满足预设条件的路径,所述预设条件包括:转发的数据流的数量最少,且每条数据流中的报文间隔小于设定时间间隔;或,负载对应的负载等级为当前允许的最轻负载等级,每条等价路径的负载等级是根据所述等价路径的负载以及所述多条等价路径的历史负载确定的;发送模块,用于通过所述目标路径转发所述第一数据流。19.如权利要求18所述的网络设备,其特征在于,当所述预设条件为负载对应的负载等级为当前允许的最轻负载等级时,每条等价路径的负载等级具体是根据所述等价路径的负载以及负载等级表确定的,所述负载等级表指示n个负载阈值,所述n个负载阈值是根据所述多条等价路径的历史负载确定的,所述历史负载为所述多条等价路径之间的负载均衡度达到目标负载均衡度时的负载,所述负载均衡度为所述多条等价路径中负载之间的差值低于第一差值阈值的等价路径所占的比例,n大于等于1。20.如权利要求19所述的网络设备,其特征在于,所述处理模块还用于:确定所述多条等价路径的当前负载;基于所述多条等价路径的当前负载确定所述多条等价路径的负载均衡度;如果确定的负载均衡度低于所述目标负载均衡度,则调整所述负载等级表,并返回执行确定所述多条等价路径的当前负载的操作,直至最近一次确定的负载均衡度超过所述目标负载均衡度。21.如权利要求20所述的网络设备,所述处理模块具体用于:基于所述多条等价路径的当前负载,将所述多条等价路径聚类为m个负载分担组,每个负载分担组包括至少一条等价路径,m大于等于1;基于每个负载分担组中的等价路径的当前负载,确定与每个负载分担组对应的负载阈值,得到与所述m个负载分担组一一对应的m个负载阈值,根据所述m个负载阈值更新所述负载等级表。22.如权利要求21所述的网络设备,其特征在于,所述处理模块具体用于:将每个负载分担组中等价路径的当前负载中的最大负载,作为所述负载分担组对应的负载阈值。23.如权利要求21或22所述的网络设备,其特征在于,所述处理模块具体用于:每间隔采样周期采集一次所述多条等价路径中每条等价路径的负载;在每次获取到当前采样周期采集的每条等价路径的负载时,基于滑动权重确定每条等价路径的滑动平均负载;基于所述多条等价路径中每条等价路径的滑动平均负载,对所述多条等价路径进行聚类,得到x个等价路径簇,x大于等于1;如果所述x个等价路径簇中的至少一个等价路径簇不满足目标条件,则增大所述滑动权重和/或减小所述采样周期的时长,并返回执行每间隔采样周期采集一次所述多条等价路径中每条等价路径的负载,直至最近一次聚类后得到m个等价路径簇满足所述目标条件,则将所述m个等价路径簇作为所述m个负载分担组;其中,所述目标条件为:不同等价路径簇中任意两条等价路径的滑动平均负载之间的距离超过距离阈值。24.如权利要求23所述的网络设备,其特征在于,所述处理模块具体用于:
如果所述x个等价路径簇满足所述目标条件,则减小所述滑动权重和/或增大所述采样周期的时长,并返回执行每间隔采样周期采集一次所述多条等价路径中每条等价路径的负载,直至最近一次聚类后的至少一个等价路径簇不满足所述目标条件,则将倒数第二次聚类后的m个等价路径簇作为所述m个负载分担组。25.如权利要求23或24所述的网络设备,其特征在于,所述处理模块具体用于:获取所述等价路径的历史滑动平均负载,所述历史滑动平均负载是基于当前采样周期的上一个采样周期采集的负载确定的;如果当前采样周期采集的所述等价路径的负载超过所述等价路径的历史滑动平均负载、且与所述等价路径历史滑动平均负载之间的差值超过第二差值阈值,则基于第一滑动权重和所述历史滑动平均负载确定所述等价路径的滑动平均负载;如果当前采样周期采集的所述等价路径的负载低于所述等价路径的历史滑动平均负载,则基于第二滑动权重和所述历史滑动平均负载确定所述等价路径的滑动平均负载;其中,所述第二滑动权重大于所述第一滑动权重。26.如权利要求25所述的网络设备,其特征在于,所述处理模块具体用于:如果当前采样周期采集的所述等价路径的负载低于所述等价路径的历史滑动平均负载,且负载连续下降次数不超过目标次数,则基于第二滑动权重和所述历史滑动平均负载确定所述等价路径的滑动平均负载,所述负载连续下降次数为采样周期采集的负载连续小于相应历史滑动平均负载时的连续采样周期的数量。27.如权利要求26所述的网络设备,其特征在于,所述处理模块具体用于:如果当前采样周期采集的所述等价路径的负载低于所述等价路径的历史滑动平均负载,且所述负载连续下降次数超过所述目标次数,则基于第三滑动权重和所述历史滑动平均负载确定所述等价路径的滑动平均负载;其中,所述第三滑动权重小于所述第二滑动权重。28.如权利要求18-27任一所述的网络设备,其特征在于,所述处理模块还用于:获取所述等价路径的第一负载,所述第一负载为接收所述第一数据流之前最近一次采样周期采集的所述等价路径的负载;如果所述第一负载小于负载阈值,则获取在所述最近一次采样周期的上一采样周期内从所述等价路径发送的第二数据流的流量大小,将所述第二数据流的流量大小叠加在所述第一负载上,得到所述等价路径的负载。29.如权利要求19-28任一所述的网络设备,其特征在于,当所述目标路径包括y条等价路径时,所述接收模块还用于,接收第三数据流,所述第三数据流对应所述目标路径;所述处理模块还用于,从所述y条等价路径中通过轮询方式选择一条等价路径;所述发送模块还用于,通过所述选择的等价路径发送所述第三数据流。30.如权利要求18所述的网络设备,其特征在于,所述处理模块具体用于:获取所述多条等价路径中每条等价路径对应的数据流数量,所述数据流数量指示所述等价路径转发的数据流的数量;将所述多条等价路径中对应的数据流数量最少的等价路径作为所述目标路径;相应地,所述处理模块还用于:
增加所述目标路径对应的数据流数量。31.如权利要求30所述的网络设备,其特征在于,所述处理模块还用于:确定当前时间之前最近一次接收到属于所述第一数据流的报文的时间;如果当前时间之前最近一次接收到属于所述第一数据流的报文的时间,与当前时间之间的差值超过所述设定时间间隔,则减少所述目标路径对应的数据流数量。32.如权利要求30或31所述的网络设备,其特征在于,所述处理模块还用于:获取当前时间与起始发送时间之间的差值,所述起始发送时间为首次通过所述目标路径转发属于所述第一数据流的报文的时间;如果当前时间与所述起始发送时间之间的差值超过路径切换间隔,则获取当前时间之前通过所述目标路径转发的所述第一数据流的流量大小;如果当前时间之前转发的所述第一数据流的流量大小超过目标数值,则从所述多条等价路径中选择替换路径,所述替换路径与所述目标路径为不同的等价路径;通过所述替换路径继续发送所述第一数据流,并增加所述替换路径对应的数据流数量,减少所述目标路径对应的数据流数量。33.如权利要求32所述的网络设备,其特征在于,所述路径切换间隔大于路径时延差,所述路径时延差为第一路径时延和第二路径时延之间的差值,所述第一路径时延为通过第一路径发送报文所需的时长,所述第二路径时延为通过第二路径发送报文所需的时长,所述第一路径和所述第二路径为从所述第一数据流的源地址至目的地址的两条不同路径。34.如权利要求30-33任一所述的网络设备,其特征在于,所述获取所述多条等价路径中每条等价路径对应的数据流数量之后,所述处理模块还用于:如果每条等价路径对应的数据流数量均达到目标数量,则通过轮询方式从所述多条等价路径中选择一条等价路径作为所述目标路径。35.一种网络设备,其特征在于,所述网络设备包括存储器和处理器;所述存储器用于存储程序代码;所述处理器被配置为用于执行所述存储器中存储的程序代码以实现权利要求1-17中任意一项所述的方法。36.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行权利要求1-17任一项所述的方法。
技术总结
公开了一种负载分担方法和相关装置,属于通信技术领域。应用于通过多条等价路径转发数据流的场景中。在转发第一数据流时,获取第一数据流对应的多条等价路径,并从该多条等价路径中确定目标路径。当目标路径通过各条等价路径转发的数据流的数量来确定时,每条数据流中的报文间隔小于设定时间间隔,从源头上保证了负载均衡性。当目标路径通过各条等价路径的负载对应的负载等级来确定时,由于目标路径对应的负载等级为当前允许的最轻负载等级,且每条等价路径的负载等级是根据等价路径的负载以及多条等价路径的历史负载确定的,因此,当等价路径的负载变化时,能够快速调整当前的负载均衡策略,提升了负载均衡性。提升了负载均衡性。提升了负载均衡性。
技术研发人员:路小刚 温华锋 杨斌 李军 明小勇 张亚丽 晏思宇
受保护的技术使用者:华为技术有限公司
技术研发日:2022.03.17
技术公布日:2023/7/26
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
