技术领域

本发明涉及通信技术领域,具体地说,涉及一种实现ECMP(Equal Cost Multi-Path,等价多路径)流量负载均衡的方法及电子设备。

背景技术

在以TCP/IP为传输协议的网络中,存在着多路径负载均衡问题,通常采用ECMP路由技术来解决。ECMP一般使用哈希算法来确定不同数据流的传输路径,然而这种方法在确定传输路径时仅考虑了各路径上数据流数目的均衡,而没有考虑各数据流的大小,因此可能会出现各路径(链路)流量不均衡的问题。此外,DLB(Dynamic Load Balancing,动态链路负载)技术通过将大数据流中的报文分路径传输,以解决ECMP中存在的流量不均衡问题,但是该方法实现复杂,需要芯片支持,大部分转发设备无法支持。

技术实现要素

为了克服现有技术中存在的问题,本发明提供了一种实现ECMP流量负载均衡的方法及电子设备。

根据本发明实施例的第一方面:提供一种实现ECMP流量负载均衡的方法,所述方法包括监测目标地址相同的多条数据流被分配到的各链路的带宽占用率;其中,所述转发设备基于哈希算法为目标地址相同的多条所述数据流分配所述链路;在各所述链路的带宽占用率不均衡的情况下,识别带宽占用率超过阈值的链路中的数据流的类型,所述数据流的类型包括大象流;依据ACL规则将识别出的所述大象流切换至轻载链路;所述ACL规则根据识别出的所述大象流的五元组信息进行配置;所述轻载链路为带宽占用率未超过所述阈值的链路。

根据本发明实施例的第二方面:提供一种计算机程序产品,包括计算机程序;所述计算机程序被处理器执行时实现上述第一方面所述的方法。

根据本发明实施例的第三方面:提供一种电子设备,包括处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为执行上述第一方面所述的方法。

优选地,在本发明实施例中,所述处理器包括ARM Cortex-A9内核、1Ghz运行频率和64位宽总线接口。

根据本发明实施例提供的技术方案可以具有以下有益效果:

能够实现对相同目标地址的不同数据流进行平等对待;

能够根据实际情况选择合适的链路进行流量分配,提高网络资源利用率;

能够自动识别并调整大象流在网络中的传输路径,避免因大象流引起的网络拥塞;

能够根据ACL规则限制某些非法或恶意的大象流的传输,保证网络安全性。

本技术基于ecmp采用hash算法确定数据流转发路径,通过监测各链路带宽占用率及时发现流量不均衡问题。一旦识别出带宽占用率超过阈值的链路中存在大象流,便将这些大象流切换至其他带宽未超过阈值的轻载链路上,从而实现各链路的流量负载均衡。与现有技术相比,本技术具有无需特殊芯片支持、实现简单且受大部分转发设备支持的优点。

需要注意的是,本说明书所述的一般描述和后文的细节描述仅作为示例性和解释性内容,并不对其进行限制。此外,附图说明部分展示了符合本说明书实施例的场景,并与说明书一起用于解释原理。

具体实施方式部分详细阐述了示例性实施例,包括流程图和应用场景图。在本说明书中所使用的术语仅用于描述特定实施例,而非限制其范围。在使用本说明书时,应理解“一种”、“所述”和“该”等术语可包含多数形式。

尽管在本说明书中可能使用第一、第二、第三等术语描述各种信息,但这些信息不限于这些术语。例如,在不脱离本说明书范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。根据语境,本说明书中使用的词语“如果”可以被解释为“在......时”、“当......时”或“响应于”。

CMP (以太网多路径) 路由技术经常被应用于 TCP/IP 网络,以解决多路径的负载均衡问题。它能提高网络冗余性、可靠性和资源利用率。一般来说,该技术会选用 hash 算法来确定不同数据流的传输路径。然而,这种方法在确定传输路径时仅考虑了各路径上数据流数目的均衡,而没有考虑到各数据流的大小。因此,当大流量的数据流(如大象流)和小流量的数据流(如老鼠流)同时存在时,可能会出现链路流量不均衡的问题。

