如何排查 Direct Connect 网络性能问题?
我的 AWS Direct Connect 连接存在性能问题,包括吞吐量低、流量延迟和数据包丢失。
解决方法
**注意:**最佳做法是使用 Amazon Virtual Private Cloud (Amazon VPC) 设置本地专用测试机。使用大小为 C5 或更大的 Amazon Elastic Compute Cloud (Amazon EC2) 实例类型。
检查网络或应用程序问题
使用 iPerf3 工具测量网络带宽,并将结果与其他应用程序或工具进行比较。有关更多信息,请参阅 iPerf 网站上的 What is iPerf / iPerf3?(什么是 iPerf / iPerf3?)。
完成以下步骤:
-
要安装 iPerf3,请根据您使用的操作系统 (OS) 运行以下命令之一。
Linux 和 Red Hat Enterprise Linux (RHEL):
sudo yum install iperf3 -yUbuntu:
sudo apt install iperf3 -y -
要双向测量吞吐量,请为服务器和客户端运行以下 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 指标使用总和统计数据。
查看 ConnectionLightLevelTx 和 ConnectionLightLevelRx,检查光信号读数是否在 -14.4 和 2.50 dBm 的范围内。
查看 ConnectionBpsEgress、ConnectionBpsIngress、VirtualInterfaceBpsEgress 和 VirtualInterfaceBpsIngress,确保比特率未达到最大带宽。
有关更多信息,请参阅 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,请完成以下步骤:
-
要安装 MTR,请根据您的操作系统运行以下命令之一:
Amazon Linux/RHEL:
sudo yum install mtr -yUbuntu:
sudo apt install mtr -y -
对于从本地到 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 -
对于 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 进行故障排除。
相关信息
- 语言
- 中文 (简体)
