我需要测量同一 VPC 中的 Amazon Elastic Compute Cloud (Amazon EC2) Linux 实例之间的网络带宽。该怎样做?

此示例仅适用于同一 VPC 中的 EC2 实例。下面是一些可能影响 Amazon EC2 网络性能的因素:

  • EC2 实例的物理邻近度。 同一可用区中的实例在地理上是彼此最接近的,而同一区域中不同可用区中的实例、同一洲上不同区域中的实例以及不同洲上不同区域中的实例逐渐彼此远离。
  • EC2 实例最大传输单位 (MTU)。 如果 EC2 实例是巨型帧 (9001 MTU) 中列出的实例大小之一,则其默认接口配置会使用巨型帧。
  • EC2 实例的大小。 特定实例类型的较大实例大小通常能提供比相同类型较小实例大小更高的网络性能。
  • EC2 增强了对 Linux 的联网支持,但 T2 和 M3 实例类型除外。
  • 使用置放群组的 EC2 高性能计算 (HPC) 支持。 HPC 提供完全等分的带宽和低延迟,支持高达 25 GB 网速,具体取决于实例类型。要查看每个实例类型的网络性能,请参阅实例类型表。有关更多信息,请参阅将实例启动到置放群组中

由于这些因素,不同云环境的网络性能可能会有很大差异。最佳做法是定期评估并基线化环境的网络性能以提高应用程序性能。测试网络性能可以提供宝贵意见,从而确定最适合需求的 EC2 实例类型、大小和配置。

在开始基准测试之前,请启动并配置您的 Linux EC2 实例:

  1. 启动两个 Linux 实例,以便用来运行网络性能测试。
  2. 确保这些实例支持Linux 的增强联网,并且位于相同 VPC 中。
  3. (可选) 如果在不同的置放群组中的实例之间执行网络测试,或者置放群组不支持巨型帧,请按照 EC2 实例的网络最大传输单位中所述步骤操作,在您的实例上检查并设置 MTU。
  4. 连接到实例以验证您可以访问这些实例。

在一些发行版本 (如 Amazon Linux) 中,iperf3 是 EPEL 存储库的一部分。要启用 EPEL 存储库,请参阅如何为运行 CentOS、RHEL 或 Amazon Linux 的 Amazon EC2 实例启用 EPEL 存储库?

连接到您的 Linux 实例并运行以下命令以安装 iperf3。​

要在 RHEL 6 Linux 主机上安装 iperf3,请运行类似如下的命令:

# yum -y install  https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm  && yum -y install iperf3

要在 RHEL 7 Linux 主机上安装 iperf3,请运行类似如下的命令:

# yum -y install  https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm  && yum -y install iperf3

要在 Debian/Ubuntu 主机上安装 iperf3,请运行类似如下的命令:

# apt-get install -y iperf3

要在 CentOS6/7 主机上安装 iperf3,请运行类似如下的命令:

# yum -y install epel-release && yum -y install iperf3

在测试 TCP 性能时,默认情况下 iperf3 通过端口 5201 进行通信。但是,使用 -p 开关可配置所用的端口。请确保安全组配置为允许通过 iperf3 将使用的端口进行通信。

将一个实例配置为服务器在默认端口上侦听,或使用 -p 开关指定备用侦听器端口:

$ sudo iperf3 -s [-p <port number>]

使用所需参数,将第二个实例配置为客户端,对服务器运行测试。例如,下面的命令将针对具有 10 个并行连接的指定服务器实例启动 TCP 测试:

$ sudo iperf3 -c 192.0.2.0 -P 10 -i 1 -t 60 -V [-p <port number>]

使用这些指定的 iperf3 参数,输出将显示每个线程的间隔 (60 秒)、每个线程传输的数据以及每个线程使用的带宽。此处显示的 iperf3 输出是通过测试两个 c4.8xlarge EC2 Linux 实例协同定位转交在同一置放群组中生成的,从而提供 HPC 支持。我们将 -t 参数修改为 -t 2 而不是 -t 60,将 -p 10 修改为 -p 2,以便于在此显示。在所有连接之间传输的总带宽是 9.6 Mbits/秒:

Output:
$ iperf3 -c 192.0.2.0 -t 2 -i 1 -P 2 -R
Connecting to host 192.0.2.0, port 5201
Reverse mode, remote host 192.0.2.0 is sending
[  4] local 198.51.100.0 port 47122 connected to 192.0.2.0 port 5201
[  6] local 198.51.100.0 port 47124 connected to 192.0.2.0 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec   572 MBytes  4.80 Gbits/sec
[  6]   0.00-1.00   sec   572 MBytes  4.80 Gbits/sec
[SUM]   0.00-1.00   sec  1.12 GBytes  9.60 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec   573 MBytes  4.80 Gbits/sec
[  6]   1.00-2.00   sec   573 MBytes  4.80 Gbits/sec
[SUM]   1.00-2.00   sec  1.12 GBytes  9.61 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-2.00   sec  1.12 GBytes  4.82 Gbits/sec    0             sender
[  4]   0.00-2.00   sec  1.12 GBytes  4.81 Gbits/sec                  receiver
[  6]   0.00-2.00   sec  1.12 GBytes  4.81 Gbits/sec    0             sender
[  6]   0.00-2.00   sec  1.12 GBytes  4.81 Gbits/sec                  receiver
[SUM]   0.00-2.00   sec  2.24 GBytes  9.63 Gbits/sec    0             sender
[SUM]   0.00-2.00   sec  2.24 GBytes  9.63 Gbits/sec                  receiver

iperf Done.

在测试 UDP 性能时,默认情况下 iperf3 通过端口 5201 进行通信。但是,使用 -p 开关可配置所用的端口。请确保安全组配置为允许通过 iperf3 将使用的端口进行通信。

注意: 除非指定了不同的带宽,否则 UDP 的默认值为每秒 1 Mbit。

首先,将一个实例配置为服务器在默认端口上侦听,或使用 -p 开关指定备用侦听器端口:

$ sudo iperf3 -s [-p <port number>]

接着,使用所需参数,将第二个实例配置为客户端,对服务器运行测试。例如,下面的命令将在您使用的端口上针对具有带宽目标 100 Mbits/s 的指定服务器实例启动 UDP 测试:

$ sudo iperf3 -c 10.0.2.176 [-p <port number>] -u -b 100m

输出显示间隔 (时间)、传输的数据量、实现的带宽、抖动 (数据报定期到达的时间偏差) 以及 UDP 数据报的丢失/总计:

[ ID] Interval        Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  3]  0.0-10.0 sec   120 MBytes   101 Mbits/sec  ; 0.005 ms  0/85470 (0%)
[  3]  0.0-10.0 sec   1 datagrams received out-of-order
[  3] Sent 15113 datagrams

此页内容对您是否有帮助? |

返回 AWS Support 知识中心

需要帮助? 访问 AWS 支持中心

发布时间: 2015-08-06

更新时间: 2018-08-20