大象流和小老鼠流可以通过数据流的大小和传输速率进行区分。大象流通常是指具有较大传输速率且较长传输时间的数据流,如数据迁移、虚拟机迁移等业务产生的数据流;而老鼠流则通常是传输速率较小且传输时间较短的数据流,例如发邮件、浏览网页等业务所产生的数据流。

在某场景中,有四条不同的数据流经 ECMP 转发设备传输至用户2,这些数据流可以通过两条带宽相同的等价路径进行转发。在这四条数据流中,f1 和 f3 是老鼠流,它们的传输速率小且传输时间较短;而 f2 和 f4 是大象流,它们的传输速率大且传输时间较长。经过 hash 计算后,f1 和 f3 经由链路1 进行传输,占链路1 带宽的10%;f2 和 f4 则经由链路2 进行传输,占链路2 带宽的60%。由此出现了链路流量不均衡的问题。

DLB (动态链路负载平衡) 动态链路负载技术通过将大象流中的报文分路径传输,将同一条数据流中的数据量分摊到可转发的多条路径上,能够解决 ECMP 中存在的链路流量不均衡问题,使得各路径的流量负载均衡。在此过程中,转发设备需要实时监控多条转发路径的转发时延及报文之间的时间间隔,以防止数据接收端出现报文乱序。但这种方法实现复杂,需要芯片支持,大部分转发设备无法支持。因此,本技术在 ECMP 技术的基础上提出了一种实现简单、能受大部分设备支持且能使各路径流量负载均衡的方法。

本技术提出的一种在 TCP/IP 网络中实现 ECMP 流量负载均衡的方法应用于数据转发设备,例如路由器或交换机。它适用于存在两条及以上等价路径的情况。本说明书实施例均以两条等价路径的情况对本技术的方法进行说明。其基本步骤如下图1所示:s110监测目标地址相同的多条数据流被分配的各链路的带宽占用率;其中,所述转发设备基于哈希算法为目标地址相同的多条所述数据流分配所述链路。

1.在上述技术中,当各链路的带宽占用率不均衡时,可以识别出带宽占用率超过阈值的链路中的数据流的类型。这些数据流的类型包括大象流。

32.为了实现这一目标,技术中采用了ecmp(以最有效方式覆盖)转发设备。这种设备可以根据目标地址确定等价路径,并根据跳数选择最短路径进行数据转发。当存在两条或更多等价路径且跳数相同时,设备会选择其中一条路径进行转发。这样可以避免浪费链路资源,使不同路径上的负载尽可能均衡。

33.ecmp通常采用hash算法来确定各待转发数据流的转发路径,也可以通过轮询的方式或基于各转发路径的权重来确定。实时监测各链路的带宽占用率有助于发现链路流量负载不均衡的问题。

34.例如,技术中的s120模块可以在各链路的带宽占用率差值大于设定临界值时,识别出带宽占用率超过阈值的链路中的数据流的类型。这有助于优化网络资源分配和提高网络性能。

通过以上重构,内容更加清晰、结构合理,便于读者理解。

2. 链路带宽占用率不均衡的原因通常是由于待转发的数据流中同时存在多条大象流和老鼠流,且这些大象流通过同一路径进行转发。因此,需要识别出超载链路中的数据流类型,并判断是否存在大象流。若存在大象流,则将识别出的大象流切换到其他未超载的路径进行转发。在轻载情况下,即使流量负载不均衡,也不会影响业务体验,因此无需对数据流的转发路径进行切换。例如,链路A的带宽占用率为10%,链路B的带宽占用率为30%。此时,可以为各链路设定一个带宽占用率阈值,在带宽占用率不均衡且超过阈值的情况下,对所述链路中的数据流类型进行识别。在本说明书中,我们实施例对大象流进行了识别。

