← 返回题目列表

ECMP 等价多路径路由是什么?它如何在多条等成本链路上分担流量?

中等 第 21 / 26 题 更新于 2026/08/02
网络层路由负载均衡

简化版

ECMP 是 Equal-Cost Multi-Path,表示路由器到同一目的网段存在多条代价相同的下一跳时,可以同时使用这些路径转发流量。

它通常不会逐包随机转发,而是根据五元组等信息做哈希,让同一条流尽量走同一路径,避免乱序。

ECMP 能提高带宽利用率和冗余能力,但也可能带来哈希不均、单流无法用满多链路、故障收敛和排障复杂等问题。

详细版

路由表可能有:

10.0.0.0/8 via R1 cost 10
10.0.0.0/8 via R2 cost 10

两条路径代价相同,路由器可以启用 ECMP。

常见哈希输入:

  • 源 IP。
  • 目的 IP。
  • 源端口。
  • 目的端口。
  • 协议号。

同一 TCP 连接五元组不变,因此通常走同一条路径。

如果逐包分担,可能造成 TCP 包乱序,影响性能。

完整版教学

1. 先定义 ECMP

ECMP 表示等价多路径。

当路由协议计算出多条到同一目的前缀的同成本路径时,设备可以把这些路径都装进转发表。

转发时从多个下一跳中选择一个。

ECMP 是三层网络中常见的负载分担和冗余机制。

2. 为什么不推荐逐包负载

如果包 1 走链路 A,包 2 走链路 B,包 3 又走链路 A。

不同链路延迟可能不同。

接收端看到的包顺序可能变成:

1, 3, 2, 4

TCP 会把乱序当作网络异常信号,触发重复 ACK、重传或拥塞窗口变化。

所以 ECMP 常按流哈希,而不是逐包随机。

3. 五元组哈希

典型哈希字段:

src ip + dst ip + src port + dst port + protocol

同一条 TCP 连接五元组稳定。

因此同一连接通常固定走一条路径。

不同连接可能分散到不同路径。

这能在保持单流有序的同时实现多流分担。

4. ECMP 的优势

优势说明
提高带宽多条链路同时承载流量
提高冗余某条路径故障后可切到其他路径
简化扩展增加等价链路即可扩容
适合数据中心Spine-Leaf 架构大量使用

数据中心网络常用 ECMP 在多条上行链路间分散东西向流量。

5. ECMP 的局限

ECMP 不是完美负载均衡。

它可能遇到:

  • 哈希不均。
  • 大流集中到同一路径。
  • 单条流无法同时利用多条链路。
  • 路径故障时哈希重分布。
  • 排查路径变得复杂。

如果只有一个超大 TCP 连接,它通常只能走一条链路。

多路径总带宽不等于单流带宽。

6. 一致性哈希和重分布问题

当 ECMP 下一跳数量变化时,哈希映射可能改变。

大量流被重新映射,可能造成短暂抖动。

一些设备会使用更平滑的哈希或 resilient hashing,减少故障或扩容时受影响的流数量。

这在大规模数据中心里很重要。

7. 常见误区与追问

  • 误区:ECMP 会把一个 TCP 连接平均拆到所有链路。 通常按流哈希,单连接一般走一条路径。
  • 误区:ECMP 一定完全均匀。 哈希分布受流数量和流大小影响,可能出现大流倾斜。
  • 误区:逐包负载更公平所以最好。 逐包可能导致乱序,影响 TCP 性能。
  • 追问:ECMP 常用哪些哈希字段? 常见是五元组,也可能根据设备配置调整。
  • 追问:为什么数据中心喜欢 ECMP? Spine-Leaf 中多条等价路径多,ECMP 扩展性好。
  • 追问:路径故障会怎样? 下一跳集合变化,部分流可能被重新映射到其他路径。

8. 加强记忆

ECMP 记成“多条一样贵的路,按流哈希分车道”。

它分散的是多流,不是把单个连接切成多份乱跑。