问题描述
云主机对外访问网络资源时出现网络卡顿的情况。通过执行ping命令,发现网络存在丢包或时延较高的情况。
原因分析
出现网络访问丢包或时延较高的问题,可能存在多方面原因,比如链路拥塞、链路节点故障、服务器负载高、系统设置问题等。
解决方法
在出现访问丢包或者时延高的情况下,可以优先对云主机自身原因进行排查。
如果云主机运行状态正常(如不存在负载异常等情况),可以使用Tracert或MTR工具进行进一步诊断。
Tracert和MTR工具使用方式
Windows操作系统使用Tracert命令方式
tracert是路由跟踪命令,用来跟踪数据包到达目的地址过程中的跳转路径,以及每一跳消耗的时间。tracert命令功能与ping命令类似,但可以获得更详细的路径信息,包括数据包所走的全部路径、节点IP以及消耗时间。
-
登录Windows云主机。
-
打开cmd命令窗,执行命令
tracert IP地址/域名
跟踪路径,例如:tracert www.ctyun.cn。可以根据回显信息,对数据节点进行分析:
1)tracert默认最大跳数30,第1列为起跳顺序号。
2)tracert每次会发送三个数据包,第2、3、4列为对应三个数据包的返回时间,如果包丢失则返显为“*” 。
3)第5列为跳转的目标IP节点,如果某一行的此列出现了“请求超时”或“request timed out”,请您根据实际情况对该节点问题进行排查。
Windows操作系统使用WinMTR工具介绍
-
登录Windows云主机,WinMTR需要访问公网下载,因此请确认云主机可访问公网。
-
请您通过浏览器寻找正规途径搜索并下载WinMTR软件包。此软件无需安装,解压即可运行。
-
双击WinMTR.exe,运行WinMTR。
-
在WinMTR窗口的Host处,输入目的地址,可以为IP地址或者域名。完成后单击“Start”。
-
根据链路情况不同,运行时间不同,如果一段时间未运行完成可单击“Stop”以结束测试。结果如下图所示。
测试结果的主要信息如下:
1)第一列-Hostname:到目的地址经过的每个节点IP或域名。
2)第二列-Nr:经过的节点数量。
3)第三列-Loss%:对应节点的丢包率。
4)第四列-Sent:已发送的数据包数量。
5)第五列-Recv:已接收到的响应数量。
6)第六列-Best:最短响应时间。
7)第七列-Avrg:平均响应时间。
8)第八列-Worst:最长响应时间。
9)第九列-Last:最近一次响应时间。
Linux操作系统MTR介绍和使用
-
您可以执行以下命令进行安装MTR,安装前请确保您的云主机可访问公网。如果已安装可跳过此步骤。
1)CentOS 操作系统执行以下命令安装:yum install mtr
2)Ubuntu 操作系统执行以下命令安装:
sudo apt-get install mtr
-
MTR相关参数说明,请根据您的实际情况选择参数使用:
-h/--help:显示帮助菜单。
-v/--version:显示MTR版本信息。
-r/--report:结果以报告形式输出。
-p/--split:与 --report相对,分别列出每次追踪的结果。
-c/--report-cycles:指定每次探测发送的数据包数量,默认值是10。
-s/--psize:设置数据包的大小。
-n/--no-dns:不对IP地址做域名解析。
-a/--address:用户设置发送数据包的IP地址,主要用户单一主机多个IP地址的场景。
-4:IPv4。
-6:IPv6。
-
以本机到目的地址www.ctyun.cn为例,执行以下命令,以报告形式输出MTR的诊断结果。
mtr www.ctyun.cn --report
回显信息如下:
主要输出的信息如下:
1)第一列-HOST:到目的地址经过的每个节点IP或域名。
2)第二列-Loss%:对应节点的丢包率。
3)第三列-Snt:已发送的数据包数量。
4)第四列-Last:最近一次响应时间。
5)第五列-Avg:平均响应时间。
6)第六列-Best:最短响应时间。
7)第七列-Wrst:最长响应时间。
8)第八列-StDev:标准偏差。偏差值越高,说明各个数据包在该节点的响应时间相差越大。
WinMTR和MTR的报告分析处理
以下图为例,对MTR报告进行分析。
- 客户端本地网络:即图中A区域,代表本地局域网和本地网络提供商网络。
1)如果客户端本地网络中的节点出现异常,则需要对本地网络进行相应的排查分析。
2)如果本地网络提供商网络出现异常,则需要向当地运营商反馈问题。 - 运营商骨干网络:即图中B区域,如果该区域出现异常,可以根据异常节点的IP查询其所属的运营商,向对应运营商进行反馈。
- 目标服务器本地网络:即图中C区域,即目标服务器所属提供商的网络。
1)如果丢包发生在目标服务器,则可能是目标服务器的网络配置原因,请检查目的服务器的防火墙配置。
2)如果丢包发生在接近目标服务器的几跳,则可能是目标服务器所属提供商的网络问题。 - 链路负载均衡:即图中的D区域,如果中间链路某些部分启用了链路负载均衡,则mtr命令只会对首尾节点进行编号和探测统计,中间节点只会显示相应的IP或域名信息。
常见的链路异常案例
-
目标主机配置不当。
如下示例所示,数据包在第5条的目标地址出现了80%的丢包,问题可能是目标服务器网络配置原因,需检查目标服务器的访问配置。
-
ICMP限速。
如下图所示,在第6、7跳出现丢包,但后续节点均未见异常。推断是该节点ICMP限速所致。该场景对最终客户端到目标服务器的数据传输不会有影响,分析时可以忽略此种场景。
-
环路。
如下图所示,数据包在第5跳之后出现了循环跳转,导致最终无法到达目标服务器。出现此场景是由于运营商相关节点路由配置异常所致,需联系相应节点归属运营商处理。
-
链路中断。
如下图所示,数据包在第4跳之后就无法收到任何反馈。这通常是由于相应节点中断所致。建议结合反向链路测试做进一步确认。该场景需要联系相应节点归属运营商处理。