news 2026/6/10 17:14:24

什么是负载分担

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
什么是负载分担

文章目录

    • 负载分担解决了什么问题
    • 负载分担的分类
    • 负载分担的工作方式
    • 负载分担的典型应用场景



负载分担(Load Balance)是指网络节点在转发流量时,将负载(流量)分摊到多条链路上进行转发,从而提高系统的可用性、可靠性和性能。


负载分担解决了什么问题

网络中的服务器或节点的计算和存储能力是有上限的,但由于流量的不均衡转发,可能会出现某些服务器或节点过度负载,而其他服务器或节点则相对空闲的情况。这样降低了该网络的计算和存储能力,也容易出现单点故障。为了最大化利用服务器或节点的计算和存储能力,同时保证系统的稳定性和安全性,就出现了负载分担技术。

负载分担的分类

负载分担主要有三种,分别是路由负载分担,隧道负载分担和Trunk接口负载分担。

路由负载分担

路由负载分担,指在网络节点之间,去往同一个目的地存在多条转发路径,流量被分担到多条路径上进行转发。

目前在华为路由器中,支持RIP、RIPng、OSPF、OSPFv3、IS-IS、BGP路由和静态路由的负载分担。

在路由选路时,多条路由要形成负载分担,要求这些路由必须是等价路由。而不同协议的路由,无法评价其是等价还是不等价。因此,参与路由负载分担的多条路由必定是属于同一个路由协议;不同路由协议的路由无法形成负载分担。

隧道负载分担

隧道负载分担是指VPN场景下,在入口PE节点上,存在去往同一个目的PE的多条隧道,流量被分担到多条隧道上进行转发。MPLS VPN支持使用如下几种隧道类型:

  • LSP(Label Switched Path):指LDP LSP、BGP LSP或者静态LSP。
  • CR-LSP(Constraint-based Routed Label Switched Path):指RSVP-TE CR-LSP,或者静态CR-LSP。与LSP相比,CR-LSP满足一定的约束条件,例如满足指定的带宽或路径。
  • GRE(Generic Routing Encapsulation):使用GRE协议封装原始数据报文,基于公共IP网络实现数据的透明传输。

隧道类型的优先级顺序与配置相关,配置顺序越靠前优先级越高。参与隧道负载分担的隧道可以是不同类型的隧道,也可以是非等价的隧道,甚至参与负载分担的两个隧道可以经过同一条路径。

Trunk接口负载分担

Trunk接口负载分担是指将多个相同链路层协议的物理端口捆绑在一起,形成一条逻辑上的数据链路,流量在多个成员链路之间分担。它主要有两种模式,分别是静态LACP模式和手工负载分担模式。

  • 静态LACP模式由LACP协议确定聚合组中的活动和非活动链路,又称为M:N模式,即M条活动链路与N条备份链路的模式。这种模式提供了更高的链路可靠性,并且可以在M条链路中实现负载均衡。
  • 手工负载分担模式完全是手工配置trunk接口的建立和成员接口的加入,此模式下所有的成员接口可以平均分担数据流量,也可以配置成员接口的权重,使部分接口分担更多的流量,实现非平均的流量分担。如果活动链路中出现故障链路,链路聚合组自动在剩余的活动链路中平均分担或按权重分担数据流量。

负载分担的工作方式

负载分担方式

逐流和逐包

逐流负载分担是指按照一定的规则,如根据五元组(源IP地址、目的IP地址、协议号、源端口号、目的端口号),将报文分成不同的流,同一条流的报文将在同一条链路上转发。如图逐流负载分担所示。


逐流负载分担

逐包负载分担是指在转发时,按报文到来的次序,将报文均匀地分摊到参与负载的各条链路上。如图逐包负载分担所示

逐包负载分担

两种负载分担方式相比,逐包负载分担能更为均衡地分发报文,逐流的均衡程度会因为负载分担的规则和业务流量特征不同而不同。

但是由于逐包负载分担可能导致报文乱序,所以部分对报文顺序非常敏感的业务不适用于逐包负载分担。目前,华为路由器均默认采用逐流负载分担。

等价和非等价

等价负载分担ECMP(Equal-Cost Multiple Path),是指到达同一目的地有多条等价链路,流量在这些等价链路上平均分配,不会考虑链路带宽的差异。等价链路是指到达目的地的cost值相等的链路/路径。


ECMP示意

非等价负载分担UCMP(Unequal-Cost Multiple Path),是指到达同一目的地有多条带宽不同的等价链路,流量根据带宽按比例分担到各条链路上。


UCMP示意

ECMP在路径间带宽差异较大的时候,带宽利用率低,而UCMP可以根据不同带宽比例分担流量,提高了带宽利用率。

负载分担算法

在逐包负载分担中,设备启用了一个定时器,每来一个包,计数器加1,根据计数器的值选择出接口。

逐流负载分担采用了哈希算法。哈希算法将任意长度的二进制值映射为固定长度的较小二进制值,这个小的二进制值称为哈希值。计算出哈希值后,设备再根据哈希值映射到出接口,并将报文从对应的出接口发送。

