掌桥专利:专业的专利平台
掌桥专利
首页

一种用于实现负载分担的方法和装置

文献发布时间:2023-06-19 11:05:16


一种用于实现负载分担的方法和装置

技术领域

本发明涉及通信技术领域,特别是涉及一种用于实现负载分担的方法和装置。

背景技术

在网络环境中,报文需要沿着转发路径从源节点转发到目的节点,从而完成数据包的转发,实现数据传输。其中,源节点也称入节点(Ingress Node),目的节点也称出节点(Egress Node)。在多协议标签交换(Multiple Protocol Label Switch,简称MPLS)机制、分段路由机制等采用标签转报文的机制中,转发路径也称标签交换路径(Label SwitchPath,简称LSP)。对于存在多条链路到达同一目的地址的网络环境,如果采用传统的路由技术,发往该目的地址的报文占用其中的一条链路,其他链路处于备份状态或无效状态。某个转发节点上的某些链路会因需要发送的报文过多而导致拥堵,而该某个转发节点上的剩余链路却处于闲置状态。

等价多路径(Equal-Cost Multipath,简称ECMP)技术可以实现报文流在源节点上通过非拥堵的链路转发,但是无法实现报文流在其他转发节点通过非拥堵的链路转发,即ECMP技术也无法解决负载不均衡的问题。

发明内容

本发明实施例提供了一种用于实现负载分担的方法和装置,有助于实现转发报文流链路均为非拥堵的链路和负载不均衡的问题。

第一方面,本发明实施例提供了一种用于实现负载分担的方法,该方法包括:

网络设备选取通过第一链路转发的报文流,其中,所述第一链路是第一转发节点上处于拥堵状态的链路;

所述网络设备选取可用于转发所述报文流的第二链路,所述第二链路是链路的可用带宽被所述报文流占用后仍未处于拥堵状态的链路,所述第二链路是所述第一转发节点与第二转发节点之间的链路;

所述网络设备选取与所述第二链路对应的第一哈希因子;

所述网络设备确定第三链路的可用带宽被所述报文流占用后仍未处于拥堵状态,所述第三链路是所述第二转发节点上与所述第一哈希因子对应的链路,所述第三链路是所述第二转发节点与第三转发节点之间的链路;

所述网络设备将所述第一哈希因子保存到所述报文流的源节点。

可选的,所述网络设备选取所述第二链路对应的第一哈希因子之后,所述方法还包括:

所述网络设备确定所述第三链路的可用带宽被所述报文流占用后处于拥堵状态,选取与所述第二链路对应的第二哈希因子;

所述网络设备确定第四链路的可用带宽被所述报文流占用后仍未处于拥堵状态,所述第四链路是所述第二转发节点上与所述第二哈希因子对应的链路,所述第四链路是所述第二转发节点与第四转发节点之间的链路;

所述网络设备将所述第二哈希因子保存到所述报文流的源节点。

可选的,所述网络设备确定第三链路的可用带宽被所述报文流占用后未处于拥堵状态之后,所述方法还包括:

所述网络设备确定第五链路的可用带宽被所述报文流占用之后仍未处于拥堵状态,执行所述将所述第一哈希因子保存到所述报文流的源节点;

所述第五链路是所述第三转发节点上与所述第一哈希因子对应的链路,所述第五链路是所述第三转发节点与第五转发节点之间的链路。

可选的,所述网络设备确定第三链路的可用带宽被所述报文流占用后未处于拥堵状态之后,所述方法还包括:

所述网络设备确定所述第五链路的可用带宽被所述报文流占用之后处于拥堵状态,选取与所述第二链路对应的第三哈希因子;

所述网络设备确定第六链路的可用带宽被所述报文流占用之后仍未处于拥堵状态且第七链路的可用带宽被所述报文流占用之后仍未处于拥堵状态,所述第六链路是所述第二转发节点上与所述第三哈希因子对应的链路,所述第六链路是所述第二转发节点与第六转发节点之间的链路,第七链路是所述第六转发节点上与所述第三哈希因子对应的链路,所述第七链路是所述第六转发节点与第七转发节点之间的链路;

所述网络设备将所述第三哈希因子保存到所述报文流的源节点。

可选的,所述网络设备选取与所述第二链路对应的第一哈希因子之后,所述方法还包括:

所述网络设备确定所述第三链路的可用带宽被所述报文流占用后处于拥堵状态,选取可用于转发所述报文流的第八链路,所述第八链路是链路的可用带宽被所述报文流占用后仍未处于拥堵状态的链路,所述第八链路是所述第一转发节点与第八转发节点之间的链路;

所述网络设备选取与所述第八链路对应的第四哈希因子;

所述网络设备确定第九链路的可用带宽被所述报文流占用后未处于拥堵状态,所述第九链路是所述第八转发节点上与所述第四哈希因子对应的链路,所述第九链路是所述第八转发节点与第九转发节点之间的链路;

所述网络设备将所述第四哈希因子保存到所述报文流的源节点。

可选的,所述网络设备确定第三链路的可用带宽被所述第一报文流占用后仍未处于拥堵状态,包括:

所述网络设备根据所述第一哈希因子,确定所述报文流通过所述第三链路转发,所述第三链路具体是所述第二转发节点的哈希算法对所述第一哈希因子的计算结果对应的链路;

所述网络设备根据所述报文流的占用带宽与所述第三链路的总带宽、已用带宽,确定所述第三链路的可用带宽被所述报文流占用后仍未处于拥堵状态。

第二方面,本发明实施例提供了一种用于实现负载分担的装置,该装置包括:

第一选取单元,用于选取通过第一链路转发的报文流,其中,所述第一链路是第一转发节点上处于拥堵状态的链路;

第二选取单元,用于选取可用于转发所述报文流的第二链路,所述第二链路是链路的可用带宽被所述报文流占用后仍未处于拥堵状态的链路,所述第二链路是所述第一转发节点与第二转发节点之间的链路;

第三选取单元,用于选取与所述第二链路对应的第一哈希因子;

第一确定单元,用于确定第三链路的可用带宽被所述报文流占用后仍未处于拥堵状态,所述第三链路是所述第二转发节点上与所述第一哈希因子对应的链路,所述第三链路是所述第二转发节点与第三转发节点之间的链路;

第一保存单元,用于将所述第一哈希因子保存到所述报文流的源节点。

可选的,所述装置还包括:

第二确定单元,用于在所述第三选取模块选取所述第一哈希因子之后,确定所述第三链路的可用带宽被所述报文流占用后处于拥堵状态;

第四选取单元,用于选取与所述第二链路对应的第二哈希因子;

第五确定单元,用于确定第四链路的可用带宽被所述报文流占用后仍未处于拥堵状态,所述第四链路是所述第二转发节点上与所述第二哈希因子对应的链路,所述第四链路是所述第二转发节点与第四转发节点之间的链路;

第二保存单元,用于将所述第二哈希因子保存到所述报文流的源节点。

可选的,所述装置还包括:

第六确定单元,用于在所述第一确定单元确定第三链路的可用带宽被所述报文流占用后未处于拥堵状态之后,确定第五链路的可用带宽被所述报文流占用之后仍未处于拥堵状态,所述第五链路是所述第三转发节点上与所述第一哈希因子对应的链路,所述第五链路是所述第三转发节点与第五转发节点之间的链路;

触发单元,用于触发所述第一保存单元将所述第一哈希因子保存到所述报文流的源节点。

可选的,所述装置还包括:

第七确定单元,用于在所述第一确定单元确定第三链路的可用带宽被所述报文流占用后未处于拥堵状态之后,确定所述第五链路的可用带宽被所述报文流占用之后处于拥堵状态;

第五选取单元,用于选取与所述第二链路对应的第三哈希因子;

第八确定单元,用于确定第六链路的可用带宽被所述报文流占用之后仍未处于拥堵状态且第七链路的可用带宽被所述报文流占用之后仍未处于拥堵状态,所述第六链路是所述第二转发节点上与所述第三哈希因子对应的链路,所述第六链路是所述第二转发节点与第六转发节点之间的链路,第七链路是所述第六转发节点上与所述第三哈希因子对应的链路,所述第七链路是所述第六转发节点与第七转发节点之间的链路;

第三保存单元,用于将所述第三哈希因子保存到所述报文流的源节点。

可选的,所述装置还包括:

第二确定单元,用于在所述第一选取单元选取所述第一哈希因子之后,确定所述第三链路的可用带宽被所述报文流占用后处于拥堵状态;

第六选取单元,用于选取可用于转发所述报文流的第八链路,所述第八链路是链路的可用带宽被所述报文流占用后仍未处于拥堵状态的链路,所述第八链路是所述第一转发节点与第八转发节点之间的链路;

