怎么看 traceroute 和 MTR:判断“回国精品线”是不是在吹牛
很多商家会发你一张路由图,然后说:
- 回国精品
- 三网优化
- 联通 9929
- 电信 CN2 GIA
- 移动精品
- 晚高峰稳如老狗
问题是,单张 traceroute 截图既可以很有信息量,也可以几乎没有信息量。
要判断一条“回国优质线路”是不是在吹牛,关键不是看它有没有几跳写着 AS4809、AS9929 或 AS58453,而是看:
- 测的是什么协议
- 测的是去程还是回程
- 是单次采样还是多轮统计
- 中间跳是否只是“懒得回包”
- 目标端本身有没有真实丢包和抖动
先说结论
如果你只想先记简化版:
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 最容易误导人
因为它通常只有几个问题:
-
样本太少默认每跳只有少量探测,偶然性很大。 -
只是某一个时刻白天和晚高峰可能完全是两条体验曲线。 -
协议可能不匹配你测的是 ICMP,但你的真实业务可能是 TCP、UDP、QUIC。 -
很多设备会限速或不回包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 真实业务表现。
我更认可的测试姿势
如果你真想判断商家有没有吹牛,我建议至少让它给你:
-
回程 traceroute先看路径大体怎么走。 -
晚高峰 MTR report最好 50 到 100 个 cycle。 -
分运营商测试电信、联通、移动分开看。 -
必要时换协议默认 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 机械等于实际丢包 - 重点看
回程 + 晚高峰 + 多运营商 + 最终目标 - 看到
CN2、9929、CMI先加分,但不要直接信到下单
一句话总结:
真正能拆穿营销词的,不是“某一跳看起来很高级”,而是多时段统计下,目标端到底稳不稳。
参考资料
- Linux
traceroute(8)man page
https://man7.org/linux/man-pages/man8/traceroute.8.html mtr(8)man page
https://manpages.ubuntu.com/manpages/bionic/man8/mtr.8.htmlmtrofficial repository
https://github.com/traviscross/mtr