如何排查我的 Direct Connect 连接的数据包丢失问题?

3 分钟阅读
0

我正在使用 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 操作系统:

  1. 下载 WinPcap 和 tracetcp。
  2. 提取 Tracetcp 压缩文件。
  3. tracetcp.exe 复制到 C 盘。
  4. 安装 WinPcap
  5. 打开命令提示符,使用 C:\Users\username>cd \ 命令将 WinPcap root 到 C 盘。
  6. 使用以下命令运行 tracetcp u:tracetcp.exe hostname:porttracetcp.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

如果您使用托管连接,请咨询合作伙伴或服务提供商,以了解他们的维护工作是否导致了数据包丢失。

相关信息

配置网络接口的最佳实践

如何通过互联网网关或 NAT 网关来监控从 AWS 到本地网络的数据包丢失以及延迟?

对 AWS Direct Connect 进行故障排除

如何解决 Direct Connect 网络性能问题?下载 WinPcap 和 tracetcp。

AWS 官方
AWS 官方已更新 1 年前