第七选取单元,用于选取与所述第八链路对应的第四哈希因子;

第九确定单元,用于确定第九链路的可用带宽被所述报文流占用后未处于拥堵状态,所述第九链路是所述第八转发节点上与所述第四哈希因子对应的链路,所述第九链路是所述第八转发节点与第九转发节点之间的链路;

第四保存单元,用于将所述第四哈希因子保存到所述报文流的源节点。

可选的,所述第一确定单元,具体用于:

根据所述第一哈希因子,确定所述报文流通过所述第三链路转发,所述第三链路具体是所述第二转发节点的哈希算法对所述第一哈希因子的计算结果对应的链路;

根据所述报文流的占用带宽与所述第三链路的总带宽、已用带宽,确定所述第三链路的可用带宽被所述报文流占用后仍未处于拥堵状态。

第三方面,本发明实施例提供了一种网络设备。所述网络设备包括处理器和存储器。

所述存储器用于与存储程序指令和数据。

所述处理器用于读取存储器中存储的指令和数据,执行以下操作:

选取通过第一链路转发的报文流,其中,所述第一链路是第一转发节点上处于拥堵状态的链路;

选取可用于转发所述报文流的第二链路,所述第二链路是链路的可用带宽被所述报文流占用后仍未处于拥堵状态的链路,所述第二链路是所述第一转发节点与第二转发节点之间的链路;

选取与所述第二链路对应的第一哈希因子;

确定第三链路的可用带宽被所述报文流占用后仍未处于拥堵状态,所述第三链路是所述第二转发节点上与所述第一哈希因子对应的链路,所述第三链路是所述第二转发节点与第三转发节点之间的链路;

将所述第一哈希因子保存到所述报文流的源节点。

可选的,在选取所述第二链路对应的第一哈希因子之后,所述处理器还执行以下操作:

确定所述第三链路的可用带宽被所述报文流占用后处于拥堵状态,选取与所述第二链路对应的第二哈希因子;

确定第四链路的可用带宽被所述报文流占用后仍未处于拥堵状态,所述第四链路是所述第二转发节点上与所述第二哈希因子对应的链路,所述第四链路是所述第二转发节点与第四转发节点之间的链路;

将所述第二哈希因子保存到所述报文流的源节点。

可选的,在确定第三链路的可用带宽被所述报文流占用后未处于拥堵状态之后,所述处理器还执行以下操作:

确定第五链路的可用带宽被所述报文流占用之后仍未处于拥堵状态,执行所述将所述第一哈希因子保存到所述报文流的源节点;

所述第五链路是所述第三转发节点上与所述第一哈希因子对应的链路,所述第五链路是所述第三转发节点与第五转发节点之间的链路。

可选的,在确定第三链路的可用带宽被所述报文流占用后未处于拥堵状态之后,所述处理器还执行以下操作:

确定所述第五链路的可用带宽被所述报文流占用之后处于拥堵状态;

选取与所述第二链路对应的第三哈希因子;

确定第六链路的可用带宽被所述报文流占用之后仍未处于拥堵状态且第七链路的可用带宽被所述报文流占用之后仍未处于拥堵状态,所述第六链路是所述第二转发节点上与所述第三哈希因子对应的链路,所述第六链路是所述第二转发节点与第六转发节点之间的链路,第七链路是所述第六转发节点上与所述第三哈希因子对应的链路,所述第七链路是所述第六转发节点与第七转发节点之间的链路;

将所述第三哈希因子保存到所述报文流的源节点。

可选的,在选取与所述第二链路对应的第一哈希因子之后,所述处理器还执行以下操作:

确定所述第三链路的可用带宽被所述报文流占用后处于拥堵状态,选取可用于转发所述报文流的第八链路,所述第八链路是链路的可用带宽被所述报文流占用后仍未处于拥堵状态的链路,所述第八链路是所述第一转发节点与第八转发节点之间的链路;

选取与所述第八链路对应的第四哈希因子;

确定第九链路的可用带宽被所述报文流占用后未处于拥堵状态,所述第九链路是所述第八转发节点上与所述第四哈希因子对应的链路,所述第九链路是所述第八转发节点与第九转发节点之间的链路;

将所述第四哈希因子保存到所述报文流的源节点。

可选的,所述处理器为了确定第三链路的可用带宽被所述第一报文流占用后仍未处于拥堵状态,执行以下操作:

根据所述第一哈希因子,确定所述报文流通过所述第三链路转发,所述第三链路具体是所述第二转发节点的哈希算法对所述第一哈希因子的计算结果对应的链路;

根据所述报文流的占用带宽与所述第三链路的总带宽、已用带宽,确定所述第三链路的可用带宽被所述报文流占用后仍未处于拥堵状态。

本发明实施例提供的技术方案中,若第一转发节点上的第一链路处于拥塞状态时,则网络设备选取通过第一链路转发的报文流。所述网络设备为所述报文流选取第二链路和与所述第二链路对应的第一哈希因子,所述第二链路是链路的可用带宽被所述报文流占用后仍未处于拥堵状态的链路。所述网络设备对所述第一哈希因子进行验证,确定第三链路的可用带宽被所述报文流占用后仍未处于拥堵状态。所述网络设备在所述第一哈希因子通过验证之后,将所述第一哈希因子保存到转发所述报文流的源节点。所述源节点可在所述报文流中封装所述第一哈希因子,将封装了所述第一哈希因子的报文流通过所述第二链路和所述第三链路进行转发。这样,所述网络设备验证了通过第一链路转发的报文流经过的多条链路,比如第二链路和第三链路,不会发生拥堵后,将所述第一哈希因子保存到转发所述报文流的源节点。所述报文流能够在除所述源节点外的多个转发节点上通过非拥堵的链路转发,有助于缓解处于拥堵的第一链路的拥堵状态,实现较为均衡的负载分担。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种应用场景所涉及的系统框架示意图;

图2为本发明实施例中一种用于实现负载分担的方法的流程示意图;

图3为本发明实施例中一种网络架构的结构示意图;

图4为本发明实施例中一种应用场景所涉及到的部分网络架构的示意图;

图5为本发明实施例中一种用于实现负载分担的方法的流程示意图;

图6为本发明实施例中一种用于实现分担的装置的结构示意图;

图7为本发明实施例中一种网络设备的硬件结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明中的方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。

通常的网络环境中,用于转发某一报文流的源节点可根据自身链路的负载情况来为所述某一报文流选取对应的哈希因子。所述源节点将所述哈希因子添加至所述某一报文流中。所述源节点对所述哈希因子进行哈希计算,获得哈希计算的结果。由于所述源节点根据自身链路的负载情况确定了所述哈希因子,所以,所述源节点上与所述哈希计算的结果对应的链路处于非拥堵状态。即添加了所述哈希因子的所述某一报文流可经所述源节点上的所述非拥堵的链路发送至另一转发节点。所述另一转发节点根据所述某一报文流中的所述哈希因子,获得哈希计算的结果。所述另一转发节点上与所述哈希计算的结果对应的链路有可能处于拥堵状态。通常的网络环境中,实现负载分担的方法无法保证所述添加了所述哈希因子的所述某一报文流经过的每个转发节点上的链路均处于非拥堵状态。

为了实现较为均衡的负载分担,本发明实施例提供了一种用于实现负载分担的方法和装置。其中,网络设备为报文流选取哈希因子之后,验证封装有所述哈希因子的报文流所经过的多条链路是否会发生拥堵。所述网络设备在确定封装有所述哈希因子的报文流所经过的多条链路不存在拥堵的情况下,将所述哈希因子保存到用于转发所述报文流的源节点。所述源节点将所述哈希因子封装到所述报文流之后,封装了所述哈希因子的报文流能经多个转发节点上的非拥堵的链路转发,所述多个转发节点包括除所述源节点外的转发节点。所述多个转发节点还可包括所述源节点。

举例说明,本发明实施方式的应用场景之一,可以是应用到图1所示的网络系统中。在该网络系统中,对于第一转发节点上处于拥堵状态的第一链路,网络设备101选取通过所述第一链路转发的报文流,选取可用于转发所述报文流的第二链路。所述第二链路是链路的可用带宽被所述报文流占用后仍未处于拥堵状态的链路,所述第二链路是所述第一转发节点与第二转发节点之间的链路。所述网络设备101选取与所述第二链路对应的第一哈希因子,确定是否第三链路的可用带宽被所述报文流占用后仍未处于拥堵状态。其中,所述第三链路是所述第二转发节点上与所述第一哈希因子对应的链路,所述第三链路是所述第二转发节点与第三转发节点之间的链路。在确定第三链路的可用带宽被所述报文流占用后仍未处于拥堵状态后,所述网络设备101将所述第一哈希因子保存到所述报文流的源节点102。若源节点102接收到报文流,则所述源节点102将所述第一哈希因子封装到所述报文流中,再向目的节点103转发封装了所述第一哈希因子的报文流。