33. 在本说明书一实施例中,通过对转发设备上与带宽占用率超过阈值的链路相连的出端口处传输的数据流采样的方式,获取采集到的每条数据流的数据量大小。然后根据每条数据流的数据量大小判断是否存在大象流。采样可以使用不同的采样技术进行,例如依据sflow规则或netstream规则进行。在sflow或netflow规则中配置有具体的采样方式及合适的采样率,采集的样品为各数据流中的报文。转发设备能以报文数量为单位进行周期性采样,如每通过1000个报文采集一次,采样率为1/1000;也可以以时间为单位进行周期性采样,如每秒采集一次,采样率为1个/s。为了防止对转发设备CPU的冲击,可以根据CPU的处理能力配置采样率,或者根据数据流的数据量进行配置。

34. 本说明书一实施例通过采集到的各数据流中携带相同五元组信息的报文数量的占比对数据流数据量的大小进行表征。采集到的每一个报文均携带一组五元组信息,携带相同五元组信息的报文属于同一条数据流。携带相同五元组信息的报文数量相当于所述五元组信息对应的数据流的数据量,报文数量越多则说明所述数据流的数据量越大。通过获取携带相同五元组信息的报文数量在采集的所有报文中占据的比例,若占比达到预设值则将所述五元组信息对应的数据流确定为大象流。例如,转发设备采集到了100个报文,其中70个报文携带相同的五元组信息a,20个报文携带相同的五元组信息b,10个报文携带相同的五元组信息c;设定携带相同五元组信息的报文数量占比超过60%的所述五元组信息对应的数据流为大象流,那么将五元组信息a对应的数据流确定为大象流。占比预设值根据用户的需求和业务量自行设定。

7. 本说明书的另一实施例涉及通过各数据流的传输速率以及携带相同五元组信息的报文数量占比来共同表征采集到的每条数据流的数据量大小。这些数据流的传输速率是根据在转发设备出端口或入端口处的流量统计信息计算得出的,这些流量统计信息包括在一段时间内传输的数据量。举例来说,假设在采样中采集到的报文分别属于三条不同的数据流a、b和c,它们对应的五元组信息分别是a、b和c。

首先,我们在转发设备的出端口下发针对五元组信息a、b和c的流量统计指令。假设这三个数据流在1秒内分别传输了6Gbit、2Gbit和1Gbit的数据,那么它们的传输速率就是6Gbit/s、2Gbit/s和1Gbit/s。如果携带同样五元组信息的报文数量占比超过预设值,并且相应的数据流的传输速率也超过了预设上限,我们就将这个数据流标记为大象流。用户可以自行设定这个传输速率的预设上限。

另外,为了有效利用统计资源,我们需要及时回收用于进行流量统计的资源。流量统计指令在被发送出去后,就可以被看作是一个计数器。这个计数器会与其统计的数据流的五元组信息绑定,一旦绑定,它就不能执行其他的统计任务,而且它的数量也是有限的。因此,为了实现统计资源的合理使用,我们需要在使用完之后及时回收已经下发的流量统计指令。

38. 在步骤S130,我们会依据ACL(Access Control List)规则,将识别出的大象流切换至轻载链路。ACL规则会根据识别出的大象流的五元组信息进行配置。这里的轻载链路指的是带宽占用率未超过阈值的链路。

最后,在某些情况下,我们可能需要将识别出的大象流的转发路径切换到其他带宽占用率未超过阈值的链路上。

本技术提供了一种实现ecmp流量负载均衡的方法,该方法通过下发优先级高于路由表的规则,即访问控制列表(ACL),来实现对报文的过滤。ACL是由一条或多条规则组成的集合,规则描述了报文匹配条件,如源地址、目的地址和端口号等。设备根据这些规则进行报文匹配,过滤出特定报文,并根据应用ACL业务模块的处理策略允许或阻止报文通过。

在本实施例中,采用配置有ACL规则的策略路由(PBR),使得识别出的大象流从带宽占用率未超过阈值的链路转发。首先,管理员或SDN控制器根据识别出的大象流五元组信息制定一条ACL规则,允许所述大象流通过转发设备。随后,配置调用所述ACL规则的PBR,在PBR中设置所述大象流从轻载链路转发的下一跳地址。由于PBR的优先级高于ECMP通过hash计算得到的转发路径结果,所以转发设备应用上述管理员或SDN控制器下发的PBR,使得识别出的大象流的转发路径切换至未超过阈值的轻载链路。

