什么是路由追踪
路由追踪(Traceroute)是一种网络诊断工具,用于显示数据包从源主机到目标主机所经过的所有路由器(跳)路径。它能帮助网络管理员了解数据包的传输路径,定位网络延迟或丢包发生的具体位置。
Traceroute的工作原理
Traceroute利用IP协议中的TTL(Time to Live,生存时间)字段来实现路径发现:
- 发送TTL=1的数据包到目标,第一个路由器将TTL减为0后丢弃数据包,并返回"ICMP Time Exceeded"消息
- 发送TTL=2的数据包,第二个路由器返回"ICMP Time Exceeded"
- 依次递增TTL值,直到数据包到达目标主机
- 目标主机返回"ICMP Port Unreachable"(UDP方式)或"ICMP Echo Reply"(ICMP方式)
通过这一过程,Traceroute可以获取路径上每个路由器的IP地址和响应时间。
不同平台的Traceroute命令
Windows:tracert
Windows使用ICMP Echo Request实现路由追踪:
tracert example.com
# 输出示例
跟踪到 example.com [93.184.216.34] 的路由:
1 1 ms 1 ms 1 ms 192.168.1.1
2 12 ms 11 ms 12 ms 10.10.10.1
3 15 ms 14 ms 15 ms 72.14.215.85
4 18 ms 17 ms 18 ms 93.184.216.34
Linux/macOS:traceroute
Linux默认使用UDP实现,也可以指定ICMP模式:
# UDP模式(默认)
traceroute example.com
# ICMP模式
traceroute -I example.com
# TCP模式
traceroute -T example.com
Traceroute结果解读
每一跳的含义
每行输出代表路径上的一个路由器:
5 202.97.12.34 (202.97.12.34) 25.123 ms 24.567 ms 25.890 ms
- 序号(5):跳数,即第几个路由器
- IP地址:路由器的IP地址
- 主机名:路由器的反向DNS名称(可能为空)
- 三个时间值:三次探测的往返时间(ms)
常见异常情况
| 现象 | 含义 | 可能原因 |
|---|---|---|
| * * * | 无响应 | 路由器丢弃了探测包 |
| 某一跳延迟突然增大 | 该路由器存在拥塞 | 网络瓶颈或QoS限制 |
| 后续跳延迟持续高 | 该点之后的链路有问题 | 跨运营商或跨境链路 |
| 最终目标不可达 | 目标主机或最后一跳有问题 | 服务器故障或防火墙阻止 |
MTR:Traceroute的增强版
什么是MTR
MTR(My Traceroute)是Traceroute和Ping的结合体。与传统Traceroute只发送3个探测包不同,MTR会持续向路径上的每个路由器发送探测包,实时统计每一跳的延迟和丢包率。
MTR的优势
- 持续监测:持续发送探测包,结果更具统计意义
- 丢包率统计:显示每一跳的丢包百分比
- 延迟统计:显示最好、最差和平均延迟
- 实时更新:结果实时刷新,便于观察网络变化
MTR命令使用
# Linux安装MTR
sudo apt install mtr # Debian/Ubuntu
sudo yum install mtr # CentOS/RHEL
# 运行MTR
mtr example.com
# 指定发送次数后退出
mtr -c 100 example.com
# 报告模式(非交互式)
mtr -r -c 50 example.com
MTR输出解读
Host Loss% Snt Last Avg Best Wrst StDev
1. gateway.local 0.0% 100 0.5 0.6 0.4 1.2 0.1
2. isp-router.net 0.0% 100 8.2 9.1 7.5 15.3 1.5
3. backbone-router.net 2.0% 100 15.3 16.2 14.1 25.8 2.3
4. ??? 100.0% 100 0.0 0.0 0.0 0.0 0.0
5. target-server.com 0.0% 100 22.1 23.5 21.2 30.1 1.8
关键指标:
- Loss%:丢包率,中间跳的高丢包率可能是ICMP限速,不一定是问题
- Last/Avg/Best/Wrst:最近/平均/最好/最差延迟
- StDev:标准差,值越大表示延迟越不稳定
如何定位网络问题
使用MTR定位问题的步骤
- 运行MTR测试:对问题目标运行MTR,收集足够样本(至少100个包)
- 观察丢包模式:如果某一跳开始出现持续丢包,问题可能在该跳或其上游
- 观察延迟变化:延迟突然增大的位置往往是瓶颈所在
- 区分真实丢包和ICMP限速:如果某一跳丢包但后续跳正常,通常是路由器限速ICMP
常见网络问题模式
模式一:最后一跳丢包
- 现象:路径上所有路由器正常,只有目标主机丢包
- 原因:目标服务器过载或防火墙限制
模式二:中间某跳开始丢包
- 现象:从某一跳开始,后续所有跳都有丢包
- 原因:该路由器或其上游链路存在问题
模式三:跨运营商延迟跳变
- 现象:在运营商交界处延迟显著增加
- 原因:跨运营商互联带宽不足
使用在线MTR工具
TCPTest提供在线MTR和路由追踪服务,具有以下优势:
- 多节点测试:从不同地区同时进行路由追踪
- 多运营商覆盖:覆盖电信、联通、移动等主要运营商
- 可视化展示:直观显示路由路径和各跳性能
- 历史对比:保存历史测试数据,便于追踪变化
总结
Traceroute和MTR是网络故障排查的重要工具。Traceroute适合快速了解网络路径,MTR适合深入分析网络质量。在实际工作中,建议先用Traceroute了解路径,再用MTR进行详细的性能分析。当问题涉及多个地区或运营商时,使用TCPTest等在线工具进行多节点测试可以获得更全面的诊断信息。