在图1所示的应用场景中,若所述网络设备101是所述源节点102,则所述网络设备101将所述第一哈希因子保存到源节点102,即相当于所述源节点102自身保存第一哈希因子。若所述网络设备101是除源节点102以外的其他网络设备,则网络设备101将所述第一哈希因子保存到所述源节点102,即相当于所述网络设备101将所述第一哈希因子发送到所述源节点102,所述源节点102保存所述第一哈希因子。所述网络设备101可以是网络中的控制器,如SDN(软件定义网络,Software Defined Network)控制器。

需要注意的是,上述应用场景仅是为了便于理解本发明的原理而示出,不用于限定本发明实施例提供的技术方案。

下面结合附图,通过实施例来详细说明本发明中用于实现负载分担的方法和装置的实现方式。

图2为本发明实施例中一种用于实现负载分担的方法的流程示意图。在本实施例中,所述方法例如可以包括以下内容:

S201、网络设备选取通过第一链路转发的报文流,其中,所述第一链路是第一转发节点上处于拥堵状态的链路。

在具体实现方式中,网络设备可以获取到网络中各链路的负载情况,并基于所述各链路的负载情况,确定所述各链路是否处于拥堵状态。若确定第一链路处于拥堵状态,则所述网络设备确定所述第一链路的负载需要分担到其他链路上。此时,所述网络设备可以选取通过所述第一链路转发的报文流。所述报文流是需要从第一链路调整到其他链路的备选报文流。对于备选报文流,网络设备先确定所述备选报文流调整后能够通过非拥堵状态的链路转发,再对所述备选报文流的转发路径进行调整,从而使所述备选报文流从所述第一链路调整到其他链路上转发。在调整所述备选报文流的转发路径之后,所述第一链路上转发的负载流量得以减少,所述第一链路的拥堵状态得以缓解,所述备选报文流的转发链路的调整也不会导致网络产生新的拥堵链路。

在本实施例中,报文流表示一组报文,该组报文在网络中具有相同的转发路径。该组报文在网络中转发时经过相同的转发节点。例如,报文流可以是一组目的地址具有相同前缀的报文。

在本实施例中,多种实施方式可以用于实现所述网络设备确定所述第一链路是否处于拥堵状态。作为一种示例,所述网络设备可以通过所述第一链路的可用带宽确定所述第一链路是否处于拥堵状态。具体地,所述网络设备获取所述第一链路的可用带宽。若确定所述第一链路的可用带宽小于预设的可用带宽阈值,则所述网络设备确定所述第一链路处于拥堵状态。作为另一种示例,所述网络设备可以通过所述第一链路的已占用带宽确定所述第一链路是否处于拥堵状态。具体地,所述网络设备获取所述第一链路的已占用带宽。若确定所述第一链路的已占用带宽大于预设的占用带宽阈值,则所述网络设备确定所述第一链路处于拥堵状态。作为又一种示例,所述网络设备可以通过所述第一链路的带宽使用比确定所述第一链路是否处于拥堵状态,所述第一链路的带宽使用比表示所述第一链路的已占用带宽与总带宽的比值。具体地,所述网络设备获取所述第一链路的总带宽和已占用带宽,根据所述第一链路的总带宽和已占用带宽计算所述第一链路的带宽使用比。若确定所述第一链路的带宽使用比大于预设的带宽使用比阈值,所述网络设备确定所述第一链路处于拥堵状态。

在本实施例中,所述报文流可以是通过所述第一链路转发的任意一个报文流。例如,所述网络设备可以在通过所述第一链路转发的所有报文流中随机地选取出所述报文流。又如,所述网络设备可以根据所述第一链路的带宽使用情况与各报文流占用带宽的情况选取出所述报文流,以使得在所述报文流不再占用所述第一链路的带宽的情况下所述第一链路能够处于非拥堵状态。具体地,所述网络设备计算所述第一链路的已占用带宽超出拥堵状态对应的带宽阈值的超出带宽,分别比较通过所述第一链路转发的各报文流的占用带宽与所述超出带宽之间的大小关系,选取占用带宽在超出带宽以上的所述报文流。

S202、所述网络设备选取可用于转发所述报文流的第二链路,所述第二链路是链路的可用带宽被所述报文流占用后仍未处于拥堵状态的链路,所述第二链路是所述第一转发节点与第二转发节点之间的链路。

在具体实施方式中,对于选取出的所述报文流,所述网络设备可以确定所述第一转发节点上除所述第一链路之外可用于转发所述报文流的其他链路,从其他链路中选取链路的可用带宽被所述报文流占用之后仍未处于拥堵状态的链路,作为第二链路。

所述第二链路是所述报文流的转发路径调整后用于转发所述报文流的备选链路。对于备选链路,网络设备先确定该报文流调整到所述备选链路之后其他用于转发所述报文流的链路也处于非拥堵状态,再对所述报文流的转发路径进行调整,从而使所述报文流从第一链路调整到所述备选链路上转发。

所述第二链路需要满足以下条件:所述第二链路的可用带宽被所述报文流占用后仍未处于拥堵状态。在本实施例中,多种实施方式可以用于实现所述网络设备确定所述第二链路被所述报文流占用之后是否处于拥堵状态。作为一种示例,所述网络设备可以通过所述第二链路被所述报文流占用之后剩余的可用带宽确定所述第二链路被所述报文流占用之后是否处于拥堵状态。具体地,所述网络设备获取所述第二链路的可用带宽与所述报文流的占用带宽,计算所述第二链路的可用带宽与所述报文流的占用带宽之间的差值。若确定所述第二链路的可用带宽与所述报文流占用带宽之间的差值大于预设的可用带宽阈值,则所述网络设备确定所述第二链路的可用带宽被所述报文流占用之后仍未处于拥堵状态。作为另一种示例,所述网络设备可以通过所述第二链路被所述报文流占用之后的带宽使用比确定所述第二链路被所述报文流占用之后是否处于拥堵状态。具体地,所述网络设备获取所述第二链路的已占用带宽、总带宽与所述报文流的占用带宽,计算所述第二链路的已占用带宽与所述报文流的占用带宽的相加值,根据所述相加值与所述第二链路的总带宽计算所述第二链路被所述报文流占用后的带宽使用比。若确定所述第二链路被所述报文流占用后的带宽使用比小于预设的带宽使用比阈值,则所述网络设备确定所述第二链路的可用带宽被所述报文流占用之后仍未处于拥堵状态。

除了第一链路之外,第一转发节点上可能连接有多条可用于转发所述报文流的其他链路,所述其他链路的可用带宽被该报文流占用之后仍未处于拥堵状态,所述报文流经过所述其他链路中任意一条链路的转发均可最终被转发到所述报文流的目的节点。作为一种示例,所述网络设备可从所述多条可用于转发所述报文流的其他链路选取所述第二链路。作为一种示例,所述网络设备可以从所述多条可用于转发所述报文流的其他链路中随机地选取所述第二链路。作为另一种示例,所述网络设备可以从所述多条可用于转发所述报文流的其他链路中选取可用带宽最大的链路或带宽使用比最小的链路,将选取的链路作为所述第二链路。

S203、所述网络设备选取与所述第二链路对应的第一哈希因子。

其中,所述第一哈希因子为在所述第一转发节点上与所述第二链路对应的哈希因子,也即,所述第一转发节点采用的哈希算法对所述第一哈希因子的计算结果对应于所述第二链路。在如果报文流被封装了所述第一哈希因子,所述第一转发节点接收到封装了所述第一哈希因子的报文流,以第一转发节点采用的哈希算法对所述第一哈希因子进行哈希计算而得到第一计算结果,根据所述第一计算结果确定所述第二链路,将封装了所述第一哈希因子的报文流通过所述第二链路转发出去,这样封装了第一哈希因子的报文流就能够不再通过第一链路转发。

所述第一哈希因子是用于将所述报文流从所述第一链路调整到所述第二链路转发的备选哈希因子。对于备选哈希因子,所述网络设备确定在所述报文流封装有所述备选哈希因子的情况下,用于转发所述报文流的多条链路都处于非拥堵状态。所述网络设备采用所述备选哈希因子对所述报文流的转发路径进行调整,从而使所述报文流从所述第一链路调整到所述备选哈希因子对应的链路上转发。

作为一种示例,所述网络设备选取所述第一哈希因子的具体实施方式在于,所述网络设备获取所述第一转发节点上与所述第二链路对应的哈希因子集合,从所述第二链路敌营的哈希因子集合中选取所述第一哈希因子。