下面结合一优选实施例,对本技术提供的一种实现ECMP流量负载均衡的方法进行介绍。图2为应用场景示意图。数据流f1、f2、f3、f4均通过转发设备10转发至同一客户端40,其中f1和f3为老鼠流,f2和f4为大象流。存在两条最短转发路径,设备20所在链路为Path1,设备30所在链路为Path2,Path1和Path2的带宽均为10Gbit/s。经过hash计算,f1和f3经Path1转发,f2和f4经Path2转发。

如图3所示,本技术提出的一种实现ECMP流量负载均衡的方法包括以下步骤:

1.监测两条转发链路的带宽占用率,判断各链路带宽占用率是否均衡;

2.假设经hash计算确定f1、f1、f2、f3、f4转发路径后,Path1的带宽占用率为10%,Path2的带宽占用率为60%,则带宽占用率不均衡。

3.依据sflow规则在转发设备的出端口处对经过带宽占用率超过阈值的链路传输的数据流采样,采样率为1/1000;预设带宽占用率的阈值为50%,则Path2的带宽占用率超过阈值,对经过Path2传输的数据流f2和f4进行报文采样,每传输1000个报文则采集一次。

4.获取采集样品中携带相同五元组信息的报文数量的占比;

根据提供的内容,我们可以将这些信息重构如下:

在SDN网络中,大象流是指携带相同五元组信息的报文数量占比超过预设值且所述传输速率超过预设上限的数据流。通过以下步骤可以确定大象流:

1. 采集并分析1000个报文,其中700个报文携带一组相同的五元组信息,属于数据流f2;其余300个报文携带另一组相同的五元组信息,属于数据流f4。此时,f2的占比为70%,f4的占比为30%。

2. 获取每条数据流在路由器出端口处的流量统计信息,计算各数据流的传输速率。假设f2的传输速率为4gbit/s,f4的传输速率为2gbit/s。传输速率越大也说明数据流的数据量越大,更可能是大象流。

3. 针对每条数据流的五元组信息下发流量统计指令,获取各数据流在路由器出端口处的传输速率。如果某条数据流的传输速率超过预设上限(例如3gbit/s),则将其确定为大象流。

4. 根据预设值(例如60%)和预设上限(例如3gbit/s),将携带相同五元组信息的报文数量占比超过预设值且所述传输速率超过预设上限的数据流确定为大象流。在本例中,确定数据流f2为大象流。

5. 根据管理员或SDN控制器下发的PBR(策略基础路由),将所述大象流的传输路径切换为带宽占用率未超过阈值的轻载链路。PBR中配置有根据所述识别出的大象流的五元组信息生成的ACL(访问控制列表)规则。

6. 对于数据流f2,通过特定的路径(例如Path1)进行转发。这样可以实现对大象流的有效管理和优化。

此外,本技术的计算机程序产品可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,是通过其所在文件处理的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图4所示,为本说明书实施例计算机程序产品所在电子设备的一种硬件结构图,除了图4所示的处理器310、内存330、网络接口320、以及非易失性存储器340之外,实施例中计算机程序产品331所在的电子设备,通常根据该计算机设备的实际功能,还可以包括其他硬件。

4. 本说明书的特定实施例已在上述内容中描述。其他实施例可以在权利要求书的范围内进行。有时,权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序执行,但仍能实现预期结果。此外,在附图中描绘的过程并不一定要求特定的顺序或连续顺序才能实现预期结果。在某些实施方式中,多任务处理和并行处理也是可行的或者可能是有益的。

55. 在本领域的技术人员考虑了本说明书及其实践应用后,将容易想到本说明书的其他实施方案。本说明书的目的是涵盖本说明书的各种变型、用途或适应性变化,这些变型、用途或适应性变化遵循本说明书的一般性原理,并包括本说明书未申请的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,而本说明书的实际范围和精神由下述权利要求界定。

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

57. 以上所述仅为本说明书的最佳实施例,并不用于限制本说明书。在遵循本说明书的精神和原则的前提下,对本说明书所做的任何修改、等同替换、改进等都应包含在本说明书受保护的范围之内。