如何对 Site-to-Site VPN 传输速度较慢的问题进行故障排除?
我的 AWS Site-to-Site VPN 的数据传输速度很慢。我想提高传输速度。
简短描述
以下常见网络问题会导致 Site-to-Site VPN 连接的传输速度较慢:
- 路由性能较低
- 路径上的最大传输单位 (MTU) 较小
- 因隧道带宽较低导致的 TCP/UDP 吞吐量问题
- 网关设备限制数据传输
- VPN 隧道过饱和
以下常见的系统或应用程序问题也会导致传输速度较慢:
- 应用程序端点资源配额
- 应用程序端点使用单个 TCP 流进行数据传输
解决方法
要对 Site-to-Site VPN 传输速度较慢的问题进行故障排除,请执行以下操作。
检查路由性能是否较低
首先,请安装 Linux MTR 工具。大多数 Linux 发行版都预装了 MTR。您也可以从发行版的软件包管理器中下载此工具:
-
要安装适用于 Amazon Linux 的 MTR,请运行以下命令:
sudo yum install mtr
-
要安装适用于 Ubuntu 的 MTR,请运行以下命令:
sudo apt-get install mtr-tiny
然后,使用本地端点上的 MTR 运行以下命令:
mtr -T -nrz example_IP
**注意:**请将 example_IP 替换为您的 AWS 隧道的公共 IP 地址。
MTR 输出包括路径上的互联网服务提供商 (ISP) 的自治系统编号 (ASN)。查看输出以验证流量是否直接从客户网关设备流到 AWS。
如果需要,请使用 MTR 输出来识别互联网上的延迟。
检查路径上的 MTU
识别路径中最小的 MTU:
-
对于 Linux,运行以下命令:
ping example_IP -M do -s 1460
-
对于 Windows,运行以下命令:
ping example_IP -l 1460 -f
**注意:**请将 example_IP 替换为目标的 IP 地址,将 1460 替换为最大分段大小 (MSS)(以字节为单位)。
如果您收到“packet needs to be fragmented but DF set”(数据包需要分段但已设置 DF)消息,请将 MSS 大小减小 1,然后再次运行该命令。重复测试,直到输出显示 ping 操作成功。
TCP/UDP 吞吐量问题故障排除
**先决条件:**您必须安装 iPerf3 工具。要安装 iPerf3,请参阅 iPerf 网站上的下载 iPerf 二进制文件。
测试服务器和客户端的 UDP 带宽能力:
-
在服务器上运行以下命令:
sudo iperf -s -u
-
在客户端上运行以下命令:
sudo iperf3 -i 1 -u -p 33344 -b 1.2G -c example_IP -V
**注意:**请将 example_IP 替换为服务器的私有 IP 地址。
确保您的带宽信用可用于与 VPN 关联的 Amazon Elastic Compute Cloud (Amazon EC2) 实例。如果带宽信用不可用,请创建更大的实例,然后再次执行测试。
测试服务器和客户端的 TCP 吞吐量。
-
在服务器上运行以下命令:
iperf3 -s
-
在客户端上运行以下命令:
sudo iperf3 -c example_IP -P 10 -w 128K -V sudo iperf3 -c example_IP -P 10 -w 512K -V sudo iperf3 -c example_IP -P 10 -w 1024K -V
**注意:**请将 example_IP 替换为服务器的私有 IP 地址。
要在增加实例大小时测试源和目标内存缓冲区,请测试不同大小的 TCP 接收窗口。
确保客户网关设备允许数据传输
在客户网关设备上执行数据包捕获 (PCAP)。如果 PCAP 显示客户网关设备上存在高延迟或丢包情况,请检查设备配置设置。使用此信息来验证客户网关是否正在限制数据传输。要对问题进行故障排除,请查看设备的供应商文档,或联系设备的供应商支持人员。
确认 VPN 隧道未过饱和
每个 Site-to-Site VPN 隧道的最大带宽为每秒 1.25 千兆位 (Gb/s)。要确认隧道的吞吐量未超出配额,请完成以下步骤:
- 打开 Amazon CloudWatch 控制台。
- 选择 Site-to-Site VPN metrics(Site-to-Site VPN 指标)。
- 选择 TunnelDataIn 和 TunnelDataOut。
- 在 Statistic(统计数据)中选择 Sum(总和),在 Period(周期)中选择 5 minutes(5 分钟)。
- 要以 Gb/s 为单位计算隧道的吞吐量,请使用以下等式:
(((m1+m2)/300)*8)/1,000,000,000
**注意:**在此等式中,请将 m1 替换为 TunnelDataIn 的最大值,将 m2 替换为 TunnelDataOut 的最大值。 - 检查吞吐量是否大于 1.2 Gb/s。如果吞吐量大于 1.2 Gb/s,请启动两个使用 equal-cost multi-path routing (ECMP) 的边界网关协议 (BGP) 隧道和一个 AWS Transit Gateway 传输网关。
检查应用程序端点是否超出其资源配额
在客户网关设备上,当数据流经 VPN 隧道时,使用 Wireshark(适用于 Windows)或 tcdump(适用于 Linux)来进行 PCAP。
**重要事项:**请在启动数据传输之前启动 PCAP。最佳做法是在源和目标终端主机以及本地客户网关上同时执行 PCAP。
查看 PCAP 输出中是否存在延迟和数据包重新传输情况。如果您在终端主机上发现意外延迟或数据包重新传输情况,请联系客户网关设备的供应商支持人员。
测试其他 TCP 流
完成以下步骤:
- 测试应用程序使用的 TCP 流的数量。
在服务器上运行以下命令:
在客户端上运行以下命令:iperf3 -s
**注意:**请将 example_IP 替换为服务器的私有 IP 地址。前面的客户端命令可测试 10 个并行 TCP 流。sudo iperf3 -c example_IP -P 10 -t 30
- 要验证更多的并行 TCP 流是否会加快数据传输,请使用更多 TCP 流重复测试。示例:
**注意:**前面的命令可测试 30 个 TCP 流。sudo iperf3 -c example_IP -P 30 -t 30
- 如果在向测试中添加流时吞吐量增加,请联系软件供应商支持人员,以向应用程序添加 TCP 流。
相关信息
相关内容
- AWS 官方已更新 4 个月前
- AWS 官方已更新 2 年前
- AWS 官方已更新 1 个月前
- AWS 官方已更新 2 年前