跳到主要内容

ECMP 等价多路径路由

ECMP(Equal-Cost Multi-Path)是数据中心网络最基础的多路径路由策略,通过哈希将流量分配到多条等价路径,是 Fat-tree / Clos 拓扑的标准路由方案。

基本原理

对网络中存在的多条等价最短路径,ECMP 以报文的 5 元组(源 IP、目标 IP、源端口、目标端口、协议)为输入,通过哈希函数计算路径选择索引:

$\text{path\_index} = \text{hash}(\text{src\_ip}, \text{dst\_ip}, \text{src\_port}, \text{dst\_port}, \text{proto}) \bmod N_{\text{paths}}$

决策流程:提取 5 元组 → 查询等价路径集合 → 计算哈希 → 按 hash % N 选择出口端口。

一旦一条流的路径选定,该流的所有后续报文都走同一条路径(流级别的负载均衡),不会发生报文乱序。

算法细节

标准 ECMP

ECMP 是无状态路由——交换机不维护每条流的状态,只根据报文头字段实时计算哈希。这使它实现极为简单,对交换机 ASIC 的存储和计算开销几乎为零。

E-ECMP(Meta SIGCOMM 2024)

针对 AI 工作负载的哈希极化问题,Meta 提出了 E-ECMP 改进方案:

  • ASIC 侧:利用交换机 ASIC 的 UDF(用户自定义字段)能力,将 QP(Queue Pair)字段纳入哈希输入,扩展了哈希维度
  • 软件侧(QP Scaling):NCCL 在每对通信节点间建立多个 QP,使同一逻辑通信流的不同 QP 拥有不同的 5 元组,自然散列到不同物理路径

实测效果:AllReduce 性能提升 40%,有效带宽利用率从 60-70% 提升到 80-90%。

WCMP(Google Jupiter)

WCMP(Weighted Cost Multi-Path)是 ECMP 的加权版本,由 Google 在 Jupiter 网络中大规模部署:

  • ECMP 按等权分配所有路径;WCMP 按链路实际可用容量设置权重
  • 当某条链路故障或拓扑不对称时,SDN 控制器动态重新计算权重并下发,避免 ECMP 在链路失效时流量分配比差距达 25 倍的问题
  • 无需改动交换机 ASIC,与现有硬件兼容

性能特性

指标标准 ECMPE-ECMPWCMP
有效带宽利用率60-70%80-90%85-95%
实现复杂度最低低(需 ASIC UDF)中(需 SDN 控制器)
硬件要求通用 ASIC支持 UDF 的 ASIC通用 ASIC
应对拓扑不对称

ECMP 的核心弱点在 AI 工作负载下被放大:AllReduce 等集合通信是持续的大流,熵极低;多条大流可能被哈希到同一条链路,造成严重不均衡,而其他链路空闲。

适用场景与局限

适用场景

  • Fat-tree / Clos 拓扑,路径等价性强
  • 通用互联网流量(流数量多、单流带宽小、熵高)
  • 需要低成本、高兼容性的部署环境

局限

  • 哈希极化:AI 训练场景中同一 GPU 对的 AllReduce 是持久大流,多条大流可能映射到同一链路
  • 无法响应实时拥塞:某条链路过载后无法自动迁移流量
  • Torus、Dragonfly 等非 Fat-tree 拓扑上,等价路径有限,ECMP 收益有限

选型建议

  • Fat-tree + AI 工作负载:优先使用 E-ECMP + QP Scaling
  • 拓扑不对称或存在链路故障:使用 WCMP
  • 需要全局最优:考虑自适应路由(AR)或 SRv6 源路由

参考资料