什么是 Traceroute 与 MTR?网络路径诊断工具详解

Traceroute 追踪网络路径,MTR 持续监控质量。本文详解二者原理、差异及在中国网络环境下的使用方法。

Dig Trace 团队Dig Trace 团队· 网络工程团队3 分钟阅读
什么是 Traceroute 与 MTR?网络路径诊断工具详解

数据包从电脑传到远程服务器,中间经过多台路由器。Traceroute 和 MTR 用来暴露这条链路:前者画出单张快照,后者提供持续监控,定位延迟、丢包和路由绕行。

Traceroute 与 MTR 是什么

Traceroute 发送探测包,记录路径上的每台路由器(称为“跃点”)及往返时间(RTT)。Windows 下名为 tracert,Linux 和 macOS 则使用 traceroute 命令。

MTR,全称 My Traceroute,把 traceroute 与 ping 的持续探测结合起来。它先发现路由,再向每个跃点循环发包,实时聚合延迟与丢包。正如 Cloudflare 官方中文解释 所述,其核心价值在于把单次快照扩展为持续监控。两者都依赖 TTL:每台路由器把 TTL 减 1,归零后丢弃包并返回 ICMP “Time Exceeded” 消息,暴露自身地址。

工作原理

Traceroute 将 TTL 设为 1 发出探测包。第一跳路由器将其减为 0 后返回 ICMP 错误,工具记录地址和耗时。随后 TTL 递增,逐跳暴露路径直到抵达目标。Linux 默认 UDP,Windows 默认 ICMP。

MTR 发现路径后并行向所有跃点发包并持续刷新。默认 ICMP,但两者都支持 UDP 或 TCP。这在防火墙过滤 ICMP 时尤为重要。

不是每次探测都能收到回复。某跳超时时输出显示星号,这不一定代表故障,可能只是路由器禁用了 ICMP 回复。APNIC 的相关文章 提醒,正确解读这些空白是诊断关键。

关键差异

Traceroute 只捕捉瞬间路径,MTR 收集数十轮样本,能发现间歇性丢包。

输出上也截然不同。Traceroute 仅展示路径与单次 RTT;MTR 额外计算丢包百分比、平均延迟与标准差,更容易定位嘈杂链路或过载路由器。

MTR 并行探测所有跃点,traceroute 通常逐跳等待,因此前者生成完整结果更快。此外,MTR 的固定 ICMP 探针在多路径网络中易停留在同一流;traceroute 的 UDP 端口变化则可能暴露多条并行路径。

在中国网络下使用

国内运营商骨干网(如 AS4134)对 ICMP 和 UDP 的优先级处理不同,防火墙也可能限速。用户可优先使用 itdog.cn 这类多节点 MTR 工具,从电信、联通、移动线路发起测试,查看 AS 号与地理位置。这比仅从国际节点测试更能反映真实质量。

在中国网络中还需注意协议选择。MTR 默认 ICMP 有时显示更保守的丢包,切换到 TCP 模式(-T)可模拟真实流量,绕过部分 ICMP 限制。

尽管中间某跳可能出现星号,国内社区普遍强调不要急于下结论。

运营商骨干路由器常把 ICMP 回复置于低优先级,中间星号或丢包不一定影响业务。诊断应以最后一跳的丢包和延迟为准。

基础用法示例

在 Linux 终端执行快速 traceroute,禁用 DNS 反解以加速输出:

traceroute -n 8.8.8.8

典型输出如下:

traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
 1  192.168.1.1  1.2 ms  1.1 ms  1.3 ms
 2  10.10.0.1    5.4 ms  5.2 ms  5.5 ms
 3  * * *
 4  202.97.x.x   15.1 ms  14.9 ms  15.2 ms
 5  8.8.8.8      25.3 ms  24.8 ms  25.1 ms

若需持续统计,可用 MTR 的报告模式:

mtr --report -n --cycles 100 8.8.8.8

这会向每一跳发送 100 轮探测,输出丢包率与平均延迟等表格:

Host                                                                 Loss% Drop Rcv  Avg  StDev  Javg 
 1. AS4134 _gateway (192.168.1.1)                                     0.0%    0 100  1.7    0.8   0.6
 2. AS4134 10.10.0.1                                                   0.0%    0 100  5.3    1.2   0.8
 3. AS4837 no-ptr (202.97.x.x)                                        0.3%    0 100 15.2    3.1   2.4
 4. AS15169 dns.google (8.8.8.8)                                       0.0%    0 100 24.8    2.5   1.9

Loss% 为丢包率,Avg 为平均延迟,StDev 为标准差。AS 号前缀标识该跃点所属的运营商网络。对需要向机房或运营商提交证据的场景,量化结果远比单次 traceroute 有说服力。

何时使用与进阶方向

快速确认路由走向用 traceroute 足够;排查间歇性故障或评估机房线路质量则必须上 MTR。附上 MTR 报告比口头描述“网速慢”有效得多。

理解这两个工具后,可进一步学习 BGP 与 AS 路径,把 traceroute 看到的 hops 放到自治系统互联的视角中。也可结合 Dig Trace 的 在线 Traceroute 工具DNS 解析知识,区分路径问题与域名解析问题。网络诊断从来不是单一工具的独奏,而是多源数据的交叉验证。