使用mtr排查服务器网络连通性
问题
这两天ffmpeg推流的同事反应服务器
推送视频流到A直播云
的直播播放某个时间段经常卡顿
排查
mtr的使用在末尾
同一台服务器将视频流分别推送到
B云直播
、A直播云
对比播放流畅度,B直播云
播放流畅,判断:问题不在推流服务器将问题反馈给
A直播云
,A直播云答复:推送不稳定排查对比
推流服务器
与A直播云
、B直播云
的网络联通性- A直播云
mtr a.ar414.com
- B直播云
mtr b.ar414.com
- A直播云
排查结论
推流服务器
与A直播云
的链路异常,链路绕到国外才回国,丢包率与延迟率较高推流服务器
与B直播云
的链路正常,丢包率与延迟率总体较低
解决
将mtr排查报告反馈至A直播云让其调整路由链路
mtr
网络联通性判断工具,它可以结合 ping nslookup tracert 来判断网络的相关特性,这个命令就是 mtr。mtr 全称 my traceroute,是一个把 ping 和 traceroute 合并到一个程序的网络诊断工具
安装
- Linux
# Ubuntu $ apt install mtr # CentOS $ yum install mtr
- Windows
免安装包:github.com/oott123/WinMTR/releases
使用
根据实际业务进行测试 比如我这边测的是推流则需要指定包大小及tcp协议
$ mtr ar414.com
参数说明:
- Host:链路IP地址
- Loss:丢包率
- Snt:已发送数据包数
- Last:最后一个包的延时
- Avg:平均延时
- Best:最低延时
- Wrst:最差延时
- StDev:稳定性
命令选项
- -r
- 使用-r:默认向目标地址发送10个ICMP包 然后直接打印报告
- 不使用-r:动态运行不断向目标地址发送ICMP包
- -s 指定发送每个数据包大小(bytes)
- 使用-r:默认向目标地址发送10个ICMP包 然后直接打印报告
- -c 指定发送包数量
- -i 指定发送数据包的间隔(秒)
- --tcp 指定发送tcp包
- --udp 指定发送udp包
结果分析
链路分析:
- 自建机房
- 一般情况下前几跳都是局域网内路由,如果异常则自行排查或上报机房运维
- 中间跳数则是中间节点,如果异常则联系
运营商
- 后几跳则是服务提供商,如果异常联系服务提供商
- 云服务器
- 前中的链路异常则联系云服务器商,一般提交工单
- 后几跳异常则联系服务提供商
丢包率
- 还有很多时候问题是在数据包返回途中发生的,数据包可以成功的到达目的主机,但是返回过程中遇到 “困难” 了。所以,当问题发生后,我们通常需要收集反方向的 MTR 报告 结合正反向MRT排查报告进行判断
- 网络延迟
- 因为是不同的位置,延迟通常会随着条数的增加而增加。所以,延迟通常取决于节点之间的物理距离和线路质量。
- 高延迟并不一定意味着当前路由器有问题。延迟很大的原因也有可能是在返回过程中引发的。从这份报告的截图看不到返回的路径,返回的路径可能是完全不同的线路,所以一般需要进行双向 MTR 测试
本作品采用《CC 协议》,转载必须注明作者和本文链接