如何排查我的 Direct Connect 连接的数据包丢失问题?
上次更新日期:2021 年 12 月 23 日
我正在使用 AWS Direct Connect 传输数据。在将数据传输到我的 Amazon Elastic Compute Cloud(Amazon EC2)实例时,遇到了数据包丢失的情况。如何排查数据包丢失问题?
简短描述
当传输的数据包未能到达目的地,从而导致网络性能问题时,就会发生数据包丢失。数据包丢失是由目的地信号强度低、系统利用率过高、网络拥塞和网络路由配置错误造成的。
解决方法
对您的网络设备和 Direct Connect 连接运行以下检查。
检查 AWS Personal Health Dashboard 中以了解计划维护或事件
检查 Direct Connect 端点、客户网关(CGW)和中间设备(第 1 层)的指标
- 接口翻动的 CGW 日志。
- 出现问题时 CGW 的 CPU 使用率。
- Direct Connect 连接终止时设备上的光信号读数。
- Direct Connect 连接因输入错误、递增帧错误、循环冗余(CRC)错误、残损、巨量和节流而终止的设备。
检查 Direct Connect 连接指标(第 1 层)
- ConnectionErrorCount:应用总和统计数据,并注意非零值表示 AWS 设备上的 MAC 级别错误。
- ConnectionLightLevelTX 和 ConnectionLightLevelRX:检查问题发生时 Direct Connect 连接上记录的光信号。可接受的范围在 -14.4 到 2.50 dBm 之间。
- ConnectionBpsEgress 和 ConnectionBpsIngress:检查因链路拥塞而丢失数据包时,Direct Connect 连接上的流量。
有关详细信息,请参阅 Direct Connect 连接指标。
检查非对称次优路由(第 3 层)
有关详细信息,请参阅如何解决在 Transit Gateway 中创建 VPN 作为 Direct Connect 的备份时出现的非对称路由问题?
本地主机与 AWS 主机之间的端到端双向跟踪路由(第 3 层)
1. 运行以下命令以安装 traceroute:
Linux:
sudo yum install traceroute
Ubuntu:
sudo apt-get install traceroute
2.然后,为 ICMP 跟踪路由运行类似以下内容的命令:
sudo traceroute -T -p <destination Port> <IP of destination host>
Windows 操作系统:
1. 下载 WinPcap 和 tracetcp。
2. 提取 Tracetcp 压缩文件。
3. 将 tracetcp.exe 复制到 C 盘。
4. 安装 WinPcap。
5. 打开命令提示符,使用 C:\Users\username>cd \ 命令从根 WinPcap 进入 C 驱动器。
6. 使用以下命令运行 tracetcp:tracetcp.exe hostname:port 或 tracetcp.exe ip:port。
本地主机与 AWS 主机之间的端到端双向 MTR 测试(第 3 层)
检查 MTR 结果以了解数据包丢失和网络延迟情况。跃点处的网络丢失百分比可能表示路由器存在问题。一些服务提供商限制 MTR 使用的 ICMP 流量。要确定数据包丢失是否是由于速率限制造成的,请查看后续跃点。如果后续跃点显示数据包丢失 0.0%,表明 ICMP 速率受到限制。
1. 运行以下命令以安装 MTR:
Amazon Linux/REHEL:
$ sudo yum install mtr -y
Ubuntu:
sudo apt install mtr -y
Windows 操作系统:
下载并安装 WinMTR。
注意:对于 Windows 操作系统,WinMTR 不支持基于 TCP 的 MTR。
2. 对于本地 --> AWS 方向,请在本地主机上运行 MTR(基于 ICMP 和 TCP):
$ mtr -n -c 100 <private IP of EC2> --report
$ mtr -n -T -P <EC2 instance open TCP port> -c 100 <private IP of EC2> --report
3. 对于 AWS --> 本地方向,请在 EC2 实例上运行 MTR(基于 ICMP 和 TCP):
$ mtr -n -c 100 <private IP of the local host> --report
$ mtr -n -T -P <local host open TCP port> -c 100 <private IP of the local host> --report
查看本地主机与 AWS 主机之间的路径 MTU(第 3 层)
1. 对于本地 --> AWS 方向,请从本地主机在端口 80 上运行跟踪路径:
$ tracepath -n -p 80 <EC2 private instance IP>
$ tracepath -n -p 80 <private IP of local host>