在排查网络问题时,Ping 和 Traceroute 是两个最基本的工具。但很多时候你会发现,光靠其中一个很难准确定位问题:Ping 只能告诉你延迟和丢包,但不知道问题出在哪一段;Traceroute 能看到路由路径,但无法持续观察每一跳的稳定性。有没有一个工具能同时做这两件事?有,那就是 MTR。
一、MTR 是什么?
MTR(My Traceroute)是一个将 Ping 和 Traceroute 功能合二为一的网络诊断工具。它最早由 Matt Kimball 在 1997 年开发,至今仍然是运维工程师排查网络问题时最常用的利器之一。
MTR 的工作方式是:它像 Traceroute 一样,探测从你的设备到目标 IP 之间经过的每一跳路由节点。然后,它会对每一跳持续发送数据包(类似于 Ping),实时统计每一跳的延迟、丢包率、抖动等指标。最终呈现的是一张综合了路径信息和质量数据的完整报告。
简单来说:MTR = 持续的 Traceroute + 每一跳的 Ping 统计。
二、MTR 能提供哪些信息?
一次完整的 MTR 测试结果通常包含以下几列数据:
跳数(Hop):数据包经过的第几个路由节点。第 1 跳通常是你的网关,最后一跳是目标服务器。
IP 地址 / 主机名:每一跳路由器的 IP 地址。如果能反向解析,还会显示主机名,通过主机名你通常能判断出这台路由器属于哪个运营商、位于哪个城市。
丢包率(Loss%):这是最重要的指标。表示发送到该跳的数据包有多少没有收到回复。0% 是理想值。
已发送包数(Snt):到目前为止向该跳发送了多少个数据包。数量越大,统计结果越可靠。
最近一次延迟(Last):最新一个数据包的延迟。
平均延迟(Avg):所有数据包延迟的平均值。这是评估某一跳网络质量的主要指标。
最佳延迟(Best):所有数据包中延迟最低的一个。
最差延迟(Wrst/Worst):所有数据包中延迟最高的一个。如果 Worst 远大于 Avg,说明这一跳存在严重的延迟抖动。
标准差(StDev):延迟的标准差,反映延迟的稳定性。标准差越小,网络越稳定。标准差大说明延迟时高时低,网络质量不稳定。
三、MTR 相比 Ping 和 Traceroute 的优势
比 Ping 更有信息量:Ping 只告诉你到目标的总延迟和丢包率,但不知道问题出在中间的哪一跳。MTR 把从你到目标之间的每一个中间节点都展示出来,每一跳的丢包和延迟都一目了然。
比 Traceroute 更准确:传统 Traceroute 每一跳通常只发 3 个包,数据量太少,很容易受偶然波动影响。MTR 可以持续发送几十甚至上百个包,统计数据更加可靠。
实时动态观察:MTR 是持续运行的,你可以实时观察每一跳的延迟和丢包变化。如果某条线路间歇性抖动,在 MTR 里很容易发现——平均延迟正常但最大延迟很高、标准差很大。
四、如何使用 Biuping 的路由追踪工具
Biuping 平台的路由追踪工具内置了类似 MTR 的功能,支持从全国多个检测节点发起路由追踪测试。
打开 Biuping 路由追踪工具,输入你想测试的目标 IP 或域名。选择一个你关注的检测节点(比如你想知道北京电信用户到你服务器的路由情况,就选北京电信节点),然后开始测试。
测试完成后,你会看到从该节点到目标 IP 的完整路由路径,包括每一跳的 IP 地址、延迟等信息。结合这些数据,你就可以分析网络状况了。
五、如何看懂 MTR 报告
看 MTR 报告有一些技巧和常见误区,掌握这些才能正确分析问题。
5.1 丢包要看"是否传递到下一跳"
这是 MTR 报告中最常被误读的一点。有些路由器会限制对 ICMP 包的响应速率(ICMP Rate Limiting),表现为该跳显示有丢包,但后续所有跳的丢包率为 0%。
比如你看到这样的结果:第 3 跳丢包 20%,但第 4 跳到最后一跳丢包都是 0%。这种情况说明第 3 跳路由器只是限制了自己回复 ICMP 的速率,数据包实际上正常通过了,网络没有问题。这叫做"非传递性丢包",可以安全忽略。
真正有问题的丢包是"传递性丢包":从某一跳开始丢包,并且后续所有跳(包括最终目标)都出现相同或更高比例的丢包。比如第 5 跳开始出现 10% 丢包,第 6 跳也是 10%,最终目标也是 10%。这说明问题确实出在第 5 跳,数据包在那里被丢弃了。
5.2 延迟跳变要结合位置判断
看到某一跳延迟突然升高不一定是问题。关键要看跳变的位置和幅度是否合理。
比如数据包从国内最后一跳(延迟 30ms)到达美国第一跳(延迟 180ms),延迟增加了 150ms。这是正常的——跨太平洋传输就是需要这么多时间,光在海底光缆中也需要传播时间。
但如果从同一城市的一个路由到另一个路由,延迟从 10ms 突然跳到 80ms,增加了 70ms,那就不正常了。这可能是该路由设备拥塞或链路出现问题。
5.3 关注最后一跳的数据
最终用户的体验取决于最后一跳(即目标服务器)的数据。即使中间某些跳延迟偏高或有少量丢包,只要最后一跳的延迟和丢包率正常,实际体验通常不会受影响。
六、用 MTR 排查常见网络问题
6.1 晚高峰卡顿
如果你的网站在晚上 8-11 点特别慢,可以在高峰时段和非高峰时段分别做一次 MTR 测试。对比两次结果,看哪些跳的延迟在高峰时段明显升高。如果是运营商骨干网的某一跳延迟飙升,说明是骨干网拥塞,你个人无法解决,只能等待运营商扩容或者更换线路。
6.2 某些地区访问特别慢
在 Biuping 平台上从不同地区的节点分别发起路由追踪,对比各地区的路由路径。你可能会发现某些地区的路径走了很多弯路(比如从广东绕到北京再到美国),而其他地区是直连的。这种情况可以通过选择多线路 BGP 机房或接入 CDN 来优化。
6.3 间歇性断线
让 MTR 持续运行较长时间(发送上百个包),观察哪一跳的丢包率最高且具有传递性。如果是中间某一跳路由器的问题,你可以记录该路由器的 IP 和运营商信息,向你的 IDC 或运营商报障。附上 MTR 报告会让处理速度快很多。
七、在服务器上运行 MTR
在线工具的 MTR 是从检测节点到你的目标服务器的正向路径。但网络是双向的,数据回来的路径(回程)可能完全不同。如果你有服务器的 SSH 权限,可以在服务器上安装 MTR,从服务器向你的本地 IP 反向测试。
在 Linux 上安装和使用 MTR 非常简单:
# Debian/Ubuntu
apt install -y mtr-tiny
# CentOS/RHEL
yum install -y mtr
# 运行 MTR(发送 100 个包后自动停止,生成报告)
mtr -r -c 100 目标IP
正向 MTR + 反向 MTR 的组合,能帮你完整了解去程和回程的路由情况,是排查网络问题的黄金组合。
八、总结
MTR 是网络运维中不可或缺的诊断工具,它将 Ping 的持续监测能力和 Traceroute 的路径追踪能力完美结合,让你能够精确定位网络问题所在。通过 Biuping 的路由追踪工具,你可以从全国各地多个节点发起测试,快速了解不同地区、不同运营商到你服务器的路由路径和链路质量。
记住分析 MTR 报告的三个关键原则:丢包要看是否具有传递性,延迟跳变要结合地理位置判断,最终体验看最后一跳。掌握这些,你就能像专业运维一样排查网络问题了。