如何排查我的 Direct Connect 连接的数据包丢失问题?
我正在使用 AWS Direct Connect 来传输数据。我在向 Amazon Elastic Compute Cloud(Amazon EC2)实例传输数据时遇到了数据包丢失的情况。我需要找出数据包丢失情况。
解决方法
当传输的数据包未能到达目的地,就会发生数据包丢失,这会导致网络性能问题。数据包丢失是由目的地信号强度偏低、系统利用率过高、网络拥塞或网络路由配置错误造成的。
对您的网络设备和 Direct Connect 连接进行以下检查。
查看 AWS Personal Health Dashboard,以了解定期维护或活动
AWS Personal Health Dashboard 会显示有关正在维护的资源的相关信息,还提供活动通知。有关详细信息,请参阅如何获得 Direct Connect 定期维护或事件通知?
检查 Direct Connect 端点、客户网关和中间设备的指标(第 1 层)
对于客户网关和中间设备,问题可能是本地网络或通往 AWS 的传输路径的局部问题。在本地节点和中间设备上检查以下各项:
- 关于接口抖动的客户网关日志
- 问题发生时客户网关的 CPU 使用率
- Direct Connect 连接终止的设备上的光信号读数
- Direct Connect 连接因输入错误、递增帧错误、循环冗余(CRC)错误、残损、巨量或节流而终止的设备
检查 Direct Connect 指标(第 1 层)
检查以下 Direct Connect 指标:
- ConnectionErrorCount: 应用此指标的统计数据总和。请注意,非零值表示 AWS 设备上的 MAC 级别错误。
- ConnectionLightLevelTX 和 ConnectionLightLevelRX: 检查出现问题时 Direct Connect 连接上记录的光信号。可接受的范围在 -14.4 到 2.50 dBm 之间。
- ConnectionBpsEgress 和 ConnectionBpsIngress: 检查因链路拥塞而导致数据包丢失时 Direct Connect 连接上的流量。如果您使用 100% 的接口容量,则可能会遇到数据包因流量过大而丢失。
有关详细信息,请参阅 Direct Connect 连接指标。
检查非对称次优路由(第 3 层)
当网络流量通过一个连接进入但通过另一个连接退出时,就会发生非对称路由。如果本地防火墙执行单播反向路径转发,则此路由可能会导致数据包丢失,从而导致网络流量下降。
- 如果您有备份的冗余 Direct Connect 连接或备份的 AWS Site-to-Site VPN 连接,请检查是否可能发生任何非对称路由。
- 假设您有一个备用 Site-to-Site VPN 连接,并在 Direct Connect 和 VPN 连接上播发了相似前缀。在这种情况下,从 AWS 到本地的流量通过 Direct Connect 路由。为避免非对称路由,请务必仅通过 Direct Connect 将流量从本地发送到 AWS。
- 如果您有备用 Direct Connect 连接,则可能会发生非对称路由,具体取决于您如何在两个 Direct Connect 连接上播发前缀。
- 本地网络的次优路由可能导致数据包丢失。
有关详细信息,请参阅如何解决在传输网关上创建 VPN 作为 Direct Connect 备份时出现的非对称路由问题?
本地主机与 AWS 主机之间的端到端双向跟踪路由(第 3 层)
在主机之间运行跟踪路由决定了双向的网络路径。跟踪结果还确定路由是否非对称、负载均衡等。
1. 运行以下命令来安装 traceroute:
Linux:
sudo yum install traceroute
Ubuntu:
sudo apt-get install traceroute
2. 为 TCP traceroute 运行类似于以下内容的命令:
sudo traceroute -T -p <destination Port> <IP of destination host>
Windows 操作系统:
- 下载 WinPcap 和 tracetcp。
- 提取 Tracetcp 压缩文件。
- 将 tracetcp.exe 复制到 C 盘。
- 安装 WinPcap。
- 打开命令提示符,使用 C:\Users\username>cd \ 命令将 WinPcap root 到 C 盘。
- 使用以下命令运行 tracetcp u:tracetcp.exe hostname:port 或 tracetcp.exe ip:port。
本地主机与 AWS 主机间端到端双向 MTR 测试(第 3 层)
MTR 测试与 traceroute 类似,可发现主机间网络连接路径上的每台路由器。MTR 测试还可提供有关路径中每个节点的信息,例如数据包丢失。
检查 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 这一方向,请在本地主机(基于 ICMP 和 TCP)上运行 MTR:
$ 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 实例(基于 ICMP 和 TCP)上运行 MTR:
$ 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 层)
最大传输单位(MTU)是指允许通过网络连接而传递的数据包的最大尺寸。任何大于 MTU 的数据包都将在接口上丢弃。因此,如果数据包太大,可能会发生数据包丢失。
路径 MTU 发现(PMTUD)可确定 MTU 路径。有关详细信息,请参阅路径 MTU 发现。
您可以使用 tracepath 来检查两台主机之间的路径 MTU。
1. 对于本地到 AWS 这一方向,请从本地主机在端口 80 上运行 tracepath:
$ tracepath -n -p 80 <EC2 private instance IP>
2. 对于 AWS 到本地这一方向,请从 EC2 实例在端口 80 上运行 tracepath:
$ tracepath -n -p 80 <private IP of local host>
检查 BGP 是否可能存在路由问题
Direct Connect 连接使用边界网关协议(BGP)这一动态路由协议在 AWS 和本地之间进行路由和通信。
检查 BGP 中是否存在任何可能导致间歇性数据包丢失的常规波动。
在客户网关设备上,检查从 AWS 到客户网络的已知路由的路由寿命。在客户网关设备中刷新路由时,BGP 路由表中的路由寿命会更新。您可以查看此信息,以检查刷新路由时是否短暂发生数据包丢失。
要检查 Cisco 路由器上的路由寿命,请运行以下命令:
Router#sh ip bgp 1.1.1.1 BGP routing table entry for 1.1.1.1/32, version 3 Paths: (1 available, best #1, table default) Not advertised to any peer Refresh Epoch 1 64512, (received & used) 169.254.92.181 from 169.254.92.181 (169.254.92.181) Origin IGP, metric 100, localpref 100, valid, external, best rx pathid: 0, tx pathid: 0x0 Updated on Mar 31 2023 08:08:00 UTC >> Last time that the route was updated
-或者-
Router#sh ip route | in 1.1.1.1 B 1.1.1.1 [20/100] via 169.254.92.181, 01:37:46 >> You can see the route age or when the route was last refreshed
如果您使用托管连接,请咨询合作伙伴或服务提供商,以了解他们的维护工作是否导致了数据包丢失。
相关信息
相关内容
- AWS 官方已更新 3 年前
- AWS 官方已更新 1 年前
- AWS 官方已更新 2 年前
- AWS 官方已更新 3 年前