哈希算法的输入是各个报文的特征值,包括但不限于:

  • 以太帧头:源MAC、目的MAC
  • IP首部:源IP、目的IP、协议号
  • TCP/UDP首部:源端口号、目的端口号
  • MPLS首部:MPLS标签、报文负载的某些比特位
  • L2TP报文:Tunnel ID和Session ID

这些输入被称为“哈希因子”。如果哈希因子散列性较好,则哈希算法得出的负载分担将会更均匀。如果网络流很复杂,依靠哈希因子进行散列,可能难以取得最佳的分担效果。

负载分担的典型应用场景

链路扩容场景

如图所示,R1、R2两个设备间通过4条10G的链路互连,R1与R2使用Loopback接口地址建EBGP邻居关系,使用IGP等价路由。由于业务发展,现需要扩容一条40G的链路互联,变成4条10G+1条40G链路,实现10G链路与40G链路的负载分担。


链路扩容场景

在这种场景下,可以先全局开启UCMP功能,随后在这4个10G接口和40G接口下开启端口UCMP功能,实现扩容效果。

若该设备不支持UCMP,则可以在40G端口配置4个IP地址与对端设备互通,这样,每个10G端口有一个下一跳,40G的端口有4个下一跳,实现IP负载分担。

路由反射器场景中的BGP 负载分担

如图,AS100部署了一台路由反射器RR(Route Reflector),RR从两台出口路由器学习外网路由后,先从两个出口路由器的路由信息里进行选优,然后再传递给客户端 R1、R2、……、Rn。每个客户端都有到两台出口路由器的等值上行链路。这样,客户端学习的到的外网路由信息的下一跳只有一个,要么是出口路由器1,要么是出口路由器2,无法形成负载分担。


路由反射器场景中的 BGP 负载分担

在这种场景下,可以先在出口路由器1和出口路由器2上创建Loopback1接口,并将这两个接口地址设置成相同,同时使用此接口和RR建立IBGP邻居关系。这样,由于客户端学习的到的外网路由信息的下一跳相同,通过IGP迭代,所有客户端路由器能负载分担的使用两个出口路由器。


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 12:45:27

什么是G-SRv6

文章目录为什么需要G-SRv6如何实现G-SRv6G-SRv6在智能云网中的应用G-SRv6(Generalized Segment Routing over IPv6,通用 SRv6)是一种兼容SRv6的通用机制,支持携带多种类型不同长度的SID,这些SID称为G-SID(G…

作者头像 李华
网站建设 2026/6/10 10:53:06

3大核心策略彻底解决sktime软依赖冲突难题

3大核心策略彻底解决sktime软依赖冲突难题 【免费下载链接】sktime sktime是一个用于机器学习中时间序列预测和分析的Python库,提供了丰富的数据预处理、特征提取和模型评估方法,适用于金融、气象等领域的数据分析。 项目地址: https://gitcode.com/Gi…

作者头像 李华
网站建设 2026/6/9 18:50:24

24、深入了解 awk 及其不同版本

深入了解 awk 及其不同版本 1. awk 数值限制与脚本问题 awk 在处理数值时,使用双精度浮点数,其大小受机器架构限制。在开发脚本时,若超出这些限制可能会引发意外问题。比如,曾有人开发了一个在单段落中搜索单词或词组的程序,该程序将文档按多行记录读取,若字段包含搜索…

作者头像 李华
网站建设 2026/6/9 23:12:39

25、Awk编程:多种版本与交互式拼写检查器应用

Awk编程:多种版本与交互式拼写检查器应用 1. Awk不同版本介绍 Awk是一种强大的文本处理语言,有多种不同的版本,每个版本都有其特点和优势。 1.1 Michael的awk(mawk) mawk是由Michael Brennan编写的免费Awk版本,它向上兼容POSIX Awk,并且有一些扩展功能。mawk的主要优…

作者头像 李华
网站建设 2026/6/7 6:15:11

30、脚本杂谈:m1 宏处理器与 sed 命令速览

脚本杂谈:m1 宏处理器与 sed 命令速览 1. 转置脚本示例 首先来看一个简单的转置脚本示例: $ transpose test 1 5 9 2 6 10 3 7 11 4 8 12这个脚本创建了一个名为 row 的数组,并将每个字段追加到数组元素中,最后通过 END 过程输出数组。 2. m1 宏处理器简介 m1 程…

作者头像 李华
网站建设 2026/6/10 12:25:42

安卓设备终极解锁指南:强制开启USB调试模式的完整教程

安卓设备终极解锁指南:强制开启USB调试模式的完整教程 【免费下载链接】手机强制开启USB调试模式 手机强制开启USB调试模式在安卓开发或者进行某些高级操作时,开启手机的USB调试模式是必要的步骤 项目地址: https://gitcode.com/open-source-toolkit/7…

作者头像 李华