如何对 Site-to-Site VPN 传输速度较慢的问题进行故障排除?

3 分钟阅读
0

我的 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)。要确认隧道的吞吐量未超出配额,请完成以下步骤:

  1. 打开 Amazon CloudWatch 控制台
  2. 选择 Site-to-Site VPN metrics(Site-to-Site VPN 指标)。
  3. 选择 TunnelDataInTunnelDataOut
  4. Statistic(统计数据)中选择 Sum(总和),在 Period(周期)中选择 5 minutes(5 分钟)。
  5. 要以 Gb/s 为单位计算隧道的吞吐量,请使用以下等式:
    (((m1+m2)/300)*8)/1,000,000,000
    **注意:**在此等式中,请将 m1 替换为 TunnelDataIn 的最大值,将 m2 替换为 TunnelDataOut 的最大值。
  6. 检查吞吐量是否大于 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 流

完成以下步骤:

  1. 测试应用程序使用的 TCP 流的数量。
    在服务器上运行以下命令:
    iperf3 -s
    在客户端上运行以下命令:
    sudo iperf3 -c example_IP -P 10 -t 30
    **注意:**请将 example_IP 替换为服务器的私有 IP 地址。前面的客户端命令可测试 10 个并行 TCP 流。
  2. 要验证更多的并行 TCP 流是否会加快数据传输,请使用更多 TCP 流重复测试。示例:
    sudo iperf3 -c example_IP -P 30 -t 30
    **注意:**前面的命令可测试 30 个 TCP 流。
  3. 如果在向测试中添加流时吞吐量增加,请联系软件供应商支持人员,以向应用程序添加 TCP 流。

相关信息

Amazon EC2 实例上的增强联网功能

AWS VPN 常见问题

AWS 官方
AWS 官方已更新 2 个月前