跳至内容

如何排查 Direct Connect 网络性能问题?

5 分钟阅读
0

我的 AWS Direct Connect 连接存在性能问题,包括吞吐量低、流量延迟和数据包丢失。

解决方法

**注意:**最佳做法是使用 Amazon Virtual Private Cloud (Amazon VPC) 设置本地专用测试机。使用大小为 C5 或更大的 Amazon Elastic Compute Cloud (Amazon EC2) 实例类型。

检查网络或应用程序问题

使用 iPerf3 工具测量网络带宽,并将结果与其他应用程序或工具进行比较。有关更多信息,请参阅 iPerf 网站上的 What is iPerf / iPerf3?(什么是 iPerf / iPerf3?)。

完成以下步骤:

  1. 要安装 iPerf3,请根据您使用的操作系统 (OS) 运行以下命令之一。

    Linux 和 Red Hat Enterprise Linux (RHEL):

    sudo yum install iperf3 -y

    Ubuntu:

    sudo apt install iperf3 -y
  2. 要双向测量吞吐量,请为服务器和客户端运行以下 iPerf3 命令:

    Amazon EC2 实例(服务器):

    iperf3 -s -V

    本地主机(客户端):

    iperf3 -c <private IP of EC2> -P 15 -t 15
    iperf3 -c <private IP of EC2> -P 15 -t 15 -R
    
    iperf3 -c <private IP of EC2> -w 256K
    iperf3 -c <private IP of EC2> -w 256K -R
    
    iperf3 -c <private IP of EC2> -u -b 1G -t 15
    iperf3 -c <private IP of EC2> -u -b 1G -t 15 -R
    

    注意:****-P 用于设置并行线程以实现最大吞吐量。-R 用于反转测试方向,-u 则使用用户数据报协议 (UDP) 而非 TCP 来测量数据包丢失情况。

在以下 TCP 测试结果示例中,比特率表示测得的吞吐量或传输速度。传输表示客户端和服务器之间交换的数据总量。重试表示重新传输的数据包的数量。重新传输发生在发送方:

[ ID] Interval Transfer Bitrate Retry [SUM] 0.00-15.00 sec 7.54 GBytes 4.32 Gbits/sec 18112 sender [SUM] 0.00-15.00 sec 7.52 GBytes 4.31 Gbits/sec receiver

在以下 UDP 测试结果示例中,发送方丢失率为 0%。这是因为发送方 (ID) 和接收方 (5) 对发送的 UDP 数据报已达最大数量。丢失/总数据报表示接收方丢失的数据包数量和丢失率。在此示例中,接收方丢失了 79% 的网络流量:

[ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams [ 5] 0.00-15.00 sec 8.22 GBytes 4.71 Gbits/sec 0.000 ms 0/986756 (0%) sender [ 5] 0.00-15.00 sec 1.73 GBytes 989 Mbits/sec 0.106 ms 779454/986689 (79%) receiver

**注意:**如果您的 Direct Connect 连接通过公有虚拟接口使用了 AWS Site-to-Site VPN,请在不使用 VPN 的情况下运行性能测试。

查看指标和接口计数器

使用 Amazon CloudWatch Logs 查看有助于进行故障排除的指标。例如,查看 ConnectionErrorCount 并查找非零值,这些值表示 AWS 设备上存在媒体访问控制 (MAC) 错误。您可以对 ConnectionErrorCount 指标使用总和统计数据

查看 ConnectionLightLevelTxConnectionLightLevelRx,检查光信号读数是否在 -14.4 和 2.50 dBm 的范围内。

查看 ConnectionBpsEgressConnectionBpsIngressVirtualInterfaceBpsEgressVirtualInterfaceBpsIngress,确保比特率未达到最大带宽。

有关更多信息,请参阅 Direct Connect 指标和维度

如果您使用的是与其他用户共享总带宽的托管虚拟接口,请向 Direct Connect 所有者查询连接利用率。有关更多信息,请参阅混合网络连接

检查 Direct Connect 位置的路由器和防火墙是否存在以下问题:

  • 查找 CPU、内存、端口利用率、丢包数和丢弃数方面的异常情况。
  • 运行 show interfaces statistics 命令来识别接口输入和输出错误,例如循环冗余校验 (CRC)、帧、冲突和载波错误。
  • 若接口错误增多,请清洁或更换光纤跳线和小型可插拔 (SFP) 模块。

此外,请检查 Direct Connect 是否计划进行维护

双向运行 MTR 以检查网络路径

运行适用于 Linux 的 My Traceroute (MTR) 命令来分析网络性能。对于 Windows,最佳做法是打开 WSL 2,这样就可以在 Linux 子系统上安装 MTR。有关更多信息,请参阅 Microsoft 网站上的 What's new in WSL 2(WSL 2 新增功能)。您可以从 SourceForge 网站下载 WinMTR

要双向运行 MTR,请完成以下步骤:

  1. 要安装 MTR,请根据您的操作系统运行以下命令之一:

    Amazon Linux/RHEL:

    sudo yum install mtr -y

    Ubuntu:

    sudo apt install mtr -y
  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

以下示例命令和输出显示了基于 ICMP 的 MTR 结果:

mtr -n -c 100 192.168.52.10 --report
Start: Sat Oct 30 20:54:39 2021
HOST:                             Loss%   Snt   Last   Avg  Best  Wrst StDev
  1.|-- 10.0.101.222               0.0%   100    0.7   0.7   0.6   0.9   0.0
  2.|-- ???                       100.0   100    0.0   0.0   0.0   0.0   0.0
  3.|-- 10.110.120.2               0.0%   100  266.5 267.4 266.4 321.0   4.8
  4.|-- 10.110.120.1              54.5%   100  357.6 383.0 353.4 423.7  19.6
  5.|-- 192.168.52.10             47.5%   100  359.4 381.3 352.4 427.9  20.6

以下示例命令和输出显示了基于 TCP 的 MTR 结果:

mtr -n -T -P 80 -c 100 192.168.52.10 --report
Start: Sat Oct 30 21:03:48 2021
HOST:                             Loss%   Snt   Last   Avg  Best  Wrst StDev
  1.|-- 10.0.101.222               0.0%   100    0.9   0.7   0.7   1.1   0.0
  2.|-- ???                       100.0   100    0.0   0.0   0.0   0.0   0.0
  3.|-- 10.110.120.2               0.0%   100  264.1 265.8 263.9 295.3   3.4
  4.|-- 10.110.120.1               8.0%   100  374.3 905.3 354.4 7428. 1210.6
  5.|-- 192.168.52.10             12.0%   100  400.9 1139. 400.4 7624. 1384.3

在上述结果中,每一跳中的每一行代表一个网络设备,数据包在该设备中从源传递到目的地。有关如何读取 MTR 测试结果的更多信息,请参阅 ExaVault 网站上的 Reading MTR output network diagnostic tool(读取 MTR 输出网络诊断工具)。

以下示例命令和输出显示了基于 ICMP 的 MTR 结果:

mtr -n -c 100 192.168.52.10 --report
Start: Sat Oct 30 20:54:39 2021
HOST:                             Loss%   Snt   Last   Avg  Best  Wrst StDev
  1.|-- 10.0.101.222               0.0%   100    0.7   0.7   0.6   0.9   0.0
  2.|-- ???                       100.0   100    0.0   0.0   0.0   0.0   0.0
  3.|-- 10.110.120.2               0.0%   100  266.5 267.4 266.4 321.0   4.8
  4.|-- 10.110.120.1              54.5%   100  357.6 383.0 353.4 423.7  19.6
  5.|-- 192.168.52.10             47.5%   100  359.4 381.3 352.4 427.9  20.6

以下示例命令和输出显示了基于 TCP 的 MTR 结果:

mtr -n -T -P 80 -c 100 192.168.52.10 --report
Start: Sat Oct 30 21:03:48 2021
HOST:                             Loss%   Snt   Last   Avg  Best  Wrst StDev
  1.|-- 10.0.101.222               0.0%   100    0.9   0.7   0.7   1.1   0.0
  2.|-- ???                       100.0   100    0.0   0.0   0.0   0.0   0.0
  3.|-- 10.110.120.2               0.0%   100  264.1 265.8 263.9 295.3   3.4
  4.|-- 10.110.120.1               8.0%   100  374.3 905.3 354.4 7428. 1210.6
  5.|-- 192.168.52.10             12.0%   100  400.9 1139. 400.4 7624. 1384.3

上述示例显示了使用边界网关协议 (BGP) 对等体 10.110.120.1 和 10.110.120.2 的 Direct Connect 连接。在第四跳和第五跳目标节点处存在丢包率,这表明 Direct Connect 连接或远程路由器 10.110.120.1 存在问题。由于 Direct Connect 连接对 TCP 的优先级高于 ICMP,因此 TCP MTR 结果显示的丢包率较低。

以下示例命令和输出显示本地防火墙或 NAT 设备的数据包丢失率为 5%。数据包丢失会影响包括目的地在内的所有后续跃点:

mtr -n -c 100 192.168.52.10 --report
Start: Sat Oct 30 21:11:22 2021
HOST:                              Loss%   Snt   Last   Avg  Best  Wrst StDev
  1.|-- 10.0.101.222               5.0%   100    0.8   0.7   0.7   1.1   0.0
  2.|-- ???                       100.0   100    0.0   0.0   0.0   0.0   0.0
  3.|-- 10.110.120.2               6.0%   100  265.7 267.1 265.6 307.8   5.1
  4.|-- 10.110.120.1               6.0%   100  265.1 265.2 265.0 265.4   0.0
  5.|-- 192.168.52.10              6.0%   100  266.7 266.6 266.5 267.2   0.0

捕获数据包并分析结果

在本地主机和 EC2 实例上捕获数据包。使用 tcpdump 或 Wireshark 实用程序获取网络流量以供分析。有关 tcpdump 的更多信息,请参阅 tcpdump 网站上的 tcpdump。要下载 Wireshark,请参阅 Wireshark 网站上的 Wireshark 下载页面。

例如,运行以下 tcpdump 命令来获取时间戳和主机 IP 地址:

tcpdump -i YOUR_NETWORK_INTERFACE  -s0 -w $(date +"%Y%m%d_%H%M%S").$(YOUR_HOSTNAME -s).pcap port YOUR_PORT

**注意:**将 YOUR_NETWORK_INTERFACE 替换为您的网络接口,将 YOUR_HOSTNAME 替换为您的主机名,将 YOUR_PORT 替换为您的端口。

要计算网络限制、带宽延迟乘积和 TCP 缓冲区大小,请使用 Switch 网站上的 TCP throughput calculator(TCP 吞吐量计算器)。有关详细信息,请参阅对 Direct Connect 进行故障排除

相关信息

托管虚拟接口 (VIF) 和托管连接有什么区别?

提高 AWS 和混合网络的性能

AWS 官方已更新 6 个月前