S204、所述网络设备确定第三链路的可用带宽被所述报文流占用后仍未处于拥堵状态,所述第三链路是所述第二转发节点上与所述第一哈希因子对应的链路,所述第三链路是所述第二转发节点与第三转发节点之间的链路。

在具体实施方式中,所述网络设备根据所述第一哈希因子,确定所述报文流通过所述第三链路转发,所述第三链路具体是所述第二转发节点采用的哈希算法对所述第一哈希因子的计算结果对应的链路。所述网络设备根据所述报文流的占用带宽、所述第三链路的总带宽和所述第三链路的已用带宽,确定所述第三链路的可用带宽被所述报文流占用后仍未处于拥堵状态。

在本实施例中,多种实施方式可以用于实现所述网络设备确定所述报文流通过所述第三链路转发。作为一种示例,所述网络设备以所述第二转发节点采用的哈希算法对所述第一哈希因子进行哈希计算而得到第二计算结果,根据所述第二计算结果确定出所述第三链路。具体地,所述网络设备根据网络拓扑结构,确定封装了第一哈希因子的报文流通过所述第二链路的转发到达所述第二转发节点。所述网络设备获取所述第二转发节点采用的哈希算法,以所述第二转发节点采用的哈希算法对所述第一哈希因子进行哈希计算,得到第二计算结果。所述网络设备根据所述第二计算结果,确定所述报文流通过所述第二计算结果对应的所述第三链路转发。作为另一种示例,所述网络设备根据所述第一哈希因子和映射表,查找出所述第三链路。所述映射表包括所述第一哈希因子和与所述第一哈希因子存在对应关系的链路。具体地,所述网络设备根据网络拓扑结构,确定封装了所述第一哈希因子的报文流通过所述第二链路的转发到达所述第二转发节点。所述网络设备获取所述第二转发节点的映射表,所述第二转发节点的映射表记录有所述第二转发节点上链路与哈希因子之间的对应关系。所述网络设备在所述映射表中,查找出所述第一哈希因子对应的所述第三链路。

在本实施例中,多种实施方式可以用于实现所述网络设备确定所述第三链路的可用带宽被所述报文流占用之后是否处于拥堵状态,具体确定方法可参见确定所述第二链路的可用带宽被所述报文流占用后是否处于拥堵状态的方法,在此不再赘述。

S205、所述网络设备将所述第一哈希因子保存到所述报文流的源节点。

可选地,在S205之后,所述源节点在所述报文流中封装所述第一哈希因子,将封装了所述第一哈希因子的报文流转发出去。在封装了所述第一哈希因子的报文流到达所述第一转发节点之后,所述第一转发节点确定第一转发节点上可用于转发所述封装了所述第一哈希因子的报文流的多条链路。所述第一转发节点以自身采用的哈希算法对所述第一哈希因子进行哈希计算,得到第一计算结果。所述第一转发节点从所述第一转发节点上可用于转发所述第一哈希因子的报文流的多条链路中确定所述第一计算结果对应的所述第二链路。所述第一转发节点通过所述第二链路转发所述封装了所述第一哈希因子的报文流。在所述封装了第一哈希因子的报文流到达所述第二转发节点之后,所述第二转发节点确定第二转发节点上可用于转发所述封装了所述第一哈希因子的报文流的多条路径。所述第二转发节点以自身采用的哈希算法对所述第一哈希因子进行哈希计算,得到第二计算结果。所述第二转发节点从所述第二转发节点上可用于转发所述封装了所述第一哈希因子的报文流的多条路径中确定所述第二计算结果对应的所述第三链路。所述第二转发节点通过所述第三链路转发所述封装了所述第一哈希因子的报文流。因此,封装了所述第一哈希因子的报文流可以通过未处于拥堵状态的所述第二链路和所述第三链路转发,并不再通过处于拥堵状态的所述第一链路转发。

第一转发节点可以是所述报文流的转发路径上除目的节点之外的任意一个节点。例如,第一转发节点可以是所述报文流的源节点。

若所述网络设备为控制器,则控制器可以在向源节点下发对应所述报文流的路由信息的同时,向所述源节点下发所述第一哈希因子。例如:通过扩展边界网关协议(BorderGateway Protocol,简称BGP),控制器可以将所述第一哈希因子和所述报文流对应的路由信息均携带在BGP的网络层可达信息(Network Layer Reachability Information,简称NLRI)中,并将所述网络层可达信息向所述源节点发送。

若所述第三链路的可用链路被所述报文流占用之后处于拥堵状态,则所述网络设备可以确定封装了所述第一哈希因子的报文流会经过拥堵的链路。所述网络设备可以确定所述第一哈希因子不适用于调整所述报文流的转发路径。

作为一种示例,若所述网络设备确定所述第一哈希因子不适用,所述网络设备可以选取其他哈希因子作为调整所述报文流的转发路径的备选哈希因子。在S203之后,本实施例提供的方法还可以包括S206、S207和S208。

S206、所述网络设备确定所述第三链路的可用带宽被所述报文流占用后处于拥堵状态,选取与所述第二链路对应的第二哈希因子。

举例说明,所述第二哈希因子和所述第一哈希因子是在所述第一转发节点上与所述第二链路对应的两个不同的哈希因子。所述第一转发节点采用的哈希算法对所述第二哈希因子的计算结果对应于所述第二链路。所述第二哈希因子可以用于将所述报文流从所述第一链路调整到所述第二链路。

S207、所述网络设备确定第四链路的可用带宽被所述报文流占用后仍未处于拥堵状态,所述第四链路是所述第二转发节点上与所述第二哈希因子对应的链路,所述第四链路是所述第二转发节点与第四转发节点之间的链路。

在具体实施方式中,所述网络设备根据所述第二哈希因子,确定所述报文流通过所述第四链路转发,所述第四链路具体是所述第二转发节点采用的哈希算法对所述第二哈希因子的计算结果对应的链路。所述网络设备根据所述报文流的占用带宽、所述第四链路的总带宽和所述第四链路的已用带宽,确定所述第四链路的可用带宽被所述报文流占用后仍未处于拥堵状态。

用于实现所述网络设备确定所述报文流通过所述第四链路转发的具体实施方式,可以参考前述用于实现所述网络设备确定所述报文流通过所述第三链路转发的具体实施方式,本实施例对此不再赘述。此外,用于实现所述网络设备确定所述第四链路的可用带宽被报文流占用之后是否处于拥堵状态的具体实施方式,可以参考前述用于实现所述网络设备确定所述第三链路的可用带宽被所述报文流占用之后是否处于拥堵状态的具体实施方式,本实施例对此也不再赘述。

S208、所述网络设备将所述第二哈希因子保存到所述报文流的源节点。

可选地,在S208之后,所述源节点在所述报文流中封装所述第二哈希因子,将封装了所述第二哈希因子的报文流转发出去。。

网络中的转发节点对封装了所述第二哈希因子的报文流的转发处理方式,可以参见前述第一转发节点对封装了所述第一哈希因子的报文流的转发处理方式,本实施例对此不再赘述。此外,若控制器作为所述网络设备,所述控制器向所述源节点下发所述第二哈希因子的具体实施方式,可以参考前述控制器向所述源节点下发所述第一哈希因子的具体实施方式,本实施例对此也不再赘述。

作为另一种示例,若所述网络设备确定所述第一哈希因子不适用,可以选取除第一链路和第二链路之外,第一转发节点上另一个可用于转发所述报文流的链路,再选取与所述第一转发节点上另一个可用于转发所述报文流的链路对应的哈希因子作为备选哈希因子。可选地,S203之后,本实施例提供的方法还可以包括S209~212。

S209、所述网络设备确定所述第三链路的可用带宽被所述报文流占用后处于拥堵状态,选取可用于转发所述报文流的第八链路,所述第八链路是链路的可用带宽被所述报文流占用后仍未处于拥堵状态的链路,所述第八链路是所述第一转发节点与第八转发节点之间的链路。

所述第八链路需要满足以下选取条件:所述第八链路是所述第一转发节点上除所述第一链路、所述第二链路之外可用于转发所述报文流的链路,所述报文流经过所述第八链路的转发可最终被转发到所述报文流的目的节点,所述第八链路的可用带宽被所述报文流占用之后仍未处于拥堵状态。所述网络设备选取所述第八链路的方法可参见所述网络设备选取所述第二链路的方法,在此不再赘述。所述网络设备确定所述第八链路被报文流占用之后是否处于拥堵状态的方法,可以参考前述网络设备确定所述第二链路被所述报文流占用之后是否处于拥堵状态的方法,本实施例对此不再赘述。

S210、所述网络设备选取与所述第八链路对应的第四哈希因子。

