CN113595919A - 一种负载分担的方法及装置 - Google Patents
一种负载分担的方法及装置 Download PDFInfo
- Publication number
- CN113595919A CN113595919A CN202010362614.XA CN202010362614A CN113595919A CN 113595919 A CN113595919 A CN 113595919A CN 202010362614 A CN202010362614 A CN 202010362614A CN 113595919 A CN113595919 A CN 113595919A
- Authority
- CN
- China
- Prior art keywords
- link
- packet
- message
- token
- forwarding
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 65
- 230000015654 memory Effects 0.000 claims description 21
- 238000004590 computer program Methods 0.000 claims description 13
- 238000013507 mapping Methods 0.000 claims description 6
- 238000004364 calculation method Methods 0.000 description 11
- 238000004422 calculation algorithm Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000011022 operating instruction Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
- H04L47/125—Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/24—Multipath
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/215—Flow control; Congestion control using token-bucket
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
- H04L47/2441—Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/29—Flow control; Congestion control using a combination of thresholds
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请实施例公开了一种负载分担的方法,网络设备获取第一报文之后,可以确定转发第一报文的链路。当网络设备确定可以用于转发第一报文的链路包括多条链路时,若确定多条链路中的第一链路对应的令牌桶的令牌使用率小于第一阈值,说明第一链路当前并未过载,第一链路可能具备转发第一报文的能力,故而网络设备选择第一链路转发第一报文,从而提升前述多个链路的总带宽利用率。
Description
技术领域
本申请涉及通信领域,尤其涉及一种负载分担的方法及装置。
背景技术
在通信技术中,网络设备可以用于转发数据。网络设备在转发数据时,若到达目的设备的链路有多条,网络设备可以采用负载分担技术将数据分配到该多条链路上转发。
目前,网络设备利用负载分担技术转发数据时,存在前述多条链路的总带宽利用率低的问题。因此,急需一种方案,可以解决上述问题。
发明内容
本申请实施例提供了一种负载分担的方法及装置,可以提升多条链路的总带宽利用率。
第一方面,本申请实施例提供了一种负载分担的方法,在本申请实施例中,当转发报文的链路具备多条时,为每条链路分配一个令牌桶,基于每条链路的令牌桶选择其中一条链路转发报文,以提升该多条链路的总带宽利用率。具体地,网络设备获取第一报文之后,可以确定转发第一报文的链路。当网络设备确定可以用于转发第一报文的链路包括多条链路时,网络设备可以根据该多条链路分别对应的令牌桶确定转发第一报文的链路。具体地,当网络设备确定第一链路对应的令牌桶的令牌使用率小于第一阈值时,说明第一链路当前并未过载,即第一链路当前的可用带宽可能足以转发第一报文,换言之,第一链路可能具备转发第一报文的能力,故而网络设备选择第一链路转发第一报文。其中,第一链路为前述可以用于转发第一报文的多条链路中的其中一条链路。通过以上描述可知,在本申请实施例中,在第一链路未过载时,选择第一链路转发第一报文,可以使得第一链路的带宽得到充分利用,从而提升了前述多个链路的总带宽利用率。
在一种可能的实现方式中,考虑到第一链路对应的令牌桶的使用率小于第一阈值,说明第一链路可能具备转发第一报文的能力。若第一链路实际上并不具备转发第一报文的能力,则可能会使得第一报文在转发过程中丢包。为了避免这个问题,网络设备还可以进一步确定第一链路是否具备转发第一报文的能力,并在确定第一链路具备转发第一报文的能力的情况下,选择第一链路转发第一报文。
在一种可能的实现方式中,可以用于转发第一报文的链路除了第一链路之外,还包括第二链路。网络设备在选择用于转发第一报文的链路时,按照预设顺序,先遍历第二链路对应的令牌桶,再遍历第一链路对应的令牌桶。而且,网络设备是在确定第二链路对应的令牌使用率大于或者等于第一阈值的情况下,才选择第一链路转发第一报文的。由于第二链路对应的令牌桶的令牌使用率大于或者等于第一阈值,表示第二链路的带宽利用率比较高,第二链路当前不具备足够的资源来转发第一报文。由此可见,利用本方案,在第二链路的带宽得到充分利用、并且第一链路具备转发第一报文的能力的情况下,才通过第一链路转发第一报文,从而提升了第一链路和第二链路的总带宽利用率。
在一种可能的实现方式中,网络设备确定第一链路是否具备转发第一报文的能力在具体实现时,可以比较第一报文的长度和第一链路对应的令牌桶中的令牌数量,若第一链路对应的令牌桶中的令牌数量大于或者等于第一报文的长度,则说明第一链路中的令牌指示的数据转发能力、大于转发第一报文所需的数据转发能力。因此,网络设备可以确定第一链路具备转发第一报文的能力。
在一种可能的实现方式中,网络设备确定第一链路是否具备转发第一报文的能力在具体实现时,网络设备可以根据第一报文的长度扣除第一链路对应的令牌桶中的令牌,若网络设备扣除第一链路对应的令牌桶中的令牌之后,第一链路对应的令牌桶的令牌使用率小于第二阈值,则说明第一链路具备转发第一报文的能力。其中,第二阈值是一个小于1且接近于1的值。由于根据第一报文的长度扣除第一链路对应的令牌桶中的令牌之后,第一链路对应的令牌桶的令牌使用率依然小于1,这说明即使第一报文通过第一链路进行转发,第一链路对应的令牌桶中还有剩余的令牌。因此,可以确定第一链路具备转发第一报文的能力。
在一种可能的实现方式中,考虑到若属于相同报文流的报文被分配到不同的链路上转发,则可能会出现报文流乱序的问题。在本申请实施例中,可以使属于同一报文流的报文通过相同的链路转发,从而避免报文流乱序。对于这种情况,网络设备选择第一链路发送第一报文之后,可以进一步获取第一报文的特征信息,并保存第一对应关系。该第一对应关系包括第一报文的特征信息和第一链路的标识。其中,第一报文的特征信息用于指示第一报文所属的报文流。前述第一对应关系用于指示网络设备若在获取第一报文之后继续获取到与第一报文属于同一报文流的第二报文,通过第一链路转发第二报文。
在一种可能的实现方式中,为了保证第二报文能够通过第一链路转发,第一对应关系除了包括第一报文的特征信息和第一链路的标识之外,还可以包括第一链路对应的令牌桶的标识。第一链路的令牌桶标识可以用于确定第一链路是否具备转发第二报文的能力。换言之,网络设备获取到第二报文之后,可以根据第一对应关系确定第一链路是否具备转发第二报文的能力,并在第一链路具备转发第二报文的能力时,选择第一链路转发第二报文。
在一种可能的实现方式中,若网络设备在选择第一链路转发第一报文之后,继续获取到与第一报文属于同一报文流的第三报文,网络设备可以确定转发第三报文的多条链路,而后,网络设备可以确定本地是否存储有包括第三报文的特征信息的对应关系。在本申请中,网络设备可以根据第三报文的特征信息获得第一对应关系,并根据第一对应关系初步确定第一链路。而后,网络设备可以在确定第二链路具备转发第三报文的能力的情况下,选择第一链路转发第三报文。采用这种方式,不仅可以充分利用第一链路的带宽,还可以避免报文流乱序。其中,第一对应关系包括第一报文的特征信息与第一链路的标识,第一报文的特征信息用于标识第一报文所属的报文流,第一对应关系用于指示网络设备通过第一链路转发与第一报文属于同一报文流的报文。
在一种可能的实现方式中,若网络设备确定第一链路不具备转发第三报文的能力,则网络设备可以进一步确定是否选择第二链路发送第三报文。例如,网络设备可以在第二链路对应的令牌桶使用率小于第一阈值的情况下,选择而第二链路发送第三报文。或者,网络设备可以在第二链路对应的令牌桶使用率小于第一阈值、且第二链路具备转发第三报文的能力的情况下,选择第三链路转发第二报文。
在一种可能的实现方式中,网络设备选择第二链路发送第三报文之后,可以将前述第一对应关系更新为第二对应关系,第二对应关系包括第一报文的特征信息和第二链路的标识。其中,第一报文的特征信息用于指示第一报文所属的报文流。前述第二对应关系用于指示网络设备若在获取第三报文之后继续获取到与第三报文属于同一报文流的第四报文,通过第二链路转发第四报文。
在一种可能的实现方式中,为了保证第四报文能够通过第二链路转发,第二对应关系除了包括第一报文的特征信息和第二链路的标识之外,还可以包括第二链路对应的令牌桶的标识。第二链路的令牌桶标识可以用于确定第二链路是否具备转发第四报文的能力。换言之,网络设备获取到第四报文之后,可以根据第二对应关系确定第二链路是否具备转发第四报文的能力,并在第二链路具备转发第四报文的能力时,选择第二链路转发第四报文。
第二方面,本申请实施例提供了一种负载分担的装置,所述装置包括:获取单元、确定单元和选择单元。获取单元,用于获取第一报文;确定单元,用于确定用于转发所述第一报文的多条链路;选择单元,用于在确定第一链路对应的令牌桶的令牌使用率小于第一阈值的情况下,选择所述第一链路发送所述第一报文,所述第一链路为所述多条链路中的一条链路。
在一种可能的实现方式中,所述选择单元具体用于:在所述第一链路对应的令牌桶的令牌使用率小于第一阈值、且所述第一链路具备转发所述第一报文的能力的情况下,选择所述第一链路发送所述第一报文,所述第一链路具备转发所述第一报文的能力是根据所述第一报文的长度和所述第一链路对应的令牌桶中的令牌数量确定的。
在一种可能的实现方式中,所述多条链路还包括第二链路,所述选择单元具体用于:在所述第二链路对应的令牌桶的令牌使用率大于或者等于所述第一阈值、所述第一链路对应的令牌桶的令牌使用率小于第一阈值、且所述第一链路具备转发所述第一报文的能力的情况下,选择所述第一链路发送所述第一报文。
在一种可能的实现方式中,所述第一链路具备转发所述第一报文的能力,包括:根据所述第一报文的长度扣除所述第一链路对应的令牌桶中的令牌之后,所述第一链路对应的令牌桶的令牌使用率小于第二阈值;或者,所述第一链路对应的令牌桶中的令牌数量大于或者等于所述第一报文的长度。
在一种可能的实现方式中,所述获取单元还用于获取所述第一报文的特征信息;所述装置还包括保存单元,用于保存第一对应关系,所述第一对应关系包括所述第一报文的特征信息与所述第一链路的标识,所述第一报文的特征信息用于标识所述第一报文所属的报文流;所述第一对应关系用于指示通过所述第一链路转发所述第二报文,所述第二报文与所述第一报文属于同一报文流。
在一种可能的实现方式中,所述第一对应关系还包括所述第一链路对应的令牌桶的标识,所述第一链路对应的令牌桶的标识用于确定所述第一链路是否具备转发所述第二报文的能力。
在一种可能的实现方式中,所述获取单元还用于获取第三报文;所述确定单元还用于确定用于转发所述第三报文的多条链路;所述获取单元还用于根据所述第三报文的特征信息获取第一对应关系;所述确定单元还用于根据所述第一对应关系中的第一链路的标识,确定所述第一链路是否具备转发所述第三报文的能力;所述选择单元还用于若确定所述第一链路具备转发所述第三报文的能力,选择所述第一链路发送所述第三报文。其中:所述第一对应关系包括所述第一报文的特征信息与所述第一链路的标识,所述第一报文的特征信息用于标识所述第一报文所属的报文流,所述第一对应关系用于指示所述网络设备通过所述第一链路转发与所述第一报文属于同一报文流的报文。
在一种可能的实现方式中,所述选择单元还用于:若确定所述第一链路不具备转发所述第三报文的能力,在第二链路对应的令牌桶的令牌使用率小于所述第一阈值的情况下,选择所述第二链路发送所述第三报文。
在一种可能的实现方式中,所述保存单元还用于:将所述第一对应关系更新为第二对应关系,所述第二对应关系包括所述第一报文的特征信息和所述第二链路的标识,所述第二对应关系用于指示通过所述第二链路转发第四报文,所述第四报文与所述第三报文属于同一报文流。
第三方面,本申请实施例提供了一种设备,该设备包括:处理器和存储器;所述存储器,用于存储指令或计算机程序;所述处理器,用于执行所述指令或计算机程序,执行以上第一方面以及任意一项所述的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,包括指令或计算机程序,当其在计算机上运行时,使得计算机执行以上第一方面以及任意一项所述的方法。
第五方面,本申请实施例提供了一种包含指令或计算机程序的计算机程序产品,当其在计算机上运行时,使得计算机执行以上第一方面以及任意一项所述的方法。
附图说明
图1为本申请实施例提供的一种负载分担的方法的流程示意图;
图2为本申请实施例提供的一种报文转发方法的流程示意图;
图3为本申请实施例提供的一种示例性应用场景示意图;
图4为本申请实施例提供的又一个示例性应用场景示意图;
图5为本申请实施例提供的一种负载分担的装置的结构示意图;
图6为本申请实施例提供的一种设备的结构示意图。
具体实施方式
为方便理解,首先对负载分担技术进行简单介绍。
负载分担技术由于具备增加网络带宽、充分利用网络资源以及增加链路可靠性等优点被广泛应用。
在一些实施例中,当到达同一目的设备的路由包括多条,且该多条路由的优先级相同、并且高于其它达到该目的设备的路由时,路由协议可以认为该多条路由均为有效的路由。如果该路由协议在所有活跃的路由协议中优先级最高,那么前述多条路由都会被下发到指导报文转发的路由表或者媒体接入控制(media access control,MAC)表中。在这种情况下,网络设备也需要支持多路由模式。所谓支持多路由模式,指的是允许配置多条到达同一目的设备的路由。这样一来,网络设备在转发数据时,若前述多条路由被匹配上,则网络设备可以采用相应的负载分担策略将数据分配到前述多条路由指示的多条链路进行转发,从而达到负载分担的目的。本申请实施例中提及的网络设备例如可以为路由器或者交换机。
其中:支持负载分担的路由协议包括:开放式最短路径优先(open shortest pathfirst,OSPF)协议、边界网关协议(Border Gateway Protocol,BGP)、中间系统到中间系统(intermediate system to intermediate system,IS-IS)协议、以及静态路由协议。
负载分担可以包括等价多路径(equal cost multi-path,ECMP)负载分担和非等价多路径(unequal cost multi-path,UCMP)负载分担式。所谓ECMP负载分担,指的是不考虑多条链路的带宽,将数据流量分配到达到同一目的设备的多条链路上转发。所谓UCMP负载分担,指的是考虑前述多条链路的带宽,将数据分配到该多条链路上转发,各链路分担的数据与其自身的带宽相匹配,从而使得负载分担的效果更合理。例如,链路1的带宽大于链路2的带宽,则通过链路1转发的数据量大于通过链路2转发的数据量。UCMP负载分担在具体实现时,可以将各链路的带宽保存在指导报文转发的路由表或者MAC表中,网络设备基于转发表项中的带宽,确定负载分担策略。
在又一些实施例中,可以将几个相同类型的物理接口捆绑在一起,作为一个逻辑接口使用,以实现负载分担。这种负载分担方式也可以被称为trunk接口负载分担。此处提及的trunk接口即为前述捆绑了多个物理接口的逻辑接口。对于trunk接口负载分担,网络设备在转发报文时,若确定出接口是trunk接口,则网络设备可以采用特定的算法例如哈希(HASH)算法确定出转发该报文的物理接口,从而基于该物理接口转发报文。
对于trunk接口负载分担而言,虽然指导报文转发的路由表或者MAC表中仅包括一条路由,该路由的出接口为trunk接口。但是,由于trunk接口包括多个物理接口,因此,当确定出接口为trunk接口时,可以用于转发报文的链路实际上也有多条。
通过以上描述可知,对于网络设备而言,其在转发报文时,若确定转发报文的链路包括多条,网络设备需要采用相应的负载分担策略,从前述多条链路中选择出一条链路来转发报文。负载分担策略的选择,对负载分担的效果有着十分重要的影响。本申请实施例中提及的负载分担效果,可以是该多条链路的总带宽利用率。
目前,网络设备在确定转发报文的链路有多条时,可以根据哈希算法确定转发该报文的具体链路。具体地,网络设备可以利用哈希算法对接收到的报文进行计算,得到对应的哈希值,然后根据该哈希值确定转发该报文的链路。举例说明,对于ECMP负载分担而言,假设到达同一目的设备的链路有3条,网络设备可以利用哈希算法例如根据报文的五元组信息计算得到第一哈希值,并对第一哈希值与3进行求模计算,若计算结果为1,则通过链路1转发报文,若计算结果为2,则通过链路2转发报文,若计算结果为3,则通过链路3转发报文。再举例说明,对于UCMP负载分担而言,假设到达同一目的地的链路有3条,链路1的带宽等于链路2的带宽,链路2的带宽小于链路3的带宽,网络设备可以利用哈希算法例如根据报文的五元组信息计算得到第一哈希值,并对第一哈希值与4进行求模计算,若计算结果为1,则通过链路1转发报文,若计算结果为2,则通过链路2转发报文,若计算结果为3或4,则通过链路3转发报文。
采用上述方法,虽然可以将数据负载分担到多条链路上,但是却不能很好的利用多条链路的总带宽利用率,即空闲链路不能被充分利用,而部分链路却负载过高。这是因为利用哈希算法来确定转发报文的链路时,确定结果与参与哈希计算的内容以及具体的哈希算法有关。例如,采用对报文的五元组信息进行哈希计算这种方式,假设某一条报文流的数据量很大,而由于属于同一条报文流的报文的五元组信息是相同的,因此,该报文流中的所有报文都会通过同一条链路转发。这是因为利用哈希算法确定转发属于该报文流的报文的链路时,针对属于该报文流中的每条报文计算得到的第一哈希值均相同。这就导致转发该报文流的链路负载过高,而其它空闲链路却不能得到充分利用。又如,由于哈希算法的选择,使得大部分数据被分配到某一条链路例如链路1上转发,而极少部分数据被分配到其它链路上。这就导致链路1的负载过高,而其它链路却不能得到充分利用。
关于报文的五元组信息,需要说明的是,对于二层转发报文而言,报文的五元组信息包括:源MAC地址、目的MAC地址、源互联网协议(Internet Protocol,IP)地址、目的IP地址和传输层协议。对于三层转发报文而言,报文的五元组信息包括:源IP地址、源端口、目的IP地址、目的端口和传输层协议。报文的五元组信息可以用于标识该报文所属的报文流,因为同一报文流中所有报文的五元组信息均相同。
鉴于此,本申请实施例提供了一种负载分担的方法,可以提升前述多条链路的总带宽利用率。以下结合附图介绍该方法。
参见图1,该图为本申请实施例提供的一种负载分担的方法的流程示意图。在介绍图1所示的报文转发方法之前,首先对图1涉及的令牌桶(token bucket)技术进行介绍。
令牌桶技术是一种常见的流量测量技术,常用于流量的限制。利用令牌桶技术对流量进行限制在具体实现时,可以由用户设定令牌桶的容量,即设置令牌桶中最多可以容纳的令牌数量。令牌桶中的令牌数量可以用于指示数据转发能力。具体地,当一条链路对应一个令牌桶时,该令牌桶中包括的令牌数量可以用于指示该链路当前的可用带宽。当网络设备接收到报文时,可以根据报文的长度以及链路对应的令牌桶中令牌的数量,确定该链路是否具备转发该报文的能力。报文长度和令牌数量之间可以具备一定的换算关系,例如,一字节报文对应一个令牌,又如,一比特报文对应一个令牌。若该链路对应的令牌桶中的令牌数量比报文长度对应的令牌数量多,说明该链路具备转发该报文的能力。网络设备即可通过该链路转发报文,并根据报文的长度扣除令牌桶中的令牌数量。若该链路对应的令牌桶中的令牌数量比报文的长度对应的令牌数量少,说明该链路不具备转发该报文的能力,网络设备则不选择该链路转发报文,此时令牌桶中的令牌数量不会被扣除。在实际应用中,网络设备或者其它管理令牌桶的设备还可以按照一定速率向令牌桶中新增令牌,例如根据链路的带宽向令牌桶中新增令牌,以使得令牌桶中的令牌数量可以体现链路的实时数据转发能力。
关于根据报文长度扣减令牌,现举例说明,假设令牌桶中的令牌数量为P,一个令牌表示具备转发1比特报文的能力。报文长度为Q比特,则扣减之后令牌桶中的令牌数量为P-Q。
接下来对图1所示的负载分担的方法进行介绍,该方法例如可以通过如下S101-S102实现。
S101:网络设备获取第一报文,并确定用于转发第一报文的多条链路。
网络设备可以从其它设备处接收第一报文,也可以生成第一报文,本申请实施例不做具体限定。第一报文可以是二层转发报文,也可以三层转发报文,本申请实施例不作具体限定。
网络设备获取第一报文之后,可以通过查找本地存储的用于指导报文转发的转发表,确定转发第一报文的出接口,从而将该第一报文通过该出接口指示的链路转发给下一跳网络设备。具体地,若第一报文为二层转发报文,则网络设备可以根据第一报文中的目的MAC地址查找本地存储的MAC表,从而确定转发第一报文的出接口。若第一报文为三层转发报文,则网络设备可以根据第一报文的目的IP地址查找本地存储的路由表,从而确定转发第一报文的出接口。由于路由表和MAC表,是通信领域的专业术语,具体内容此处不做详细说明。
在本申请实施例的一种实现方式中,网络设备确定转发第一报文的多条链路在具体实现时,例如可以是网络设备确定路由表中存在多个与第一报文的目的IP地址相匹配的出接口,又如可以是网络设备确定MAC表中存在多个与第一报文的目的MAC地址相匹配的出接口,再如可以是网络设备确定转发第一报文的出接口为trunk接口。具体地,可以结合下表1和下表2进行理解,表1和表2分别示出了两种可能的路由表。
表1
地址前缀 | 出接口 |
20.1.1.0 | GE3/0/0 |
20.1.1.0 | GE2/0/0 |
对于表1所示的路由表,假设网络设备确定与第一报文的目的IP地址匹配的地址前缀20.1.1.0对应两个出接口,分别为GE3/0/0和GE2/0/0,则网络设备可以确定转发第一报文的链路包括两条链路,其中一条链路指的是通过出接口GE3/0/0指示的链路到达目的网络设备例如网络设备1的链路,另外一条链路是通过出接口GE2/0/0指示的链路到达目的网络设备例如网络设备2的链路。
表2
地址前缀 | 出接口 |
20.1.1.0 | trunk-1 |
对于表2所示的路由表,假设网络设备确定与第一报文的目的IP地址匹配的地址前缀为20.1.1.0,而该地址前缀对应的出接口为trunk-1接口,则表示该出接口是捆绑了多个物理接口的逻辑接口,例如,trunk-1可以包括表1所示的接口GE3/0/0和接口GE2/0/0。对于这种情况,网络设备也可以确定转发第一报文的链路包括第两条链路。
在一些实施例中,转发第一报文的链路除了以上举例中提及的两条链路之外,也可以是三条、甚至四条,本申请实施例不做具体限定。
S102:网络设备在确定第一链路对应的令牌桶的令牌使用率小于第一阈值的情况下,选择第一链路发送第一报文。
在本申请实施例中,第一链路为用于转发第一报文的多条链路中的其中一条链路。
在本申请实施例中,可以为前述用于转发第一报文的多条链路分别配置一个令牌桶。各链路对应的令牌桶的容量根据该链路的带宽确定。即:第一链路对应的令牌桶的容量可以根据第一链路的带宽确定。其中,令牌桶的容量是令牌桶中最多可以容纳的令牌数量。
网络设备确定用于转发第一报文的多条链路之后,可以遍历各个链路对应的令牌桶,根据各令牌桶中的令牌使用率选择用于转发第一报文的链路。假设用于转发第一报文的链路包括第一链路和第二链路,则网络设备例如可以先遍历第一链路对应的令牌桶、在遍历第二链路对应的令牌桶。
在本申请实施例中,网络设备中可以存储有各链路对应的令牌桶的相关信息。此处提及的网络设备遍历各链路分别对应的令牌桶,例如可以是网络设备查找各链路对应的令牌桶的相关信息。关于链路对应的令牌桶的相关信息,可以结合下表3进行理解。
表3
令牌桶标识 | 令牌桶容量 | 剩余令牌数量 | 令牌使用率 |
a | C1 | M1 | 1-M1/C1 |
b | C2 | M2 | 1-M2/C2 |
表3只是为了方便理解而示出,其并不构成对本申请实施例的限定。在本申请实施例中,网络设备存储的令牌桶的相关信息也可以不包括表3所示的令牌使用率。网络设备在确定令牌桶的令牌使用率时,可以获取令牌桶容量和剩余令牌数量,并通过表3所示的计算公式计算得到令牌使用率。这样做的好处在于,剩余令牌数量发生改变的频率会比较高,因为通过链路转发报文时,需要扣减该链路对应的令牌桶中的令牌,即需要修改表3所示的“剩余令牌数量”;若往令牌桶中新增令牌,也需要对该令牌桶的“剩余令牌数量”进行修改。一旦“剩余令牌数量”被修改,则该令牌桶对应的“令牌使用率”也需要被修改。因此,若不存储令牌桶的令牌使用率,则可以减少数据修改量,从而节省网络设备的计算资源。
在本申请实施例中,若网络设备确定第一链路对应的令牌桶的令牌使用率小于第一阈值,则说明第一链路当前并未过载,即第一链路当前的可用带宽可能足以转发第一报文。换言之,第一链路可能具备转发第一报文的能力,故而网络设备选择第一链路转发第一报文。其中,第一阈值是一个预先确定的值,本申请实施例不具体限定第一阈值,第一阈值例如可以等于0.9。
通过以上描述可知,在本申请实施例中,在第一链路未过载时,选择第一链路转发第一报文,可以使得第一链路的带宽得到充分利用,从而提升了前述多个链路的总带宽利用率。
如前文所述,第一链路对应的令牌桶的使用率小于第一阈值,说明第一链路可能具备转发第一报文的能力。若第一链路实际上并不具备转发第一报文的能力,则可能会使得第一报文在转发过程中丢包。为了避免这个问题,在一些实施例中,网络设备还可以进一步确定第一链路是否具备转发第一报文的能力,并在确定第一链路具备转发第一报文的能力的情况下,选择第一链路转发第一报文。
在本申请实施例中,考虑到令牌桶中的令牌数量可以用于指示数据转发能力。因此,网络设备可以根据第一报文的长度和第一链路对应的令牌桶中的令牌数量,确定第一链路是否具备转发第一报文的能力。具体地,网络设备确定第一链路是否具备转发第一报文的能力在具体实现时,可以有多种实现方式,以下介绍两种可能的实现方式。
作为一个示例,网络设备可以比较第一报文的长度和第一链路对应的令牌桶中的令牌数量,若第一链路对应的令牌桶中的令牌数量大于或者等于第一报文的长度,则说明第一链路中的令牌指示的数据转发能力、大于转发第一报文所需的数据转发能力。因此,网络设备可以确定第一链路具备转发第一报文的能力。
作为又一个示例,网络设备可以根据第一报文的长度扣除第一链路对应的令牌桶中的令牌,若网络设备扣除第一链路对应的令牌桶中的令牌之后,第一链路对应的令牌桶的令牌使用率小于第二阈值,则说明第一链路具备转发第一报文的能力。其中,第二阈值是一个小于1且接近于1的值,例如,第二阈值等于0.95,又如,第二阈值等于0.99。由于根据第一报文的长度扣除第一链路对应的令牌桶中的令牌之后,第一链路对应的令牌桶的令牌使用率依然小于1,这说明即使第一报文通过第一链路进行转发,第一链路对应的令牌桶中还有剩余的令牌。因此,可以确定第一链路具备转发第一报文的能力。
在本申请实施例的一个示例中,前述可以用于转发第一报文的链路除了第一链路之外,还包括第二链路。网络设备在选择用于转发第一报文的链路时,先遍历第二链路对应的令牌桶,再遍历第一链路对应的令牌桶。而且,网络设备是在确定第二链路对应的令牌使用率大于或者等于第一阈值的情况下,才选择第一链路转发第一报文的。换言之,网络设备在第二链路对应的令牌桶的令牌使用率大于或者等于第一阈值、第一链路对应的令牌桶的令牌使用率小于第一阈值、且第一链路具备转发所述第一报文的能力的情况下,选择所述第一链路发送所述第一报文。
由于第二链路对应的令牌桶的令牌使用率大于或者等于第一阈值,表示第二链路的带宽利用率比较高,第二链路当前不具备足够的资源来转发第一报文。
由此可见,在本申请实施例中,在第二链路的带宽得到充分利用、并且第一链路具备转发第一报文的能力的情况下,才通过第一链路转发第一报文,从而提升了第一链路和第二链路的总带宽利用率。
在本申请实施例的一个示例中,若网络设备在遍历第二链路对应的令牌桶时,确定第二链路的令牌使用率小于第一阈值,即第二链路可能具备转发第一报文的能力。对于这种情况,网络设备可以选择第二链路转发第一报文。或者,网络设备可以进一步验证第二链路是否确实具备转发第一报文的能力。
与上文网络设备验证第一链路是否确实具备转发第一报文的能力的具体实现方式相同,网络设备可以根据第一报文的长度扣除第二链路对应的令牌桶中的令牌,并确定扣除第二链路对应的令牌桶中的令牌之后,第二链路对应的令牌桶的令牌使用率。若扣除第二链路对应的令牌桶中的令牌之后,第二链路对应的令牌桶的令牌使用率小于第二阈值,则表示第二链路确实具备转发第一报文的能力,对于这种情况,网络设备可以选择第二链路转发第一报文。或者,网络设备在确定第二链路对应的令牌桶中的令牌数量大于或者等于第一报文的长度时,网络设备可以选择第二链路转发第一报文。采用这种方式,可以充分利用第二链路的转发资源,使得第二链路的带宽得到充分利用。
若扣除第二链路对应的令牌桶中的令牌之后,第二链路对应的令牌桶的令牌使用率大于或者等于第二阈值,或者,第二链路对应的令牌桶中的令牌数量小于第一报文的长度,说明第二链路不具备转发第一报文的能力。故而网络设备可以继续确定是否选择第一链路转发第一报文。在本申请实施例中,若网络设备没有选择第一链路转发第一报文、且可以用于转发第一报文的链路还包括第三链路,则网络设备可以继续确定是否选择第三链路转发第一报文。依次类推,若所有可以用于转发第一报文的链路均没有被选择,则网络设备可以丢弃该第一报文。
关于确定是否选择第一链路或者第三链路转发第一报文的具体实现,可以参考上文的关于选择第一链路转发第一报文的相关描述部分,此处不再重复描述。
在一些实施例中,考虑到在实际应用中,若属于相同报文流的报文被分配到不同的链路上转发,则可能会出现报文流乱序的问题。所谓报文流乱序,指的是:接收节点接收报文的顺序,与发送节点发送报文的顺序不一致。若出现报文流乱序,则可能会影响后续对报文进行进一步处理。关于报文流乱序,现举例说明,假设报文1和报文2属于同一报文流。发送节点通过链路1将报文1转发给接收节点,发送节点转发报文1之后,又通过链路2将报文2转发给接收节点。由于链路1拥堵,导致报文1在链路1上的传输时延特别大,从而使得接收节点先接收到报文2、再接收到报文1。此处提及的节点即为网络设备。
鉴于此,在本申请实施例中,可以使属于同一报文流的报文通过相同的链路转发,从而避免报文流乱序。对于这种情况,在本申请实施例中,网络设备执行S102之后,可以进一步获取第一报文的特征信息,并保存第一对应关系。该第一对应关系包括第一报文的特征信息和第一链路的标识。其中,第一报文的特征信息用于指示第一报文所属的报文流。具体地,与第一报文属于同一报文流的其它报文的特征信息,与第一报文的特征信息相同。本申请实施例不具体限定第一报文的特征信息,第一报文的特征信息例如可以为第一报文的五元组信息。此处提及的第一链路的标识,例如可以是网络设备上指示第一链路的出接口。前述第一对应关系用于指示网络设备若在获取第一报文之后继续获取到与第一报文属于同一报文流的第二报文,通过第一链路转发第二报文。
在一些实施例中,为了保证第二报文能够通过第一链路转发,第一对应关系除了包括第一报文的特征信息和第一链路的标识之外,还可以包括第一链路对应的令牌桶的标识。第一链路的令牌桶标识可以用于确定第一链路是否具备转发第二报文的能力。换言之,网络设备获取到第二报文之后,可以根据第一对应关系确定第一链路是否具备转发第二报文的能力,并在第一链路具备转发第二报文的能力时,选择第一链路转发第二报文。
以下结合图2,介绍网络设备转发与第一报文属于同一报文流的第三报文的实现方式。
图2为本申请实施例提供的一种报文转发方法的流程示意图。图2所示的方法,例如可以通过如下S201-S203实现。
S201:网络设备获取第三报文,并确定用于转发第三报文的多条链路。
关于网络设备获取第三报文,以及确定用于转发第三报文的多条链路的具体实现,可以参考S101“网络设备获取第一报文,并确定用于转发第一报文的多条链路”的实现部分,此处不再重复描述。
S202:网络设备根据第三报文的特征信息获取第一对应关系,并根据第一对应关系中的第一链路的标识,确定第一链路是否具备转发第三报文的能力。
在本申请实施例中,网络设备确定用于转发第三报文的链路包括多条链路之后,可以确定本地是否存储有包括第三报文的特征信息的对应关系,若存在,则网络设备可以根据该对应关系,初步确定转发第三报文的链路。而不是采用S102所述的遍历多个链路分别对应的令牌桶的方式确定转发第三报文的链路。其中,第三报文的特征信息用于标识第三报文所属的报文流,第三报文的特征信息可以为第三报文的五元组信息。
如上文,网络设备执行S102之后,保存了第一对应关系,第一对应关系中包括第一报文的特征信息。由于第三报文与第一报文属于同一报文流,因此,网络设备根据第三报文的特征信息可以获取该第一对应关系。网络设备获取第一对应关系之后,可以根据第一对应关系中第一链路的标识,确认第一链路是否具备转发第三报文的能力。具体地,网络设备可以根据第三报文的长度和第一链路对应的令牌桶中的令牌数量,确定第一链路是否具备转发第三报文的能力。关于网络设备确定第一链路是否具备转发第三报文的能力,可以参考上文网络设备确定第一链路是否具备转发第一报文的能力的描述部分,此处不再重复描述。
S203:若网络设备确定第一链路具备转发第三报文的能力,网络设备选择第一链路发送第三报文。
在本申请实施例中,当网络设备确定第一链路具备转发第三报文的能力时,可以选择第一链路转发第三报文。采用这种方式,不仅可以充分利用第一链路的带宽,还可以避免报文流乱序。
在本申请实施例的又一种实现方式中,若网络设备确定第一链路不具备转发第三报文的能力,此时,网络设备可以进一步确定是否选择第二链路发送第三报文。例如,网络设备可以在第二链路对应的令牌桶使用率小于第一阈值的情况下,选择而第二链路发送第三报文。或者,网络设备可以在第二链路对应的令牌桶使用率小于第一阈值、且第二链路具备转发第三报文的能力的情况下,选择第二链路转发第三报文。
在本申请实施例的一种实现方式中,网络设备选择第二链路发送第三报文之后,可以将前述第一对应关系更新为第二对应关系,第二对应关系包括第一报文的特征信息和第二链路的标识。其中,第一报文的特征信息用于指示第一报文所属的报文流。前述第一对应关系用于指示网络设备若在获取第三报文之后继续获取到与第二报文属于同一报文流的第四报文,通过第二链路转发第四报文。
在一些实施例中,为了保证第四报文能够通过第二链路转发,第二对应关系除了包括第一报文的特征信息和第二链路的标识之外,还可以包括第二链路对应的令牌桶的标识。第二链路的令牌桶标识可以用于确定第二链路是否具备转发第四报文的能力。换言之,网络设备获取到第四报文之后,可以根据第二对应关系确定第二链路是否具备转发第四报文的能力,并在第二链路具备转发第四报文的能力时,选择第二链路转发第四报文。
当然,若前述第一链路、第二链路甚至第三链路均不具备转发第三报文的能力,则网络设备可以丢弃第三报文,并删除该第一对应关系。这样一来,若网络设备继续获取到第四报文,则可以执行转发第一报文时网络设备所执行的步骤,以确定转发第四报文的链路。这是因为前述第一对应关系已经被删除,网络设备获取到第四报文之后,不能查找到包括第四报文的特征信息的对应关系。换言之,网络设备在执行S101之后、在未查找到包括第一报文的特征信息的对应关系的情况下,才执行S102,否则,网络设备可以根据查找到的对应关系来确定转发第一报文的链路。
以上对本申请实施例提供的负载分担的方法进行了介绍,接下来结合具体应用场景,介绍本申请实施例提供的负载分担的方法。
参见图3,该图为本申请实施例提供的一种示例性应用场景示意图。
在图3所示的网络场景中,网络设备301可以通过网络设备303与网络设备302通信,网络设备301可以通过网络设备304与网络设备302通信,网络设备301还可以通过网络设备305与网络设备302通信。网络设备301支持多路由模式。网络设备301、网络设备302、网络设备303、网络设备304和网络设备305上部署有OSPF路由协议。OSPF路由协议发现并生成去往网络设备302的三条等价路由。可参见表4。如表4所示,该三条路由对应的地址前缀为20.1.1.0,掩码长度为24位。路由1的出接口为POS4/0/0,POS4/0/0为网络设备301与网络设备303进行交互的接口,出接口POS4/0/0可以用于指示链路“网络设备301-网络设备303-网络设备302”。路由2的出接口为GE3/0/0,GE3/0/0为网络设备301与网络设备304进行交互的接口,出接口GE3/0/0可以用于指示链路“网络设备301-网络设备304-网络设备302”。路由3的出接口为GE2/0/0,GE2/0/0为网络设备301与网络设备305进行交互的接口,出接口GE2/0/0可以用于指示链路“网络设备301-网络设备305-网络设备302”。
表4
序号 | 地址前缀 | 掩码长度 | 出接口 |
1 | 20.1.1.0 | 24 | POS4/0/0 |
2 | 20.1.1.0 | 24 | GE3/0/0 |
3 | 20.1.1.0 | 24 | GE2/0/0 |
在本申请实施例中,可以为出接口POS4/0/0指示的链路“网络设备301-网络设备303-网络设备302”、出接口GE3/0/0指示的链路“网络设备301-网络设备304-网络设备302”、以及出接口GE2/0/0指示的链路“网络设备301-网络设备305-网络设备302”分别配置一个令牌桶。出接口POS4/0/0指示的链路对应的令牌桶为token_1,出接口GE3/0/0指示的链路对应的令牌桶为token_2,出接口GE2/0/0指示的链路对应的令牌桶为token_3。
若网络设备301获取到报文A,例如网络设备301通过接口GE1/0/0接收报文A。网络设备301根据报文A的目的IP地址查找本地路由表,命中路由20.1.1.0/24,从而确定转发报文A的链路包括3条链路,即token_1对应的链路、token_2对应的链路以及token_3对应的链路。
网络设备301获取报文A的五元组信息,并查找包括该五元组的对应关系。在网络设备301未查找到包括该五元组的对应关系的情况下,网络设备301按序遍历token_1、token_2和token_3。网络设备301确定token_1的令牌使用率大于第一阈值(0.9),并且,token_2的令牌使用率低于第一阈值。故而网络设备301根据报文A的长度扣减token_2中的令牌,网络设备301扣减token_2中的令牌之后,token_2的令牌使用率小于第二阈值(0.95),此时,网络设备301通过token_2对应的链路转发报文A。即网络设备301通过出接口GE3/0/0转发报文A,从而将报文A经过网络设备304转发给网络设备302。
网络设备301确定通过token_2对应的链路转发报文A之后,可以保存token_2的标识、出接口GE3/0/0、以及报文A的五元组之间的对应关系。
网络设备301继续接收报文B,报文B与报文A的五元组信息相同。网络设备301根据报文B的目的IP地址查找本地路由表,命中路由20.1.1.0/24,从而确定转发报文B的链路包括3条链路,即token_1对应的链路、token_2对应的链路以及token_3对应的链路。
网络设备301以报文B的五元组信息为索引,查找包括该五元组信息的对应关系,网络设备301查找到token_2的标识、出接口GE3/0/0、以及报文A的五元组之间的对应关系。网络设备301根据报文B的长度扣减token_2中的令牌,网络设备301扣减token_2中的令牌之后,token_2的令牌使用率小于第二阈值,此时,网络设备301通过token_2对应的链路转发报文B。
在一些实施例中,若网络设备301根据报文B的长度扣减token_2中的令牌之后,token_2的令牌使用率大于或者等于第二阈值,则网络设备301可以重新遍历token_1和token_3,从而选择转发报文B的链路。选择转发报文B的链路之后,对前述token_2的标识、出接口GE3/0/0、以及报文A的五元组之间的对应关系进行更新。例如,网络设备301选择token_1对应的链路转发报文B,则网络设备301将该对应关系更新为token_1的标识、出接口POS4/0/0、以及报文A的五元组之间的对应关系。若token_1对应的链路和token_3对应的链路均不具备转发报文B的能力,则网络设备301可以丢弃报文B,并删除前述包括报文A的五元组信息的对应关系。
当然,若网络设备301在遍历token_1、token_2和token_3时,确定token_1的令牌使用率小于或者等于第一阈值,则网络设备301可以利用报文A的长度扣除token_1中的令牌,若扣除token_1中的令牌之后,token_1的令牌使用率小于第二阈值,则网络设备301可以选择token_1对应的链路转发报文A。若扣除token_1中的令牌之后,token_1的令牌使用率大于或者等于第二阈值,则网络设备301可以继续执行在token_2的令牌使用率小于第一阈值的情况下,根据报文A的长度扣减token_2中的令牌的步骤。
由于网络设备301在接收到报文时,若本地不包括存在该报文的五元组信息的对应关系,则网络设备301会依次遍历token_1、token_2和token_3。换言之,在token_1对应的链路具备转发接收到的报文的能力时,报文会通过token_1对应的链路转发;在token_1对应的链路不具备转发该报文的能力时,该报文才会选择是否通过token_2对应的链路转发。相应的,当token_2对应的链路也不具备转发接收到的报文的能力时,该报文才会选择是否通过token_3对应的链路转发。换言之,当选择token_2对应的链路转发报文时,token_1对应的链路的带宽已经得到充分利用,当选择token_3对应的链路转发报文时,token_1对应的链路的带宽以及token_2对应的链路的带宽均已经得到充分利用。因此,利用本申请实施例的方案,可以充分利用该3条链路的总带宽。
参见图4,该图为本申请实施例提供的又一个示例性应用场景示意图。
如图4所示,网络设备401和网络设备402分别创建了trunk接口,即图4所示的trunk_a。trunk_a包括物理接口GE3/0/0和GE2/0/0。
在本申请实施例中,可以为出接口GE3/0/0对应的链路410以及出接口GE3/0/0对应的链路420分别配置一个令牌桶。链路410对应的令牌桶为token_4,链路420对应的令牌桶为token_5。
若网络设备401获取到报文C,则网络设备401根据报文C的目的地址查找本地路由表或者MAC表,确定对应的出接口为trunk_a,故而网络设备401可以确定转发报文C的链路包括2条链路,即链路410和链路420。
网络设备401获取报文C的五元组信息,并查找包括该五元组的对应关系。在网络设备401未查找到包括该五元组的对应关系的情况下,网络设备401按序遍历token_4和token_5。网络设备401确定token_4的令牌使用率小于第一阈值。故而网络设备401根据报文C的长度扣减token_4中的令牌,网络设备401扣减token_4中的令牌之后,token_4的令牌使用率小于第二阈值,此时,网络设备401通过token_4对应的链路转发报文C。即网络设备401通过出接口GE3/0/0转发报文C,从而将报文C转发给网络设备402。
网络设备401确定通过token_4对应的链路转发报文C之后,可以保存token_4的标识、出接口GE3/0/0、以及报文C的五元组之间的对应关系。
网络设备401继续接收报文D,报文D与报文C的五元组信息相同。网络设备401根据报文B的目的地址查找本地路由表或者MAC表,确定对应的出接口为trunk_a,从而确定转发报文D的链路包括2条链路,即token_4对应的链路410和token_5对应的链路420。
网络设备401以报文D的五元组信息为索引,查找包括该五元组信息的对应关系,网络设备401查找到token_4的标识、出接口GE3/0/0、以及报文D的五元组之间的对应关系。网络设备401根据报文D的长度扣减token_4中的令牌,网络设备401扣减token_4中的令牌之后,token_4的令牌使用率小于第二阈值,此时,网络设备401通过token_4对应的链路转发报文D。
在一些实施例中,若网络设备401根据报文D的长度扣减token_4中的令牌之后,token_4的令牌使用率大于或者等于第二阈值,则网络设备401可以继续遍历token_5,从而选择转发报文D的链路。若网络设备401选择token_5对应的链路转发报文D,则网络设备401将前述token_4的标识、出接口GE3/0/0、以及报文C的五元组之间的对应关系,更新为token_5的标识、出接口GE2/0/0、以及报文C的五元组之间的对应关系。若token_5对应的链路不具备转发报文D的能力,则网络设备401可以丢弃报文D,并删除前述包括报文D的五元组信息的对应关系。
由于网络设备401在接收到报文时,若本地不包括存在该报文的五元组信息的对应关系,则网络设备401会依次遍历token_4和token_5。换言之,在token_4对应的链路410具备转发接收到的报文的能力时,报文会通过链路410转发;在token_4对应的链路410不具备转发该报文的能力时,该报文才会选择是否通过token_5对应的链路420转发。换言之,当选择token_5对应的链路420转发报文时,token_4对应的链路410的带宽已经得到充分利用。因此,利用本申请实施例的方案,可以充分利用链路410和链路420的总带宽。
基于以上实施例提供的负载分担的方法,本申请实施例还提供了对应的装置,以下结合附图介绍该装置。
参见图5,该图为本申请实施例提供的一种负载分担的装置的结构示意图。图5所示的负载分担的装置500,可以用于执行以上方法实施例提供的由网络设备执行的负载分担的方法,例如,图5所示的负载分担的装置500可以执行图1-4所述的方法步骤以及具备相应功能。具体地,该装置500可以包括获取单元501、确定单元502和选择单元503。
获取单元501用于获取第一报文;确定单元502用于确定用于转发所述第一报文的多条链路;选择单元503用于在确定第一链路对应的令牌桶的令牌使用率小于第一阈值的情况下,选择所述第一链路发送所述第一报文,所述第一链路为所述多条链路中的一条链路。
在一种实现方式中,所述选择单元503具体用于:在所述第一链路对应的令牌桶的令牌使用率小于第一阈值、且所述第一链路具备转发所述第一报文的能力的情况下,选择所述第一链路发送所述第一报文,所述第一链路具备转发所述第一报文的能力是根据所述第一报文的长度和所述第一链路对应的令牌桶中的令牌数量确定的。
在一种实现方式中,所述多条链路还包括第二链路,所述选择单元503具体用于:在所述第二链路对应的令牌桶的令牌使用率大于或者等于所述第一阈值、所述第一链路对应的令牌桶的令牌使用率小于第一阈值、且所述第一链路具备转发所述第一报文的能力的情况下,选择所述第一链路发送所述第一报文。
在一种实现方式中,所述第一链路具备转发所述第一报文的能力,包括:根据所述第一报文的长度扣除所述第一链路对应的令牌桶中的令牌之后,所述第一链路对应的令牌桶的令牌使用率小于第二阈值;或者,所述第一链路对应的令牌桶中的令牌数量大于或者等于所述第一报文的长度。
在一种实现方式中,所述获取单元501还用于获取所述第一报文的特征信息;所述装置还包括保存单元,该保存单元用于保存第一对应关系,所述第一对应关系包括所述第一报文的特征信息与所述第一链路的标识,所述第一报文的特征信息用于标识所述第一报文所属的报文流;所述第一对应关系用于指示通过所述第一链路转发所述第二报文,所述第二报文与所述第一报文属于同一报文流。
在一种实现方式中,所述第一对应关系还包括所述第一链路对应的令牌桶的标识,所述第一链路对应的令牌桶的标识用于确定所述第一链路是否具备转发所述第二报文的能力。
在一种实现方式中,所述获取单元501还用于获取第三报文;所述确定单元502还用于确定用于转发所述第三报文的多条链路;所述获取单元501还用于根据所述第三报文的特征信息获取第一对应关系,所述第一对应关系包括所述第一报文的特征信息与所述第一链路的标识,所述第一报文的特征信息用于标识所述第一报文所属的报文流,所述第一对应关系用于指示所述网络设备通过所述第一链路转发与所述第一报文属于同一报文流的报文;所述确定单元502还用于根据所述第一对应关系中的第一链路的标识,确定所述第一链路是否具备转发所述第三报文的能力;所述选择单元503还用于若确定所述第一链路具备转发所述第三报文的能力,选择所述第一链路发送所述第三报文。
在一种实现方式中,所述选择单元503还用于:若确定所述第一链路不具备转发所述第三报文的能力,在第二链路对应的令牌桶的令牌使用率小于所述第一阈值的情况下,选择所述第二链路发送所述第三报文。
在一种实现方式中,所述保存单元还用于:将所述第一对应关系更新为第二对应关系,所述第二对应关系包括所述第一报文的特征信息和所述第二链路的标识,所述第二对应关系用于指示通过所述第二链路转发第四报文,所述第四报文与所述第三报文属于同一报文流。
由于所述装置500是与以上方法实施例提供的方法对应的装置,所述装置500的各个单元的具体实现,均与以上方法实施例为同一构思,因此,关于所述装置500的各个单元的具体实现,可以参考以上方法实施例的描述部分,此处不再赘述。
需要说明的是,前述提及的负载分担的装置500,其硬件结构可以为如图6所示的结构,图6为本申请实施例提供的一种设备的结构示意图。图6所示的设备600,可以用于执行以上方法实施例提供的由网络设备执行的负载分担的方法,例如,图6所示的设备600可以执行图1-4所述的方法步骤以及具备相应功能。
请参阅图6所示,设备600包括:处理器610、通信接口620和和存储器630。其中设备600中的处理器610的数量可以一个或多个,图6中以一个处理器为例。本申请实施例中,处理器610、通信接口620和存储器630可通过总线系统或其它方式连接,其中,图6中以通过总线系统640连接为例。
处理器610可以是中央处理器(central processing unit,CPU),网络处理器(network processor,NP)或者CPU和NP的组合。处理器610还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(application-specific integrated circuit,ASIC),可编程逻辑器件(programmable logic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complex programmable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。
存储器630可以包括易失性存储器(英文:volatile memory),例如随机存取存储器(random-access memory,RAM);存储器630也可以包括非易失性存储器(英文:non-volatile memory),例如快闪存储器(英文:flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD);存储器630还可以包括上述种类的存储器的组合。存储器630中例如可以用于存储用于转发第一报文的多条链路分别对应的令牌桶的相关信息,存储器630中还可以用于存储前述第一对应关系。
可选地,存储器630存储有操作系统和程序、可执行模块或者数据结构,或者它们的子集,或者它们的扩展集,其中,程序可包括各种操作指令,用于实现各种操作。操作系统可包括各种系统程序,用于实现各种基础业务以及处理基于硬件的任务。处理器610可以读取存储器630中的程序,实现本申请实施例提供的负载分担的方法。
总线系统640可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。总线系统640可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
本申请实施例还提供了一种计算机可读存储介质,包括指令或计算机程序,当其在计算机上运行时,使得计算机执行以上实施例提供的负载分担的方法,例如,可以执行图1-4所述的方法步骤以及具备相应功能。
本申请实施例还提供了一种包含指令或计算机程序的计算机程序产品,当其在计算机上运行时,使得计算机执行以上实施例提供的负载分担的方法,例如,可以执行图1-4所述的方法步骤以及具备相应功能。
本申请中提到的装置或设备,可以是网络设备,比如交换机、路由器,也可以是服务器,也可以是网络设备或服务器的一部分。在一些实施例中,本申请的装置或设备,也可以是部署在设备或网络中的功能模块。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑业务划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各业务单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件业务单元的形式实现。
集成的单元如果以软件业务单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的业务可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些业务存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
以上的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上仅为本发明的具体实施方式而已。
以上,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (21)
1.一种负载分担的方法,其特征在于,所述方法包括:
网络设备获取第一报文,并确定用于转发所述第一报文的多条链路;
所述网络设备在确定第一链路对应的令牌桶的令牌使用率小于第一阈值的情况下,选择所述第一链路发送所述第一报文,所述第一链路为所述多条链路中的一条链路。
2.根据权利要求1所述的方法,其特征在于,所述网络设备在确定第一链路对应的令牌桶的令牌使用率小于第一阈值的情况下,选择所述第一链路发送所述第一报文,包括:
所述网络设备在所述第一链路对应的令牌桶的令牌使用率小于第一阈值、且所述第一链路具备转发所述第一报文的能力的情况下,选择所述第一链路发送所述第一报文,所述第一链路具备转发所述第一报文的能力是所述网络设备根据所述第一报文的长度和所述第一链路对应的令牌桶中的令牌数量确定的。
3.根据权利要求2所述的方法,其特征在于,所述多条链路还包括第二链路,所述网络设备在所述第一链路对应的令牌桶的令牌使用率小于第一阈值、且所述第一链路具备转发所述第一报文的能力的情况下,选择所述第一链路发送所述第一报文,包括:
所述网络设备在所述第二链路对应的令牌桶的令牌使用率大于或者等于所述第一阈值、所述第一链路对应的令牌桶的令牌使用率小于第一阈值、且所述第一链路具备转发所述第一报文的能力的情况下,选择所述第一链路发送所述第一报文。
4.根据权利要求2或3所述的方法,其特征在于,所述第一链路具备转发所述第一报文的能力,包括:
根据所述第一报文的长度扣除所述第一链路对应的令牌桶中的令牌之后,所述第一链路对应的令牌桶的令牌使用率小于第二阈值;或者,
所述第一链路对应的令牌桶中的令牌数量大于或者等于所述第一报文的长度。
5.根据权利要求1-4任意一项所述的方法,其特征在于,所述方法还包括:
所述网络设备获取所述第一报文的特征信息,并保存第一对应关系,所述第一对应关系包括所述第一报文的特征信息与所述第一链路的标识,所述第一报文的特征信息用于标识所述第一报文所属的报文流,所述第一对应关系用于指示所述网络设备通过所述第一链路转发所述第二报文,所述第二报文与所述第一报文属于同一报文流。
6.根据权利要求5所述的方法,其特征在于,所述第一对应关系还包括所述第一链路对应的令牌桶的标识,所述第一链路对应的令牌桶的标识用于确定所述第一链路是否具备转发所述第二报文的能力。
7.根据权利要求1-4任意一项所述的方法,其特征在于,所述方法还包括:
所述网络设备获取第三报文,并确定用于转发所述第三报文的多条链路,所述第三报文与所述第一报文属于同一报文流;
所述网络设备根据所述第三报文的特征信息获取第一对应关系,并根据所述第一对应关系中的第一链路的标识,确定所述第一链路是否具备转发所述第三报文的能力,所述第一对应关系包括所述第一报文的特征信息与所述第一链路的标识,所述第一报文的特征信息用于标识所述第一报文所属的报文流,所述第一对应关系用于指示所述网络设备通过所述第一链路转发与所述第一报文属于同一报文流的报文;
若所述网络设备确定所述第一链路具备转发所述第三报文的能力,所述网络设备选择所述第一链路发送所述第三报文。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
若所述网络设备确定所述第一链路不具备转发所述第三报文的能力,所述网络设备在第二链路对应的令牌桶的令牌使用率小于所述第一阈值的情况下,选择所述第二链路发送所述第三报文。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
所述网络设备将所述第一对应关系更新为第二对应关系,所述第二对应关系包括所述第一报文的特征信息和所述第二链路的标识,所述第二对应关系用于指示所述网络设备通过所述第二链路转发第四报文,所述第四报文与所述第三报文属于同一报文流。
10.一种负载分担的装置,其特征在于,所述装置包括:
获取单元,用于获取第一报文;
确定单元,用于确定用于转发所述第一报文的多条链路;
选择单元,用于在确定第一链路对应的令牌桶的令牌使用率小于第一阈值的情况下,选择所述第一链路发送所述第一报文,所述第一链路为所述多条链路中的一条链路。
11.根据权利要求10所述的装置,其特征在于,所述选择单元用于:
在所述第一链路对应的令牌桶的令牌使用率小于第一阈值、且所述第一链路具备转发所述第一报文的能力的情况下,选择所述第一链路发送所述第一报文,所述第一链路具备转发所述第一报文的能力是根据所述第一报文的长度和所述第一链路对应的令牌桶中的令牌数量确定的。
12.根据权利要求11所述的装置,其特征在于,所述多条链路还包括第二链路,所述选择单元用于:
在所述第二链路对应的令牌桶的令牌使用率大于或者等于所述第一阈值、所述第一链路对应的令牌桶的令牌使用率小于第一阈值、且所述第一链路具备转发所述第一报文的能力的情况下,选择所述第一链路发送所述第一报文。
13.根据权利要求11或12所述的装置,其特征在于,所述第一链路具备转发所述第一报文的能力,包括:
根据所述第一报文的长度扣除所述第一链路对应的令牌桶中的令牌之后,所述第一链路对应的令牌桶的令牌使用率小于第二阈值;或者,
所述第一链路对应的令牌桶中的令牌数量大于或者等于所述第一报文的长度。
14.根据权利要求10-13任意一项所述的装置,其特征在于,
所述获取单元还用于获取所述第一报文的特征信息;
所述装置还包括保存单元,用于保存第一对应关系,所述第一对应关系包括所述第一报文的特征信息与所述第一链路的标识,所述第一报文的特征信息用于标识所述第一报文所属的报文流;所述第一对应关系用于指示通过所述第一链路转发所述第二报文,所述第二报文与所述第一报文属于同一报文流。
15.根据权利要求14所述的装置,其特征在于,所述第一对应关系还包括所述第一链路对应的令牌桶的标识,所述第一链路对应的令牌桶的标识用于确定所述第一链路是否具备转发所述第二报文的能力。
16.根据权利要求10-13任意一项所述的装置,其特征在于,
所述获取单元还用于获取第三报文,所述第三报文与所述第一报文属于同一报文流;
所述确定单元还用于确定用于转发所述第三报文的多条链路;
所述获取单元还用于根据所述第三报文的特征信息获取第一对应关系,所述第一对应关系包括所述第一报文的特征信息与所述第一链路的标识,所述第一报文的特征信息用于标识所述第一报文所属的报文流,所述第一对应关系用于指示所述网络设备通过所述第一链路转发与所述第一报文属于同一报文流的报文;
所述确定单元还用于根据所述第一对应关系中的第一链路的标识,确定所述第一链路是否具备转发所述第三报文的能力;
所述选择单元还用于若确定所述第一链路具备转发所述第三报文的能力,选择所述第一链路发送所述第三报文。
17.根据权利要求16所述的装置,其特征在于,所述选择单元还用于:
若确定所述第一链路不具备转发所述第三报文的能力,在第二链路对应的令牌桶的令牌使用率小于所述第一阈值的情况下,选择所述第二链路发送所述第三报文。
18.根据权利要求17所述的装置,其特征在于,所述保存单元还用于:
将所述第一对应关系更新为第二对应关系,所述第二对应关系包括所述第一报文的特征信息和所述第二链路的标识,所述第二对应关系用于指示通过所述第二链路转发第四报文,所述第四报文与所述第三报文属于同一报文流。
19.一种设备,其特征在于,包括:处理器和存储器;
所述存储器,用于存储指令或计算机程序;
所述处理器,用于执行所述指令或计算机程序,执行权利要求1-9任意一项所述的方法。
20.一种计算机可读存储介质,其特征在于,包括指令或计算机程序,当其在计算机上运行时,使得计算机执行以上权利要求1-9任意一项所述的方法。
21.一种计算机程序产品,其特征在于,包括指令,当其在计算机上运行时,使得计算机执行以上权利要求1-9任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010362614.XA CN113595919A (zh) | 2020-04-30 | 2020-04-30 | 一种负载分担的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010362614.XA CN113595919A (zh) | 2020-04-30 | 2020-04-30 | 一种负载分担的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113595919A true CN113595919A (zh) | 2021-11-02 |
Family
ID=78237353
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010362614.XA Pending CN113595919A (zh) | 2020-04-30 | 2020-04-30 | 一种负载分担的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113595919A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115334082A (zh) * | 2022-08-10 | 2022-11-11 | 中国工商银行股份有限公司 | 负载均衡方法、装置、计算机设备、存储介质和产品 |
WO2024021878A1 (zh) * | 2022-07-29 | 2024-02-01 | 华为技术有限公司 | 一种发送负载信息的方法、发送报文的方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102255816A (zh) * | 2011-08-18 | 2011-11-23 | 华为数字技术有限公司 | 负载分担方法及装置 |
CN102739518A (zh) * | 2012-05-30 | 2012-10-17 | 杭州华三通信技术有限公司 | 一种流量负载分担方法和设备 |
CN103281257A (zh) * | 2013-06-05 | 2013-09-04 | 杭州华三通信技术有限公司 | 一种协议报文处理方法和设备 |
WO2019179157A1 (zh) * | 2018-03-22 | 2019-09-26 | 华为技术有限公司 | 一种数据流量处理方法及相关网络设备 |
CN110995608A (zh) * | 2019-12-20 | 2020-04-10 | 锐捷网络股份有限公司 | 一种多链路负载均衡的方法、装置及系统 |
-
2020
- 2020-04-30 CN CN202010362614.XA patent/CN113595919A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102255816A (zh) * | 2011-08-18 | 2011-11-23 | 华为数字技术有限公司 | 负载分担方法及装置 |
CN102739518A (zh) * | 2012-05-30 | 2012-10-17 | 杭州华三通信技术有限公司 | 一种流量负载分担方法和设备 |
CN103281257A (zh) * | 2013-06-05 | 2013-09-04 | 杭州华三通信技术有限公司 | 一种协议报文处理方法和设备 |
WO2019179157A1 (zh) * | 2018-03-22 | 2019-09-26 | 华为技术有限公司 | 一种数据流量处理方法及相关网络设备 |
CN110995608A (zh) * | 2019-12-20 | 2020-04-10 | 锐捷网络股份有限公司 | 一种多链路负载均衡的方法、装置及系统 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024021878A1 (zh) * | 2022-07-29 | 2024-02-01 | 华为技术有限公司 | 一种发送负载信息的方法、发送报文的方法及装置 |
CN115334082A (zh) * | 2022-08-10 | 2022-11-11 | 中国工商银行股份有限公司 | 负载均衡方法、装置、计算机设备、存储介质和产品 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5964240B2 (ja) | 分散ルーティングアーキテクチャ | |
US9270598B1 (en) | Congestion control using congestion prefix information in a named data networking environment | |
US9025468B1 (en) | Custom routing decisions | |
JP5964239B2 (ja) | 分散ルーティングアーキテクチャ | |
EP2587750B1 (en) | Addressing the large flow problem for equal cost multi-path in the datacenter | |
CN106998302B (zh) | 一种业务流量的分配方法及装置 | |
US7623455B2 (en) | Method and apparatus for dynamic load balancing over a network link bundle | |
US9754297B1 (en) | Network routing metering | |
CN110943924B (zh) | 网络中分段源路由的方法及存储介质 | |
JP5964241B2 (ja) | 分散ルーティングアーキテクチャ | |
US9559953B2 (en) | Path splitting with a connection-oriented network | |
US10153964B2 (en) | Network routing using dynamic virtual paths in an overlay network | |
US7277386B1 (en) | Distribution of label switched packets | |
EP3879757A1 (en) | Network traffic steering among cpu cores using forwarding path elements | |
CN113595919A (zh) | 一种负载分担的方法及装置 | |
WO2023202639A1 (zh) | 报文发送的方法、网络设备及通信系统 | |
CN113364679B (zh) | 一种基于分段路由的转发控制方法、报文转发方法及装置 | |
US11962485B2 (en) | Selecting and deduplicating forwarding equivalence classes | |
CN110300073B (zh) | 级联端口的目标选择方法、聚合装置及存储介质 | |
CN111740917A (zh) | 一种报文转发方法和装置 | |
Chen et al. | Study of rule placement schemes for minimizing TCAM space and effective bandwidth utilization in SDN | |
US11689463B1 (en) | Reduced traversal for consistent hashing for packet flow load balancing | |
CN117319304A (zh) | 通信方法及装置 | |
CN117221201A (zh) | 报文发送的方法、网络设备及系统 | |
CN115914098A (zh) | 基于等价多路径的选路方法、设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |