
当前主流的负载均衡技术主要包括三种类型:逐流的ECMP负载均衡、逐包负载均衡以及基于子流(Flowlet)的负载均衡。本文将从技术原理、优缺点及适用场景等方面对这三种技术进行系统对比与分析。
ECMP(Equal-Cost Multi-Path)采用逐流负载分担机制,其核心原理是基于数据包的特征信息(如IP五元组)进行哈希计算,依据哈希值选择转发路径。
该机制具备以下特点:
然而,随着云计算与智算业务的发展,逐流负载均衡的局限性日益显著:
注:可通过静态方式与自动化配置工具缓解该问题,详见:主动规划+自动化配置工具,简单应对AI智算网络ECMP负载不均。
逐包负载均衡将数据包均匀分发至各链路,常被称为“Packet Spray”。其主要算法包括 Random(随机分发数据包)和Round Robin(按序轮询分发,理论上均衡效果最佳)。
然而,由于实际网络中链路负载与延迟存在差异,逐包负载均衡无法保证报文按序到达,其性能高度依赖终端设备的缓存能力与乱序重组能力。

基于子流的负载均衡不仅实现对数据流的精细划分与均衡分发,还能保持报文的时序性。RoCE交换机所支持的ARS(Adaptive Routing and Switching)技术即为典型代表,其利用ASIC硬件提供的ALB(Auto-Load-Balancing)能力,实时感知链路状态并动态调整路由,从而改善拥塞、提升带宽利用率。
为深入理解该机制,下文将从三个关键问题展开说明:
术语解释
微观流(Micro Flow):五元组相同的一组数据包;
宏观流(Macro Flow):哈希值相同的微观流集合;
空闲时间(Idle Time):宏观流中无流量的时间间隔(可配置);
子流(Flowlet):宏观流中被空闲时间分割的连续数据包序列。

Flowlet是ARS进行负载均衡的基本单位。如下图所示,拥有相同五元组的微观流经哈希计算后归属同一宏观流。若宏观流中相邻微观流的时间间隔超过所配置的Idle Time,则触发流分割,形成不同的Flowlet。从业务层面来看,传统意义上的“大象流”会被打散,而小流则有可能合并到一个 Flowlet 里传输。

ASIC维护宏观流表(Macro Flow Table),记录各宏观流及其对应出接口(或ECMP成员链路)。通过实时测量端口负载与延迟,ARS以Flowlet为粒度将流量路由至更优路径。
至于我们如何得知当前哪条链路更优呢?这里就涉及到链路质量指标的测量问题。

ECMP组实时更新各出接口的链路质量,并在路径分配时依据最新结果择优转发。
路径主动分配发生于流分割过程末尾。例如,当Flowlet 1的最后一条微观流(Micro Flow 2)经路径D转发,且间隔时间T(T > Idle Time)后出现新微观流(Micro Flow 3),ASIC判定Flowlet 1结束,路径D映射失效。Micro Flow 3属于新子流且处于非活跃状态,此时触发主动路径分配。

以32台8卡GPU服务器(共256个400G网卡)规模为例,AIDC承载网采用两层Clos架构,Spine与Leaf设备均采用CX864E-N交换机,下行与上行端口按 1:1 收敛比设计,确保高吞吐与高带宽,避免带宽不对称带来的性能问题。
在传统负载均衡机制下,Server1 的 GPU1 与 Server17 的 GPU1 通信时,流量可能集中至某一 Spine 设备,导致Leaf1上行端口拥塞。而启用ARS技术后,Leaf1与Spine设备的ASIC可依据实时延迟与负载动态调整出接口。
假设 Leaf1 通往 Spine8 的链路上发生拥塞,则 Leaf1 的 ASIC 会将更少的 Flowlet 路由到 Spine8 或跳过 Spine8,直至该链路上的拥塞情况缓解后,才会恢复选中该链路进行流量转发。
同样以 Spine1 为例,其 ASIC 也能将更少的 Flowlet 路由到 Leaf32 的链路上而更多地选取其他质量更好的链路。由此,Leaf 与 Spine 设备均能完成自治,从而达到降低整网链路拥塞情况并提高带宽利用率。
参考文档
[1] OCPSummit2022- Adaptive Routing in AI/ML Workloads https://www.youtube.com/watch?v=cgYOpp4xwQ8
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。