第四哈希因子是在所述第一转发节点上与所述第八链路对应的哈希因子,所述第一哈希因子是在所述第一转发节点上与所述第二链路对应的哈希因子,即,所述第一哈希因子与所述第四哈希因子是两个不同的哈希因子。其中,所述第一转发节点采用的哈希算法对所述第四哈希因子的计算结果对应于所述第八链路。所述第四哈希因子可以用于将所述报文流从所述第一链路调整到所述第八链路。

S211、所述网络设备确定第九链路的可用带宽被所述报文流占用后未处于拥堵状态,所述第九链路是所述第八转发节点上与所述第四哈希因子对应的链路,所述第九链路是所述第八转发节点与第九转发节点之间的链路。

在具体实施方式中,所述网络设备根据所述第四哈希因子,确定所述报文流通过所述第九链路转发,所述第九链路具体是所述第四转发节点采用的哈希算法对所述第四哈希因子的计算结果对应的链路。所述网络设备根据所述报文流的占用带宽、所述第九链路的总带宽和所述第九链路的已用带宽,确定所述第九链路的可用带宽被所述报文流占用后仍未处于拥堵状态。

用于实现所述网络设备确定所述报文流通过所述第九链路转发的具体实施方式,可以参见前述用于实现所述网络设备确定所述报文流通过所述第三链路转发的具体实施方式,在此不再赘述。此外,用于实现所述网络设备确定所述第九链路的可用带宽被所述报文流占用之后是否处于拥堵状态的具体实施方式,可以参见前述用于实现所述网络设备确定所述第三链路的可用带宽被所述报文流占用之后是否处于拥堵状态的具体实施方式,在此也不再赘述。

S212、所述网络设备将所述第四哈希因子保存到所述报文流的源节点。

可选地,在S212之后,所述源节点在所述报文流中封装所述第四哈希因子,将封装了所述第四哈希因子的报文流转发出去。。网络中的转发节点对封装了所述第四哈希因子的报文流的转发处理方式,可以参见前述所述第一转发节点对封装了所述第一哈希因子的报文流的转发处理方式,在此不再赘述。此外,若控制器作为所述网络设备,所述控制器向所述源节点下发所述第四哈希因子的具体实施方式,可以参见前述控制器向所述源节点下发所述第一哈希因子的具体实施方式,在此也不再赘述。

作为又一种示例,若所述网络设备确定所述第一哈希因子不适用,可以重新选取除S201选取的所述报文流之外通过所述第一链路转发的另一个报文流,然后选取除所述第一链路之外所述第一转发节点上可用于转发所述另一个报文流的另一条链路,再选取与所述另一条链路对应的哈希因子作为备选哈希因子。关于重新选取需要调整转发路径的报文流的处理方式,可以参考前述S201~205,本实施例对此不再赘述。

在S204之后,所述网络设备确定封装了所述第一哈希因子报文流的转发路径至少包括所述第二链路和所述第三链路两个不拥堵的链路。为了确保封装了所述第一哈希因子的报文流的转发路径中不拥堵的链路尽量多,所述网络设备还可以继续验证所述封装了所述第一哈希因子的所述报文流在所述第三链路之后的转发链路是否处于拥堵状态,在确定所述第三链路之后的转发链路未处于拥堵状态之后再将所述第一哈希因子保存到所述报文流的源节点。可选地,在S204与S205之间,本实施例提供的方法还可包括S213。

S213、所述网络设备确定第五链路的可用带宽被所述报文流占用之后仍未处于拥堵状态。其中,所述第五链路是所述第三转发节点上与所述第一哈希因子对应的链路,所述第五链路是所述第三转发节点与第五转发节点之间的链路。

在具体实施方式中,所述网络设备根据所述第一哈希因子,确定所述报文流通过所述第五链路转发,所述第五链路具体是所述第三转发节点采用的哈希算法对所述第一哈希因子的计算结果对应的链路。所述网络设备根据所述报文流的占用带宽、所述第五链路的总带宽和所述第五链路的已用带宽,确定所述第五链路的可用带宽被所述报文流占用后仍未处于拥堵状态。

用于实现所述网络设备确定所述报文流通过所述第五链路转发的具体实施方式,可以参见前述用于实现所述网络设备确定所述报文流通过所述第三链路转发的具体实施方式,本实施例对此不再赘述。此外,用于实现所述网络设备确定所述第五链路的可用带宽被所述报文流占用之后是否处于拥堵状态的具体实施方式,可以参见前述用于实现所述网络设备确定所述第三链路的可用带宽被所述报文流占用之后是否处于拥堵状态的具体实施方式,本实施例对此也不再赘述。

可选地,S213之后,所述网络设备还可以按照S204对所述第三链路的验证方式以及S213对所述第五链路的验证方式,继续依次验证在所述封装了所述第一哈希因子的报文流在所述第五链路之后的各个转发链路是否处于拥堵状态,直至网络设备确定在所述封装了所述第一哈希因子的所述报文流从所述第一转发节点至目的节点之间经过的所有链路均未处于拥堵状态,再执行S205,使得所述第一哈希因子保存到所述报文流的源节点。这样,所述网络设备通过调整所述报文流的转发路径,不仅减轻了所述第一链路的拥堵程度,并且所述报文流调整后的整个转发路径也不会因为所述报文流的占用而出现拥堵,因此,网络负载功能更加均衡。若所述第五链路的可用带宽被所述报文流占用之后处于拥堵状态,则所述网络设备可以确定封装了所述第一哈希因子的报文流必然会经过拥堵的链路。所述网络设备可以确定所述第一哈希因子不适用于调整所述报文流的转发路径。作为一种示例,若所述网络设备在验证第五链路时确定所述第一哈希因子不适用,可以选取除所述第一哈希因子之外与所述第二链路对应的另一个哈希因子,作为备选哈希因子。具体地,本实施例在S204之后还可以包括S214~217。

S214、所述网络设备确定所述第五链路的可用带宽被所述报文流占用之后处于拥堵状态,选取与所述第二链路对应的第三哈希因子。

所述第三哈希因子和所述第一哈希因子是在所述第一转发节点上与所述第二链路对应的两个不同的哈希因子。所述第一转发节点采用的哈希算法对所述第三哈希因子的计算结果对应于所述第二链路。所述第三哈希因子可以用于将所述报文流从所述第一链路调整到所述第二链路。

S215、所述网络设备确定第六链路的可用带宽被所述报文流占用之后仍未处于拥堵状态且第七链路的可用带宽被所述报文流占用之后仍未处于拥堵状态,所述第六链路是所述第二转发节点上与所述第三哈希因子对应的链路,所述第六链路是所述第二转发节点与第六转发节点之间的链路,第七链路是所述第六转发节点上与所述第三哈希因子对应的链路,所述第七链路是所述第六转发节点与第七转发节点之间的链路。

在具体实施方式中,所述网络设备根据所述第三哈希因子,确定封装了第三哈希因子的报文流通过所述第六链路转发并通过所述第七链路转发,所述第六链路具体是所述第二转发节点采用的哈希算法对所述第三哈希因子的计算结果对应的链路,所述第七链路是所述第六转发节点采用的哈希算法对所述第三哈希因子的计算结果对应的链路。所述网络设备根据所述报文流的占用带宽、所述第六链路的总带宽和所述第六链路的已用带宽,确定所述第六链路的可用带宽被所述报文流占用后仍未处于拥堵状态,并根据所述报文流的占用带宽、所述第七链路的总带宽和所述第七链路的已用带宽,确定所述第七链路的可用带宽被所述报文流占用后仍未处于拥堵状态。

用于实现所述网络设备确定所述报文流通过所述第六链路和第七链路转发的具体实施方式,可以参考前述用于实现所述网络设备确定所述报文流通过所述第三链路转发的具体实施方式,本实施例对此不再赘述。此外,用于实现所述网络设备分别确定所述第六链路和所述第七链路的可用带宽被所述报文流占用之后是否处于拥堵状态的具体实施方式,可以参考前述用于实现所述网络设备确定所述第三链路的可用带宽被所述报文流占用之后是否处于拥堵状态的具体实施方式,本实施例对此也不再赘述。

S216、所述网络设备将所述第三哈希因子保存到所述报文流的源节点。

可选的,在S216之后,所述源节点在所述报文流中封装所述第三哈希因子,再将封装了所述第三哈希因子的报文流转发出去。

网络中的转发节点对所述封装了所述第三哈希因子的报文流的转发处理方式,可以参考前述所述第一转发节点对封装了所述第一哈希因子的报文流的转发处理方式,本实施例对此不再赘述。此外,若控制器作为所述网络设备,所述控制器向所述源节点下发所述第三哈希因子的具体实施方式,可以参考前述控制器向所述源节点下发所述第一哈希因子的具体实施方式,本实施例对此也不再赘述。

除了上述包括S214~216的示例之外,若所述网络设备在验证第五链路时确定第一哈希因子不适用,也可以选取除所述第一链路、所述第二链路之外在所述第一转发节点上可用于转发所述报文流的另一条链路,再选取与所述可用于转发所述报文流的另一条链路对应的哈希因子作为备选哈希因子,或者,还可以重新选取除S201选取的所述报文流之外通过所述第一链路转发的另一个报文流,然后选取除所述第一链路之外第一转发节点上可用于转发所述另一个报文流的另一条链路,再选取与所述可用于转发所述另一个报文流的另一条链路对应的哈希因子作为备选哈希因子。关于重新选取所述报文流在所述第一转发节点上调整后的链路的处理方式以及重新选取需要调整转发路径的报文流的处理方式,可以参考前述S201~205,本实施例对此不再赘述。

如图3所示,所述第三链路与所述第四链路是在所述第二转发节点上与不同哈希因子对应的链路,可见,所述第三链路与所述第四链路有可能是相同的链路,也有可能是不同的链路,即,所述第三转发节点与所述第四转发节点有可能是相同的节点,也有可能是不同的节点。当然,在S207和S208中,所述网络设备确定了所述第三链路的可用带宽被所述报文流占用之后处于拥堵状态且所述第四链路的可用带宽被所述报文流占用之后仍未处于拥堵状态,此时所述第三链路与所述第四链路必然是不同的链路,所述第三转发节点与所述第四转发节点也必然是不同的节点。

如图3所示,所述第三链路与所述第六链路是在所述第二转发节点上与不同哈希因子对应的链路,可见,所述第三链路与所述第六链路有可能是相同的链路,也有可能是不同的链路,即,所述第三转发节点与所述第六转发节点有可能是相同的节点,也有可能是不同的节点。当所述第三链路与所述第六链路是同一链路时,所述第六转发节点即是所述第三转发节点,所述第五链路与所述第七链路即是在所述第三转发节点上与不同哈希因子对应的链路,此时,所述第五链路与所述第七链路有可能是相同的链路,也有可能是不同的链路,即,所述第五转发节点与所述第七转发节点有可能是相同的节点,也有可能是不同的节点。当然,在S215和S216中,网络设备确定了所述第五链路的可用带宽被所述报文流占用之后处于拥堵状态且所述第七链路的可用带宽被所述报文流占用之后仍未处于拥堵状态,此时所述第五链路与所述第七链路必然是不同的链路,所述第五转发节点与所述第七转发节点必然是不同的节点。

此外,上述第二哈希因子与上述第三哈希因子都是在所述第一转发节点上与所述第二链路对应的哈希因子,所述第二哈希因子与所述第三哈希因子可以是相同的哈希因子,也可以是不同的哈希因子。当所述第二哈希因子与所述第三哈希因子是相同的哈希因子时,所述第四链路与所述第六链路是相同的链路。当所述第二哈希因子与所述第三哈希因子是不同的哈希因子时,所述第四链路与所述第六链路可能是相同的链路,也可能是不同的链路。

本实施例可以应用于多种不同的网络环境中。在不同的网络环境中,哈希因子可以是报文流中的不同信息。例如,本实施例可以应用于采用多协议标签交换(MultipleProtocol Label Switch,简称MPLS)技术的网络环境。在网络环境采用MPLS技术转发报文的情况下,哈希因子为MPLS标签。又如,本实施例可以应用于采用局域网扩展虚拟化(Virtual eXtensible Local Area Network,简称VXLAN)技术的网络环境。在网络环境采用VXLAN技术转发报文的情况下,哈希因子为源用户数据报协议(User DatagramProtocol,简称UDP)端口号。再如,本实施例可以应用于网络虚拟化通用路由封装(NetworkVirtualization Generic Routing Encapsulation,简称NVGRE)技术的网络环境。在网络环境采用NVGRE技术转发报文的情况下,所述哈希因子为流标识Flow ID。

通过本实施例的技术方案,对于处于拥堵状态的第一链路,网络设备先选取通过第一链路转发的报文流和用于将报文流从第一链路调整到其他链路的哈希因子,并确定在该报文流封装有该哈希因子的情况下该报文流的转发路径至少包括两个不拥堵的链路,然后再将该哈希因子保存到该报文流的源节点。因此,在源节点将该哈希因子封装到报文流之后,相对于现有技术仅能确保报文流的转发路径在源节点上的链路不拥堵,本实施例中报文流能够至少确保报文流的转发路径上具有两个不拥堵的链路,因此,网络负载更加均衡。

为了使得本领域技术人员更清楚地理解本发明实施例的具体应用方式,下面以一个示例性的应用场景对本发明实施例进行介绍。该应用场景涉及到的部分网络架构的示意图为图4。其中,控制器为前述图2实施例中的网络设备,用于控制整个网络实现负载分担。“N”表示转发节点,“L”表示转发节点之间的链路。

具体地,图5为本发明实施例中一种用于实现负载分担的方法的流程示意图。本实施例可以应用到上述示例性的应用场景,所述方法例如可以包括如下内容:

S501、控制器获取整个网络的拓扑信息、负载流量信息和哈希算法信息。

所述拓扑信息、负载流量信息和哈希算法信息可以用于控制器能够选取网络中任意一个拥堵的链路、选取需要调整的报文流以及选取适应于将报文流从拥堵链路调整到非拥堵链路的哈希因子。其中,拓扑信息表示网络中各链路与各转发节点之间的连接关系。负载流量信息包括:网络中各链路上的总带宽,网络中各链路的已占用带宽,网络中各链路上转发的报文流。哈希算法信息表示,网络中各转发节点的哈希算法,或者,网络中各转发节点上哈希因子与链路之间的映射表。

S502、控制器根据链路L1的总带宽和已占用带宽,确定链路L1处于拥堵状态。

具体地,控制器可以计算链路L1的已占用带宽与总带宽的比值,作为链路L1的带宽使用比。控制器判断链路L1的带宽使用比是否超过预设的带宽使用比阈值,如果是则确定链路L1处于拥堵状态。其中,链路L1即相当于图2实施例中的第一链路。

S503、控制器选取通过链路L1转发的报文流F1。

其中,报文流F1可以是链路L1上任意的一个报文流。例如,报文流F1可以是链路L1上占用带宽最大的报文流。又如,报文流F1可以是不再占用链路L1之后链路L1将不再拥堵的报文流。

S504、控制器确定转发节点N1上链路L2和链路L7均可用于转发报文流F1并且链路的可用带宽被报文流F1占用后仍未处于拥堵状态,从链路L2和链路L7中选取链路L2。

例如,链路L2的可用带宽可以大于链路L7的可用带宽,或者,链路L2的带宽使用比可以小于链路L7。即,控制器可以从链路L2和链路L7中优先选取可用带宽最大的链路或带宽使用比最小的链路。

其中,转发节点N1即相当于前述图2实施例中的第一转发节点。链路L2即相当于前述图2实施例中的第二链路。

S505、控制器确定转发节点N1上与链路L2对应的哈希因子包括哈希因子H1和哈希因子H2,并从哈希因子H1和哈希因子H2中选取哈希因子H1。

例如,哈希因子H1可以是控制器从转发节点N1上与链路L2对应的两个哈希因子中随机选取出的。

其中,S505选取出的哈希因子H1,相当于前述图2实施例中的第一哈希因子。

S506、控制器确定报文流F1通过链路L2的转发到达转发节点N2,根据哈希因子H1确定封装有哈希因子H1的报文流F1将通过链路L3转发,并判断链路L3的可用带宽被报文流F1占用之后是否处于拥堵状态,如果未处于拥堵状态则进入S507,如果处于拥堵状态则进入S509。

其中,控制器可以根据网络的拓扑信息确定报文流F1通过链路L2的转发到达转发节点N2。控制器可以根据转发节点N2采用的哈希算法信息确定转发节点N2上链路L3与哈希因子H1相对应,也即,封装了哈希因子H1的报文流F1将通过链路L3转发。控制器可以根据网络的负载流量信息,确定链路L3的总带宽、链路L3的已占用带宽和报文流F1的占用带宽,并计算链路L3的可用带宽被报文流F1占用之后链路L3的可用带宽或带宽使用比,再根据计算出的可用带宽或带宽使用比,判断链路L3的可用带宽被报文流F1占用之后是否处于拥堵状态。

其中,转发节点N2即相当于前述图2实施例中的转发节点N2,链路L3即相当于前述图2实施例中的第三链路。

