ECMP 为什么看起来不均匀
等价多路径转发按流而不是按包分担:设备对报文的若干字段做哈希,算出一个值再选择出口。同一条流的所有报文哈希结果相同,因此固定走一条路径;只有源目的地址、端口或协议不同的多条流才会被分散到不同路径。所以用一条 iperf 或单个 ping 看到「只走一条线」是正常现象,不能据此判断负载分担坏了。真正的检查方法是并发多条流,观察各路径计数是否都有增长,并确认是否存在某条路径完全没有流量。
基本信息
| 哈希输入 | 常见为源目的 IP、源目的端口、协议,部分平台可配置 |
|---|---|
| 分流粒度 | 按流,同一流固定一条路径;可配置按包时需谨慎 |
| 平台差异 | 各厂商默认哈希字段与是否包含端口并不相同 |
| 检查方式 | 并发多流打流,对比各成员接口计数增量 |
| 常见命令 | show ip cef 目标地址 internal、show interfaces、display 命令 |
典型使用场景
- 双线带宽未叠加:确认是否因单条大流只走一条路径
- 流量分布明显倾斜:排查哈希字段不足或成员权重差异
- 新设备上线后分布变化:核对平台默认哈希算法与字段列表
- 成员链路利用率核对:确认每条路径都真实参与了转发
- 故障演练:验证单条路径失效后流量是否重新分布
检查思路
检查思路
# 多条并发流,观察是否被分散(单流只走一条是正常的)
iperf3 -c 10.2.2.10 -P 8 -t 60
# 用不同源端口也能改变哈希结果
traceroute -n 10.2.2.1
# 设备侧看下一跳与成员分布
show ip cef 10.2.2.1 internal
show interfaces | include rate|packets # 间隔采样看各成员计数增量现象与判断
| 现象 | 常见原因 | 处理 |
|---|---|---|
| 单流只走一条路径 | 按流哈希的固有特性 | 正常现象,改用多流测试验证 |
| 多流也集中在一两条 | 哈希字段过少或平台算法限制 | 查看平台哈希配置项,必要时增加参与字段 |
| 某成员完全没有流量 | 该成员未进入转发集合 | 查路由等价性与成员接口状态 |
| 分布长期严重倾斜 | 等价度量不同或权重设置 | 核对 IGP 度量与平台权重配置 |
不同平台默认哈希字段不一致:有的包含四层端口,有的只用三层地址。更换设备型号后分布特征变化很常见,这是算法差异而不是故障。
把哈希改成按包分担会显著提升乱序概率,可能导致 TCP 性能下降,跨广域网场景不建议开启。