Skip to main content

怎么看 traceroute 和 MTR:判断“回国精品线”是不是在吹牛

· 9 min read
Jiang
Operator

很多商家会发你一张路由图,然后说:

  • 回国精品
  • 三网优化
  • 联通 9929
  • 电信 CN2 GIA
  • 移动精品
  • 晚高峰稳如老狗

问题是,单张 traceroute 截图既可以很有信息量,也可以几乎没有信息量。

要判断一条“回国优质线路”是不是在吹牛,关键不是看它有没有几跳写着 AS4809AS9929AS58453,而是看:

  • 测的是什么协议
  • 测的是去程还是回程
  • 是单次采样还是多轮统计
  • 中间跳是否只是“懒得回包”
  • 目标端本身有没有真实丢包和抖动

先说结论

如果你只想先记简化版:

  • traceroute 更适合看路径长什么样,不适合单独拿来判断线路稳不稳。
  • MTR 更适合看一段时间内每一跳的延迟和丢包统计,但也不能把“中间某一跳丢包”直接理解成链路坏了。
  • 真正有参考价值的是:多时段 + 多运营商 + 回程方向 + 目标端是否也出现同样问题
  • 如果某一跳 Loss 很高,但后面几跳和最终目标没有继承这个丢包,通常更像是中间设备限速回 ICMP,而不是实际转发丢包。

traceroute 和 MTR 分别在干什么

Linux traceroute 的基本原理,是用不断递增的 TTL 发探测包,希望中间路由器返回 ICMP Time Exceeded。官方 man page 里明确写了,传统方法默认使用 UDP 探测,也支持 ICMP、TCP 等不同方法。
来源:Linux man-pages
https://man7.org/linux/man-pages/man8/traceroute.8.html

MTR 可以看成“traceroute + ping”的结合版。官方 man page 里明确写了,它会持续发送低 TTL 探测包,统计每一跳的响应百分比和延迟。
来源:mtr man page
https://manpages.ubuntu.com/manpages/bionic/man8/mtr.8.html

所以:

  • traceroute 更像“给你一张当下的路径快照”
  • MTR 更像“给你一段时间里的路径统计”

买海外 VPS 时,两者都应该看,但用途不同。

为什么单张 traceroute 最容易误导人

因为它通常只有几个问题:

  1. 样本太少 默认每跳只有少量探测,偶然性很大。

  2. 只是某一个时刻 白天和晚高峰可能完全是两条体验曲线。

  3. 协议可能不匹配 你测的是 ICMP,但你的真实业务可能是 TCP、UDP、QUIC。

  4. 很多设备会限速或不回包 traceroute 官方文档明确提到,路由器和主机会做 ICMP rate throttling,过高并发会导致部分回复丢失。
    来源:Linux man-pages
    https://man7.org/linux/man-pages/man8/traceroute.8.html

所以,下面这种话术最容易骗人:

你看,第 7 跳已经进 9929 了,所以这条线就是精品回国。

这句话的问题在于:

  • 只有某一跳碰到 9929,不等于主要路径一直走 9929
  • 只看一张图,不知道晚高峰是否拥塞
  • 不知道对电信、联通、移动是不是都一样

MTR 为什么更适合拆穿“精品线”宣传

因为 MTR 至少提供了统计维度。

官方文档里强调,MTR 会报告:

  • response percentage
  • response times
  • packet loss percentage

并且可以在 report mode 下跑固定轮次,再输出统计。
来源:mtr man page
https://manpages.ubuntu.com/manpages/bionic/man8/mtr.8.html

这意味着你不再只看“路径长什么样”,而是可以看:

  • 有没有持续性抖动
  • 有没有稳定丢包
  • 哪一跳开始明显变坏

对买家来说,MTR 的价值在于:

  • 商家拿一张单次 traceroute 说“这条线很好”
  • 你可以要求它补一份晚高峰 MTR report

如果对方拿不出来,多半只是卖概念。

MTR 里最容易被误读的一列:Loss%

这是买家最常被误导的地方。

MTR 官方文档说,突然增加的 packet loss 或 response time 往往可能说明坏链路或过载链路;但这句话不能机械套用到“中间某一跳 Loss 高”这种场景。
来源:mtr man page
https://manpages.ubuntu.com/manpages/bionic/man8/mtr.8.html

你应该这样看:

情况 1:中间某一跳 Loss 很高,但后面和最终目标正常

例子:

 4. xxx.xxx.xxx.xxx   70.0%   20.1  21.3  19.8  40.2
5. xxx.xxx.xxx.xxx 0.0% 21.0 21.7 20.5 23.8
6. target 0.0% 22.4 23.0 22.1 24.0

这通常更像是:

  • 这一跳设备对探测包限速
  • 或者优先级很低,不想认真回复你

而不是:

  • 它真的把转发流量丢掉了 70%

因为如果它真的把业务流量也丢了 70%,后面的跳数和最终目标通常也会继承这个丢包。

情况 2:从某一跳开始,后面所有跳和最终目标都一起高 Loss

例子:

 6. xxx.xxx.xxx.xxx   12.0%   38.0  40.2  35.9  60.1
7. xxx.xxx.xxx.xxx 12.3% 45.1 46.8 41.2 71.4
8. target 12.1% 47.0 49.4 43.0 73.0