S507、控制器确定封装了哈希因子H1的报文流F1通过链路L3的转发到达转发节点N3,根据哈希因子H1确定封装了哈希因子H1的报文流F1将通过链路L4转发,并判断链路L4的可用带宽被报文流F1占用之后是否处于拥堵状态,如果未处于拥堵状态则进入S508,如果处于拥堵状态则进入S509。

其中,控制器确定转发节点N3、确定链路L4以及判断链路L4被报文流F1占用之后是否拥堵,可以参考S506针对转发节点N2和链路L3的介绍。本实施例对此不再赘述。

其中,转发节点N3即相当于图2实施例中的第三转发节点,链路L4即相当于图2实施例中的第五链路。

S508、控制器确定封装了哈希因子H1的报文流F1通过链路L4的转发到达转发节点N4,确定转发节点N4为报文流F1的目的节点,将哈希因子H1下发到报文流F1的源节点。

其中,转发节点N4即相当于前述图2实施例中的第五转发节点。

在S508中,当转发节点N4为报文流F1的目的节点时,控制器确定报文流F1在封装有哈希因子H1的情况下从转发节点N1到目的节点之间的转发路径均不拥堵。因此,采用哈希因子H1对报文流F1进行转发路径的调整,不仅能够减轻链路L1的拥堵程序,也能够使报文流F1调整之后不会造成网络出现新的拥堵链路。

S509、控制器选取在转发节点N1上与链路L2对应的哈希因子H2。

S510、控制器确定封装了哈希因子H2的报文流F1通过链路L2的转发到达转发节点N2,根据哈希因子H2确定封装了哈希因子H2的报文流F1将通过链路L5转发,并判断链路L5的可用带宽被报文流F1占用之后是否处于拥堵状态,如果未处于拥堵状态则进入S511,如果处于拥堵状态则进入S513。

其中,控制器确定转发节点N2、确定链路L5以及判断链路L5被报文流F1占用之后是否拥堵,可以参考S506针对转发节点N2和链路L3的介绍。本实施例对此不再赘述。

S511、控制器确定封装了哈希因子H2的报文流F1通过链路L5的转发到达转发节点N5,根据哈希因子H2确定封装了哈希因子H2的报文流F1将通过链路L6转发,并判断链路L6的可用带宽被报文流F1占用之后是否处于拥堵状态,如果未处于拥堵状态则进入S512,如果处于拥堵状态则进入S513。

其中,控制器确定转发节点N5、确定链路L6以及判断链路L6被报文流F1占用之后是否拥堵,可以参考S506针对转发节点N2和链路L3的介绍。本实施例对此不再赘述。

S512、控制器确定封装了哈希因子H2的报文流F1通过链路L6的转发到达转发节点N4,确定转发节点N4为报文流F1的目的节点,将哈希因子H2下发到报文流F1的源节点。

在S512中,当转发节点N4为报文流F1的目的节点时,控制器确定报文流F1在封装有哈希因子H2的情况下从转发节点N1到目的节点之间的转发路径均不拥堵。因此,采用哈希因子H2对报文流F1进行转发路径的调整,不仅能够减轻链路L1的拥堵程序,也能够是报文流F1调整之后不会造成网络出现新的拥堵链路。

如果S509是在S506控制器确定链路L3的可用带宽被报文流F1占用后处于拥堵状态之后执行的,则哈希因子H2相当于图2实施例中的第二哈希因子,链路L5相当于图2实施例中的第四链路,转发节点N5相当于图2实施例中的第四转发节点。如果S509是在S507控制器确定链路L4的可用带宽被报文流F1占用后处于拥堵状态之后执行的,则哈希因子H2相当于图2实施例中的第三哈希因子,链路L4相当于图2实施例中的第六链路,链路L6相当于图2实施例中的第七链路,转发节点N5相当于图2实施例中的第六转发节点,转发节点N4即相当于图2实施例中的第五转发节点也相当于图2实施例中的第七转发节点。

S513、控制器选取可用于转发报文流F1的链路L7。

其中,链路L7相当于前述图2实施例中的第八链路。

S514、控制器确定并选取转发节点N1上与链路L7对应的哈希因子H3。

在本实施例中,在转发节点N1上链路L7可以仅有一个相对应的哈希因子,即哈希因子H3。其中,哈希因子H3相当于前述图2实施例中的第四哈希因子。

S515、控制器确定封装了哈希因子H3的报文流F1通过链路L7的转发到达转发节点N6,根据哈希因子H3确定封装了哈希因子H3的报文流F1将通过链路L8转发,并判断链路L8的可用带宽被报文流F1占用之后是否处于拥堵状态,如果未处于拥堵状态则进入S516,如果处于拥堵状态则进入S517。

其中,控制器确定转发节点N6、确定链路L8以及判断链路L8被报文流F1占用之后是否拥堵,可以参考S506针对转发节点N2和链路L3的介绍。本实施例对此不再赘述。

S516、控制器确定封装了哈希因子H3的报文流F1通过链路L8的转发达到转发节点N4,确定转发节点N4为报文流F1的目的节点,将哈希因子H3下发到报文流F1的源节点。

在S516中,当转发节点N4为报文流F1的目的节点时,控制器确定报文流F1在封装有哈希因子H3的情况下从转发节点N1到目的节点之间的转发路径均不拥堵。因此,采用哈希因子H3对报文流F1进行转发路径的调整,不仅能够减轻链路L1的拥堵程序,也能够使报文流F1调整之后不会造成网络出现新的拥堵链路。

S517、控制器选取通过链路L1转发的报文流F2,重复采用前述S504~517对报文流F1的处理方式对报文流F2进行处理,直至完成将拥堵的链路L1上的部分报文流调整到其他链路上。

S517是个重复选取报文流和哈希因子的过程,最终要完成的是,针对链路L1上某个报文流选取某个哈希因子,控制器确定所述某个报文流在封装有所述某个哈希因子的情况下从转发节点N1至目的节点的整个转发路径均不拥堵,并将所述某个哈希因子下发到所述某个报文流的源节点。针对链路L1的报文流转发路径调整之后,控制器还可以对网络中其他处于拥堵状态的链路进行报文流的转发路径调整,直至网络中不存在拥堵链路为止,这样网络就实现了负载均衡。

本实施例的应用场景仅是本发明实施例的一个示例,本发明实施例不限定于该应用场景。

图6为本发明实施例中一种用于实现负载分担的装置600的结构示意图。所述装置600具体包括:

第一选取单元601,用于选取通过第一链路转发的报文流,其中,所述第一链路是第一转发节点上处于拥堵状态的链路;

第二选取单元602,用于选取可用于转发所述报文流的第二链路,所述第二链路是链路的可用带宽被所述报文流占用后仍未处于拥堵状态的链路,所述第二链路是所述第一转发节点与第二转发节点之间的链路;

第三选取单元603,用于选取与所述第二链路对应的第一哈希因子;

第一确定单元604,用于确定第三链路的可用带宽被所述报文流占用后仍未处于拥堵状态,所述第三链路是所述第二转发节点上与所述第一哈希因子对应的链路,所述第三链路是所述第二转发节点与第三转发节点之间的链路;

第一保存单元605,用于将所述第一哈希因子保存到所述报文流的源节点。

举例来说,图6所示的用于实现负载分担的装置可以用于执行图2所示的方法。具体地,第一选取单元601可以用于执行图2中的S201。第二选取单元602可以用于执行图2中的S202。第三选取单元603可以用于执行图2中的S203。第一确定单元604可以用于执行图2中的S204。第一保存单元605可以用于执行图2中的205。

其中,可选的,所述第一确定单元604,具体可以用于:根据所述第一哈希因子,确定所述报文流通过所述第三链路转发,所述第三链路具体是所述第二转发节点的哈希算法对所述第一哈希因子的计算结果对应的链路;根据所述报文流的占用带宽与所述第三链路的总带宽、已用带宽,确定所述第三链路的可用带宽被所述报文流占用后仍未处于拥堵状态。

可选的,所述装置600还可以包括:

第二确定单元,用于在所述第三选取模块选取所述第一哈希因子之后,确定所述第三链路的可用带宽被所述报文流占用后处于拥堵状态;

第四选取单元,用于选取与所述第二链路对应的第二哈希因子;

第五确定单元,用于确定第四链路的可用带宽被所述报文流占用后仍未处于拥堵状态,所述第四链路是所述第二转发节点上与所述第二哈希因子对应的链路,所述第四链路是所述第二转发节点与第四转发节点之间的链路;

第二保存单元,用于将所述第二哈希因子保存到所述报文流的源节点。

可选的,所述装置600还可以包括:

第六确定单元,用于在所述第一确定单元确定第三链路的可用带宽被所述报文流占用后未处于拥堵状态之后,确定第五链路的可用带宽被所述报文流占用之后仍未处于拥堵状态,所述第五链路是所述第三转发节点上与所述第一哈希因子对应的链路,所述第五链路是所述第三转发节点与第五转发节点之间的链路;

