Last Updated on 2024-11-07 by likun.gong
最近工作配合排查了好几次网络问题,于是经常用到了 tracepath、traceroute 和 mtr,三个工具都是跟踪并查找网络线路的,但是又各有差异,这里简单记录一下。
tracepath 利用 UDP 协议,通过回来的数据包探测网络线路,并且在执行时不需要 root 权限,在权限不够的情况下,使用 tracepath 是一个很好的选择。
traceroute 则是利用 ICMP 协议来探测网络线路,同时可以通过参数指定使用 TCP、UDP协议来探测,可以看下述例子。
解读:
- * * * 表示没有返回数据包,这在一些商业设备中很常见,它们屏蔽了来自 traceroute 的探测
- ip 后边的 ms 则是源到这个点的 RTT,每次 traceroute 会发送 3 个数据包来验证
mtr 是 My Traceroute 缩写,它是 traceroute 和 ping 的结合体,除了能看到网络经过的各个点,它还可以显示到目的地的路线中不断更新的延迟和丢包信息,可以实时看到路径上发生的情况,协助排除网络问题。
解读:
- Loss% 可以实时看到我们到每一跳的丢包率
- Snt 是发送的数据包总数,Avg 表示平均 RTT,Last 是最后一次 RTT,Best 是最佳 RTT,Wrst 则是最差的
- 中间的点出现了丢包,但是到最终的目的地丢包率是 0,说明我们访问是没有丢包的,这里有可能是我们发送的 ICMP 包超过了网络设备的限制,从而被丢包
总结:
mtr 默认使用 ICMP 协议来探测线路,也可以通过参数指定使用 TCP、UDP 协议来探测,对比 traceroute 和 tracepath 的功能更强大,并且展示的信息更多,更有利于发现网络问题,排查时可以优先考虑使用 mtr。
发表回复