mtr 解决什么问题
mtr 把 ping 的统计能力和 traceroute 的逐跳能力合到一个工具里:它对路径上每一跳持续发包,统计每跳的丢包率与时延分布,因此特别适合观察间歇性问题。报告模式跑完输出一张表,可以直接留档并与变更前的结果做对比;交互模式则适合现场盯着看,观察丢包是否随时间波动。使用时有两个前提要记住:一是路径可能不对称,去程看到的跳与回程不同;二是很多设备对探测报文的响应做了限速,中间跳的高丢包率未必代表真实转发丢包。
基本信息
| 平台 | Linux 及多数发行版软件源可装,网络设备通常不提供 |
|---|---|
| 报告模式 | mtr -rwzc <次数> <目标>,跑完输出结果 |
| 交互模式 | 不带 r 参数,实时刷新便于现场观察 |
| 关键列 | Loss%、Avg、StDev 与 Best/Wrst |
| 常用参数 | -n 不做反解、-z 显示 ASN、-T 用 TCP 探测 |
| 留档 | 输出重定向到文件,供前后对比 |
典型使用场景
- 间歇性卡顿:连续探测看丢包发生在哪一跳
- 跨运营商排障:用 ASN 显示区分责任边界
- 变更前后对比:同一目标同一参数跑两次留档
- 验证链路质量:结合 StDev 判断时延稳定性
- 疑似策略拦截:改用 TCP 或指定端口探测绕开 ICMP 限制
用法示例
用法示例
# 报告模式:100 次探测后输出并留档
mtr -rwzc 100 10.2.2.1 | tee mtr-report.txt
# 用 TCP 443 探测,绕开部分 ICMP 限速
mtr -n --tcp --port 443 10.2.2.1
# 显示 ASN,便于区分运营商边界
mtr -zwn 10.2.2.1
# 本地侧检查到目标的基本路径
mtr -rzc 50 8.8.8.8输出逐列读法
| 列名 | 含义 | 正常与异常 |
|---|---|---|
| Loss% | 该跳丢包比例 | 中间跳偏高常为限速,末端高才是真丢包 |
| Snt | 发送探测次数 | 过少时统计意义不足 |
| Avg | 平均时延 | 逐跳递增属正常,突增处即嫌疑点 |
| StDev | 时延标准差 | 偏大说明抖动明显 |
| Best/Wrst | 最优与最差时延 | 差距大提示路径不稳定 |
判断原则是从后往前看:如果某一跳开始丢包,但后面所有跳都不丢,通常说明该跳只是不响应探测,而不代表真的丢了流量。
ICMP 探测被限速时结果会失真,可改用 TCP 模式指定业务端口,得出的结论更贴近真实转发行为。