这才更像:

  • 真实链路拥塞
  • 某一段之后开始稳定丢包

情况 3:Loss 不高,但 Avg / Wrst / 抖动很难看

这通常意味着:

  • 不一定断
  • 但实时体验会差

打游戏、远程桌面、语音、视频互动,比下载更怕这种问题。

很多“中间跳超时”并不等于线路烂

traceroute 官方文档明确提到:

  • 多个探测并发会制造一阵“回复风暴”
  • 路由器可能对 ICMP 应答做 rate limiting
  • 因而会看到部分 hop 的 *

它甚至直接建议,在这种情况下减少同时探测数,例如 -N 1,以获得更稳定的结果。
来源:Linux man-pages
https://man7.org/linux/man-pages/man8/traceroute.8.html

这意味着:

  • 中间某一跳 * * *
  • 并不自动等于这条线路坏了

真正该看的还是:

  • 后面的跳有没有继续出来
  • 目标端能不能稳定出来
  • 多轮测试是不是都这样

测试协议为什么重要

很多人默认用 ICMP 去测,然后把结果拿来推断真实业务。

问题在于:

  • 真实业务可能是 TCP
  • 也可能是 UDP / QUIC
  • 中间设备对 ICMP、TCP、UDP 的处理优先级可能不同

traceroute 官方文档明确写了支持不同 method,比如默认传统 UDP、ICMP、TCP 等。
来源:Linux man-pages
https://man7.org/linux/man-pages/man8/traceroute.8.html

MTR 的 man page 也明确支持 --udp--tcp
来源:mtr man page
https://manpages.ubuntu.com/manpages/bionic/man8/mtr.8.html

这对买家很重要:

  • 你要测网页、代理、API,TCP 更有参考意义
  • 你要测某些 UDP 业务,ICMP 参考意义就没那么大

所以只给你一份默认 ICMP 路由图的商家,证据并不完整。

判断“回国精品线”是否可信,至少要看这四件事

1. 看方向:是回程还是去程

大多数商家卖的是“回国优化”,所以你最该看的是:

  • 海外 VPS 回中国用户所在网络怎么走

如果只给你中国到海外的路径,那信息不够。

2. 看时段:白天不算数,晚高峰更重要

很多线路的真实问题不在白天,而在晚上。

所以我更相信:

  • 晚 8 点到 12 点的 MTR
  • 至少 50 或 100 cycle 的统计

而不是:

  • 下午两点一张 traceroute

3. 看运营商:别只看电信

“三网优化”最常见的文字游戏,就是:

  • 电信看起来不错
  • 联通普通
  • 移动很一般

但商家还是会写“三网优化”。

所以要分开看:

  • 电信回程
  • 联通回程
  • 移动回程

4. 看终点:最终目标是不是也有同样问题

中间某一跳高 Loss 不重要,最终目标稳不稳才重要。

如果最终目标:

  • 也高 Loss
  • Avg / Wrst 明显变差
  • StDev 很大

那才更像真实体验问题。

买家最常见的误判

误判 1:看到 AS4809 就以为全程是 CN2 GIA

不对。

最多只能说明:

  • 某一段碰到了电信 CN2 体系

不能说明:

  • 全路径高质量
  • 晚高峰高质量
  • 三网都高质量

误判 2:看到某一跳 50% Loss 就认定线路炸了

不对。

如果后面和目标都正常,通常只是那台设备懒得理你。

误判 3:白天 ping 很低,就认为是优质线路

不对。

优质线路不是“白天好看”,而是:

  • 晚高峰不明显塌
  • 丢包和抖动控制得住

误判 4:只测一种协议

也不够。

ICMP 结果不等于 TCP/UDP 真实业务表现。

我更认可的测试姿势

如果你真想判断商家有没有吹牛,我建议至少让它给你:

  1. 回程 traceroute 先看路径大体怎么走。

  2. 晚高峰 MTR report 最好 50 到 100 个 cycle。

  3. 分运营商测试 电信、联通、移动分开看。

  4. 必要时换协议 默认 ICMP 之外,补 TCP 或 UDP。

如果对方给你的只有:

  • 单张白天 traceroute
  • 单个省份
  • 单个运营商

那这更像销售材料,不像证据。

可以直接抄的命令

下面这些命令更适合买家和卖家沟通。

1. 看基础路径

traceroute -n 目标IP

2. 用 TCP 看路径

traceroute -n -T -p 443 目标IP

3. 跑一份适合发给别人看的 MTR 报告

mtr -n --report --report-wide -c 100 目标IP

4. 用 TCP 做 MTR

mtr -n --tcp --port 443 --report --report-wide -c 100 目标IP

这些命令本身不神奇,关键在于:

  • 要选对方向
  • 要选对时段
  • 要看最终目标

我的建议

如果你是中国买家,想判断一条“回国精品线”是不是值得加钱:

  • traceroute 当路径快照,不要当最终结论
  • MTR 当统计工具,但别把中间某一跳 Loss 机械等于实际丢包
  • 重点看 回程 + 晚高峰 + 多运营商 + 最终目标
  • 看到 CN29929CMI 先加分,但不要直接信到下单

一句话总结:

真正能拆穿营销词的,不是“某一跳看起来很高级”,而是多时段统计下,目标端到底稳不稳。

参考资料