触发单元,用于触发所述第一保存单元将所述第一哈希因子保存到所述报文流的源节点。

可选的,所述装置600还可以包括:

第七确定单元,用于在所述第一确定单元确定第三链路的可用带宽被所述报文流占用后未处于拥堵状态之后,确定所述第五链路的可用带宽被所述报文流占用之后处于拥堵状态;

第五选取单元,用于选取与所述第二链路对应的第三哈希因子;

第八确定单元,用于确定第六链路的可用带宽被所述报文流占用之后仍未处于拥堵状态且第七链路的可用带宽被所述报文流占用之后仍未处于拥堵状态,所述第六链路是所述第二转发节点上与所述第三哈希因子对应的链路,所述第六链路是所述第二转发节点与第六转发节点之间的链路,第七链路是所述第四转发节点上与所述第三哈希因子对应的链路,所述第七链路是所述第六转发节点与第七转发节点之间的链路;

第三保存单元,用于将所述第三哈希因子保存到所述报文流的源节点。

可选的,所述装置600还可以包括:

第二确定单元,用于在所述第一选取单元选取所述第一哈希因子之后,确定所述第三链路的可用带宽被所述报文流占用后处于拥堵状态;

第六选取单元,用于选取可用于转发所述报文流的第八链路,所述第八链路是链路的可用带宽被所述报文流占用后仍未处于拥堵状态的链路,所述第八链路是所述第一转发节点与第八转发节点之间的链路;

第七选取单元,用于选取与所述第八链路对应的第四哈希因子;

第九确定单元,用于确定第九链路的可用带宽被所述报文流占用后未处于拥堵状态,所述第九链路是所述第八转发节点上与所述第四哈希因子对应的链路,所述第九链路是所述第八转发节点与第九转发节点之间的链路;

第四保存单元,用于将所述第四哈希因子保存到所述报文流的源节点。

本实施例中装置600对应于图2所示实施例中提及的网络设备。本实施例中装置600执行方法的具体实施方式,可以参见前述图2所示的实施例的详细介绍,本实施例在此不再赘述。

通过本实施例的技术方案,对于处于拥堵状态的第一链路,装置600通过第一选取单元601选取通过第一链路转发的报文流,通过第二选取单元602和第三选取单元603选取出用于将报文流从第一链路调整到其他链路的哈希因子,通过第一确定单元604确定在该报文流封装有该哈希因子的情况下该报文流的转发路径至少包括两个不拥堵的链路,通过第一保存单元605将该哈希因子保存到该报文流的源节点。因此,在源节点将该哈希因子封装到报文流之后,相对于现有技术仅能确保报文流的转发路径在源节点上的链路不拥堵,本实施例中报文流能够至少确保报文流的转发路径上具有两个不拥堵的链路,因此,网络负载更加均衡。

图7为本发明实施例中一种网络设备700的硬件结构示意图。网络设备700可用于实现负载分担。即网络设备700可用于执行上述实施例中提供的方法。在本实施例中,网络设备700包括:处理器701、存储器702、网络接口703、总线系统704。

所述总线系统704,用于将网络设备700的各个硬件组件耦合在一起。

所述网络接口703,用于实现网络设备700与至少一个其它网络设备之间的通信连接,可以使用互联网,广域网,本地网,城域网等方式。

所述存储器702,用于存储程序指令和数据。

所述处理器701,用于读取存储器702中存储的指令和数据,执行以下操作:

选取通过第一链路转发的报文流,其中,所述第一链路是第一转发节点上处于拥堵状态的链路;

选取可用于转发所述报文流的第二链路,所述第二链路是链路的可用带宽被所述报文流占用后仍未处于拥堵状态的链路,所述第二链路是所述第一转发节点与第二转发节点之间的链路;

选取与所述第二链路对应的第一哈希因子;

确定第三链路的可用带宽被所述报文流占用后仍未处于拥堵状态,所述第三链路是所述第二转发节点上与所述第一哈希因子对应的链路,所述第三链路是所述第二转发节点与第三转发节点之间的链路;

将所述第一哈希因子保存到所述报文流的源节点。

可选的,在选取所述第二链路对应的第一哈希因子之后,所述处理器701还可以执行以下操作:

确定所述第三链路的可用带宽被所述报文流占用后处于拥堵状态,选取与所述第二链路对应的第二哈希因子;

确定第四链路的可用带宽被所述报文流占用后仍未处于拥堵状态,所述第四链路是所述第二转发节点上与所述第二哈希因子对应的链路,所述第四链路是所述第二转发节点与第四转发节点之间的链路;

将所述第二哈希因子保存到所述报文流的源节点。

可选的,在确定第三链路的可用带宽被所述报文流占用后未处于拥堵状态之后,所述处理器701还可以执行以下操作:

确定第五链路的可用带宽被所述报文流占用之后仍未处于拥堵状态,执行所述将所述第一哈希因子保存到所述报文流的源节点;

所述第五链路是所述第三转发节点上与所述第一哈希因子对应的链路,所述第五链路是所述第三转发节点与第五转发节点之间的链路。

可选的,在确定第三链路的可用带宽被所述报文流占用后未处于拥堵状态之后,所述处理器701还可以执行以下操作:

确定所述第五链路的可用带宽被所述报文流占用之后处于拥堵状态;

选取与所述第二链路对应的第三哈希因子;

确定第六链路的可用带宽被所述报文流占用之后仍未处于拥堵状态且第七链路的可用带宽被所述报文流占用之后仍未处于拥堵状态,所述第六链路是所述第二转发节点上与所述第三哈希因子对应的链路,所述第六链路是所述第二转发节点与第六转发节点之间的链路,第七链路是所述第六转发节点上与所述第三哈希因子对应的链路,所述第七链路是所述第六转发节点与第七转发节点之间的链路;

将所述第三哈希因子保存到所述报文流的源节点。

可选的,在选取与所述第二链路对应的第一哈希因子之后,所述处理器701还可以执行以下操作:

确定所述第三链路的可用带宽被所述报文流占用后处于拥堵状态,选取可用于转发所述报文流的第八链路,所述第八链路是链路的可用带宽被所述报文流占用后仍未处于拥堵状态的链路,所述第八链路是所述第一转发节点与第八转发节点之间的链路;

选取与所述第八链路对应的第四哈希因子;

确定第九链路的可用带宽被所述报文流占用后未处于拥堵状态,所述第九链路是所述第八转发节点上与所述第四哈希因子对应的链路,所述第九链路是所述第八转发节点与第九转发节点之间的链路;

将所述第四哈希因子保存到所述报文流的源节点。

可选的,所述处理器701为了确定第三链路的可用带宽被所述第一报文流占用后仍未处于拥堵状态,可以执行以下操作:

根据所述第一哈希因子,确定所述报文流通过所述第三链路转发,所述第三链路具体是所述第二转发节点的哈希算法对所述第一哈希因子的计算结果对应的链路;

根据所述报文流的占用带宽与所述第三链路的总带宽、已用带宽,确定所述第三链路的可用带宽被所述报文流占用后仍未处于拥堵状态。

本实施例中网络设备700对应于前述图2所示的实施例中的网络设备。本实施例中网络设备700的处理器701执行操作的各种具体实施方式,可以参见前述图2所示的实施例的详细介绍,本实施例在此不再赘述。

本发明实施例中提到的“第一转发节点”、“第一链路”、“第一哈希因子”等名称中的“第一”只是用来做名字标识,并不代表顺序上的第一。该规则同样适用于“第二”、“第三”、“第四”、“第五”、“第六”、“第七”、“第八”和“第九”。

本发明实施例中的处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。这些指令可以通过其中的处理器以配合实现及控制,用于执行本发明实施例揭示的方法。上述处理器还可以是通用处理器、数字信号处理器(Digital Signal Processing,DSP)、专用集成电路(application specific integrated circuit)、现成可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

其中,上述通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器,解码器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。

另外,总线系统除了包括数据总线之外,还可包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图7中将各种总线都标为总线系统。

通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到上述实施例方法中的全部或部分步骤可借助软件加通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者诸如媒体网关等网络通信设备)执行本发明各个实施例或者实施例的某些部分所述的方法。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于方法实施例和设备实施例而言,由于其基本相似于系统实施例,所以描述得比较简单,相关之处参见系统实施例的部分说明即可。以上所描述的设备及系统实施例仅仅是示意性的,其中作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述仅是本发明的优选实施方式,并非用于限定本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

相关技术
  • 一种负载分担路由器以及实现负载分担的设备、方法
  • 一种用于实现负载分担的方法和装置
技术分类

06120112789999