扩展 ping 的价值
默认的 ping 只回答「通不通」这一个问题:用默认源地址、默认包长、默认次数。扩展 ping 把这些都变成可控参数:可以指定源地址以验证特定路径与回程路由,可以指定包长与 DF 位来探测路径 MTU,可以指定次数、间隔与超时来控制负载与观察窗口。之所以重要,是因为网络故障的判断结论高度依赖参数:用默认参数得到的「丢包百分之几」,换成业务实际包长和固定源地址可能完全不同。因此排障时的原则是让测试条件尽量贴近真实业务。
基本信息
| 源地址 | Cisco 用 source,Linux 用 -S |
|---|---|
| 包长 | Cisco 用 size,Linux 用 -s(不含 ICMP 头) |
| DF 位 | Cisco 用 df-bit,Linux 用 -M do |
| 次数与间隔 | repeat 与 -c、-i 控制负载与精度 |
| 扫频 | 逐档包长找可通过的分界 |
| 注意 | ICMP 优先级低,结论需与打流交叉验证 |
典型使用场景
- 验证指定源地址的回程路由是否正常
- 探测路径 MTU:用 DF 位逐档加长包长
- 大负载下的稳定性观察:提高次数与降低间隔
- 区分策略限速:不同包长或不同源地址结果差异明显
- 验收留证:把测试参数与结果一起记录
用法示例
用法示例
# Cisco:指定源地址与包长,发送 100 个
ping 10.2.2.1 source 198.51.100.1 size 1400 repeat 100
# 探测 MTU:带 DF 位的大包
ping 10.2.2.1 size 1472 df-bit
# Linux:指定源地址与包长
ping -S 198.51.100.1 -c 100 -s 1372 10.2.2.1
# Linux:禁止分片,逐档加大
ping -M do -c 5 -s 1444 10.2.2.1
# 缩短间隔提高采样密度
ping -c 200 -i 0.2 10.2.2.1 | tail -3参数组合与目的
| 参数组合 | 目的 | 判读要点 |
|---|---|---|
| 源地址 + 次数 | 验证特定路径稳定性 | 与业务源地址一致才有参考价值 |
| 包长 + DF | 探测路径 MTU | 某档开始失败即为分界 |
| 大次数 + 小间隔 | 观察丢包与抖动分布 | 关注 mdev 与丢包率 |
| 不同包长对比 | 区分 MTU 问题与链路丢包 | 小包正常大包丢属 MTU 类问题 |
| 多源地址对比 | 验证策略或路由差异 | 结果不同说明路径不同 |
Linux 的 -s 指 ICMP 载荷长度,实际报文还要加上 IP 头与 ICMP 头共 28 字节;与设备侧 size 参数的口径对照时注意换算。
用默认源地址测试很容易得出与业务不符的结论:多出口设备上指定源地址后才能复现业务实际走过的路径。