注意:
- 本教程需要访问 Oracle Cloud。要注册免费账户,请参阅开始使用 Oracle Cloud Infrastructure 免费套餐。
- 它对 Oracle Cloud Infrastructure 身份证明、租户和区间使用示例值。完成实验室后,请使用特定于云环境的那些值替换这些值。
使用 iPerf 测试 OCI Hub 和 Spoke VCN 路由体系结构内的吞吐量
简介
在当今快速发展的云环境中,确保最佳网络性能对于无缝运营至关重要。Oracle Cloud Infrastructure (OCI) 提供强大的网络功能,包括 Hub 和 Spoke Virtual Cloud Network (VCN) 路由架构,可促进高效的通信和资源管理。维护此架构的一个重要方面是定期测试网络吞吐量,以识别潜在的瓶颈并优化性能。
在本教程中,我们将使用功能强大的网络测试工具 iPerf 来度量和分析 OCI Hub 和 Spoke VCN 路由体系结构中的吞吐量。在本教程结束时,您将掌握有效评估和增强 OCI 网络性能的知识,确保您的应用和服务顺利运行。
注:使用 iPerf 获取的测试结果高度依赖于各种因素,包括特定于您的环境的网络条件、硬件配置和软件设置。因此,这些结果可能与其他环境中的结果显著不同。不要使用这些结果对您的网络或设备的预期性能做出任何明确的结论。这些措施应被视为指示性措施,而不是绝对的业绩衡量标准。
iPerf 版本
iPerf 、iPerf2 和 iPerf3 是用于度量两个端点之间的网络带宽、性能和吞吐量的工具。但是,它们在功能、性能和开发状态方面存在一些关键差异。
概述:
-
iPerf(原件)
- 发行:在 2003 年左右首次发行。
- 开发:原始 iPerf 在很大程度上已被其后续版本(iPerf2 和 iPerf3)取代。
- 功能:使用 TCP 和 UDP 测试网络带宽的基本功能。
- 限制:随着时间的推移,由于对现代网络功能缺乏支持,该功能已经过时。
-
iPerf2
- 发行版:从原始 iPerf 分叉并独立维护。
- 发展:积极维护,特别是能源科学网络 (ESnet)。
- 功能:
- 支持 TCP 和 UDP 测试。
- 多线程:iPerf2 支持多线程测试,这在测试高吞吐量环境时非常有用。
- UDP 多播和双向测试。
- 协议灵活性:更好地处理 IPv6、多播和其他高级网络协议。
- 性能:由于多线程支持,要获得更高的吞吐量,性能优于原始 iPerf。
- 用例:最适合需要传统功能(例如 IPv6 和多播)的情况,或者在测试中需要多线程的情况。
-
iPerf3
- 发行版:由维护 iPerf2 的同一团队 (ESnet) 重新编写和发布。重写侧重于清理代码库和使工具现代化。
- 开发:通过频繁的更新积极维护。
- 功能:
- 支持 TCP 和 UDP 测试。
- 单线程:iPerf3 不支持多线程,这可能是某些环境中高吞吐量的限制。
- 支持在两个方向上进行测试的 reverse mode ,支持 TCP 测试的 bidirectional tests 和 multiple streams 。
- JSON 输出,可更轻松地与其他工具集成。
- 改进了错误报告和网络统计信息。
- 针对现代网络接口以及 QoS 和拥塞控制等功能进行了优化。
- 性能:iPerf3 针对现代网络进行了优化,但缺少多线程功能,这有时会限制其在高带宽或多核系统上的性能。
- 用例:最适合大多数现代网络环境,需要进行更简单的性能测试,而无需多线程。
主要差异:
功能 | iPerf | iPerf2 | iPerf3 |
---|---|---|---|
开发 | 停售 | 主动维护 | 主动维护 |
TCP 和 UDP 测试 | 是 | 是 | 是 |
多线程支持 | 无 | 是 | 无 |
UDP 多播 | 无 | 是 | 无 |
IPv6 支持 | 无 | 是 | 是 |
JSON 输出 | 无 | 无 | 是 |
逆向模式 | 无 | 是 | 是 |
注:我们将在本教程中尽可能使用 iPerf2。
适用于高吞吐量?
对于高吞吐量环境,iPerf2 通常是最佳选择,因为其多线程功能可以充分利用多个 CPU 核心。如果使用能够处理每秒多千兆位 (Gbps) 通信的网络接口,这一点尤为重要。
如果多线程并不重要,则 iPerf3 是简化设置或具有 QoS 和拥塞控制等功能的现代网络的理想选择。然而,在非常高的吞吐量环境中,其单线程性质可能成为瓶颈。
为什么使用最大段大小 (Maximum Segment Size,MSS) 夹紧?
注:当流量通过 Internet 协议安全 (IPSec) 隧道通过 pfSense 防火墙 MSS 时,需要注意这一点。
MSS 夹持是指 Maximum Segment Size Clamping ,这是一种用于网络通信(尤其是在 TCP/IP 网络中)的技术,用于在连接设置过程中调整 TCP 包的 MSS。MSS 定义了设备可以在单个 TCP 段中处理的最大数据量,通常在 TCP 握手期间在通信设备之间进行协商。
MSS 夹紧通常由路由器、防火墙或 VPN 等网络设备使用,以避免与数据包碎片相关的问题。它的工作方式如下:
-
包碎片问题:如果 MSS 太大,包可能会超过网络路径的最大传输单元 (Maximum Transmission Unit,MTU),从而导致碎片。这可能会导致效率低下,开销增加,或者在某些情况下,如果网络无法很好地处理碎片,则包丢失。
-
减小 MSS:通过 MSS 夹持,网络设备可以在 TCP 握手期间向下调整(或夹持)MSS 值,确保数据包大小足够小,可以遍历网络路径而无需碎片。
-
在 VPN 中使用:在 VPN 场景中,通常使用 MSS 夹持,因为加密开销降低了 MTU 大小。如果没有 MSS 夹紧,包可能会碎片化,从而降低性能。
MSS 夹持示例:如果客户端设备在 TCP 握手期间发送的 MSS 值为 1460 字节,但由于 VPN 封装,网络的 MTU 限制为 1400 字节,则网络设备可以将 MSS 夹持为 1360 字节(允许额外开销),以避免碎片化问题。
重要参数
-
使用的端口
iPerf2 和 iPerf3 用于 TCP 和 UDP 的缺省端口为:
TCP 端口 UDP 端口 iPerf2 5001 5001 iPerf3 5201 5201 两个版本都允许您在必要时使用
-p
标志指定其他端口。为了进行测试,我们建议在 iPerf 端点的源 IP 地址和目标 IP 地址之间打开所有端口。
-
MTU 大小
iPerf 将在您预先确定的特定源和目标之间发送数据。
运行 iPerf 测试时,了解 MTU 大小至关重要,因为它直接影响网络性能、数据包碎片和测试准确性。以下是在 iPerf 测试期间应考虑的 MTU 大小。
-
默认 MTU 大小:
-
以太网的默认 MTU 大小为 1500 字节,但这可能会因网络配置而异。
-
较大或较小的 MTU 大小会影响在 iPerf 测试期间发送的数据包的最大大小。较小的 MTU 大小对于相同数量的数据将需要更多包,而较大的 MTU 大小可以减少开销。
-
-
数据包分段:
-
如果 MTU 大小设置得太小,或者 iPerf 包大小大于网络的 MTU,则包可能会碎片化。碎片包会导致更高的延迟并降低测试的性能。
-
iPerf 可以生成高达特定大小的数据包,如果它们超过 MTU,则需要拆分,从而增加额外开销并降低结果对实际性能的反映。
-
-
巨型帧:某些网络支持巨型帧,其中 MTU 大于标准 1500 字节,有时达到 9000 字节。在启用了巨型帧的环境中进行测试时,配置 iPerf 以匹配此较大的 MTU 可以通过减少标头和碎片的开销来最大程度地提高吞吐量。
-
MTU 搜索和路径 MTU:
-
路径 MTU 搜索有助于确保包不超过任何中间网络的 MTU。如果 iPerf 发送的包大于路径 MTU 并且不允许碎片,则包可能会被丢弃。
-
确保 ICMP Fragmentation Needed 消息不被防火墙阻止非常重要,因为这些消息有助于发现路径 MTU。没有它,较大的包可能无法成功传送,从而导致性能问题。
-
-
TCP 与 UDP 测试:
-
在 TCP 模式下,iPerf 会自动处理包大小并根据路径 MTU 进行调整。
-
在 UDP 模式下,数据包大小由用户控制(使用
-l
标志),并且此大小必须小于或等于 MTU,以避免碎片。
-
-
在 iPerf 中调整 MTU:
-
使用 iPerf 中的
-l
选项手动设置 UDP 数据报的长度。 -
对于使用特定 MTU 大小进行测试,确保您的网络和接口配置为与所需的 MTU 值匹配以避免不匹配非常有用。
-
-
跨网络段的一致性:确保两个端点之间的所有网络设备上的 MTU 大小一致。不匹配的 MTU 设置可能会导致碎片或丢弃的包导致效率低下,从而导致测试结果不准确。
-
VPN(虚拟专用网络):在使用 VPN 时,由于额外的封装和加密层,MTU 大小和网络性能变得更加显著。VPN 引入额外的开销,这可能会影响 iPerf 等工具的性能。
以下是 VPN 连接及其对网络测试的影响:
VPN 和 MTU 的主要概念:
-
封装开销:
-
VPN 协议(如 IPsec、OpenVPN、WireGuard、PPTP 或 L2TP)为原始数据包添加额外的标头,以用于加密和隧道。
-
这种额外的开销减少了有效的 MTU 大小,因为 VPN 必须同时容纳原始数据包和添加的 VPN 头。例如:
- IPsec 添加了大约 56 到 73 字节的开销。
- OpenVPN 添加了大约 40-60 字节,具体取决于配置(例如,UDP 与 TCP)。
- WireGuard 添加了大约 60 个字节。
-
如果不调整 MTU,大于调整后的 MTU 的包可能会碎片化或丢弃。
-
-
VPN 中的 MTU 和 Path MTU 发现:
-
VPN 通常会创建跨多个网络的隧道,隧道两端之间的路径 MTU 可能比直接连接上使用的路径要小。路径 MTU 搜索有助于 VPN 避免碎片,但某些网络阻止了 ICMP 消息,这对于此发现至关重要。
-
如果阻塞了 Fragmentation Needed 等 ICMP 消息,VPN 隧道可能会发送对中间网络而言太大的包,从而导致包丢失或重新传输。
-
-
碎片问题:
-
发生 MTU 不匹配时,VPN 将在网络级别对包进行碎片整理,或者,如果不允许进行碎片整理(DF 或设置了不碎片整理位),则丢弃包。分段引入额外的延迟,降低吞吐量,并可能导致包丢失。
-
VPN 通常具有较低的有效 MTU(例如,1400 字节而不是 1500 字节),它占了添加的头并防止碎片。
-
-
为 VPN 连接调整 MTU:大多数 VPN 客户端或路由器都允许用户调整 MTU 大小以避免碎片。例如,将 VPN 隧道上的 MTU 大小减小到 1400 或 1350 字节是很常见的,这会导致 VPN 开销。
-
-
实例网络速度
在 OCI 中,网络适配器 (vNIC) 或实例的速度与实例配置以及为该配置分配的 CPU 数量绑定。
在本教程中,我们将 E4.Flex
配置与具有 1 个 OCPU 的 Oracle Linux 8 映像一起使用。这意味着对于所有 iPerf 测试结果,我们将获得 1 Gbps 的(最大)网络带宽。
- 配置为 E4。弹性。
- OCPU 计数为 1。
- 网络带宽为 1 Gbps。
注:您可以通过选择其他配置并增加 OCPU 量来增加网络带宽。
目标
- 使用 iPerf 测试 OCI Hub 和 Spoke VCN 路由体系结构内的吞吐量。
任务 1:查看 OCI Hub 和 Spoke VCN 路由体系结构
在本教程中,我们将对所有 iPerf 吞吐量测试使用以下体系结构。
这是一种完整的中心路由和分支路由架构,内部部署与 IPSec VPN 隧道相连。要重新创建此路由拓扑,请参见:
任务 2:在 Hub 实例上安装 iPerf3
注:在此任务中,我们将安装 iPerf3,并在下一个任务中安装 iPerf2。
任务 2.1:在 Hub 步骤 -stone 上安装 iPerf3
集线器步骤是 Windows 服务器实例。此处提供了适用于 Windows 的不同 iPerf 分发: windows 。对于本教程,我们将在此处下载: Directory Lister 。
-
下载 zip 文件,并在集线器步骤石上解压缩该文件。
- 转到已解压缩 iPerf zip 文件的目录。
- 验证解压缩的文件夹是否可用。
- 请注意,存在另一个 iPerf 文件夹。
- 转到 iPerf 文件夹内。
- 验证 iPerf 文件夹中的文件。
- 我们需要使用
iPerf.exe
文件来执行实际测试。
-
运行
iPerf.exe
命令以查看其是否有效。
任务 2.2:在 pfSense 防火墙上安装 iPerf3
-
要在 pfSense 上安装 iPerf,需要通过 Package Manager 安装软件包。
- 转至系统菜单。
- 选择程序包管理器。
-
单击 Available Packages(可用软件包)。
- 在搜索词中输入 iPerf 。
- 单击搜索。
- 请注意,将有一个结果,这是 iPerf 软件包版本 3.0.3 (编写本教程时)。
- 单击 +Install 。
-
单击确认。
-
请注意,已安装的软件包数量为 2 。
- 转至 Diagnostics Menu 。
- 选择 iPerf 。
-
单击客户机。
-
单击服务器。
注:pfSense 防火墙没有用于安装 iPerf 版本 2 软件包的选项(缺省情况下)。
任务 3:在 Spoke 实例上安装 iPerf3
在 OCI 中的 Linux 实例上,在我们的架构中安装 iPerf3。
任务 3.1:在 Spoke 实例 A1 和实例 A2 上安装 iPerf3
-
实例 A1 已安装 iPerf3。
- 连接到实例 A1。
- 运行
sudo dnf install iPerf3
命令。 - 请注意,iPerf3 已安装。
-
运行
iPerf3 -v
命令以验证安装的 iPerf 版本。 -
在实例 A2 上安装 iPerf3。
- 连接到实例 A2。
- 运行
sudo dnf install iPerf3
命令。 - 输入
Y
。
-
iPerf3 将安装并注意安装已完成。
任务 3.2:在 Spoke 实例 B 上安装 iPerf3
- 连接到实例 B。
- 运行
sudo dnf install iPerf3
命令以安装 iPerf 3。如果 iPerf3 已可用,您将收到一条消息,指出 iPerf 已安装。
任务 3.3:在 Spoke 实例 C 上安装 iPerf3
- 连接到实例 C。
- 运行
sudo dnf install iPerf3
命令以安装 iPerf 3。如果 iPerf3 已可用,您将收到一条消息,指出 iPerf 已安装。
任务 3.4:在实例 D 上安装 iPerf3
- 连接到实例 D。
- 运行
sudo dnf install iPerf3
命令以安装 iPerf 3。如果 iPerf3 已可用,您将收到一条消息,指出 iPerf 已安装。
任务 4:在内部部署实例上安装 iPerf3
在我们的体系结构中的内部部署 Linux 实例上安装 iPerf3。
任务 4.1:在 Oracle Linux 客户机上安装 iPerf3
- 连接到内部部署 Linux 客户端实例。
- 运行
sudo dnf install iPerf3
命令以安装 iPerf 3。如果 iPerf3 已可用,您将收到一条消息,指出 iPerf 已安装。
任务 4.2:在 Oracle Linux 客户机 CPE 上安装 iPerf3
- 连接到内部部署 Linux CPE 实例。
- 运行
sudo dnf install iPerf3
命令以安装 iPerf 3。如果 iPerf3 已可用,您将收到一条消息,指出 iPerf 已安装。
任务 5:在所有 Linux 实例上安装 iPerf2
我们已经安装了 iPerf3,现在我们将在整个体系结构中的所有 Linux 实例上安装 iPerf2。
我们使用的是 Oracle Linux 8,因此我们需要以下 iPerf2 软件包:Oracle Linux 8 (x86_64) EPEL 。如果使用的是 Oracle Linux 9,请使用此软件包:Oracle Linux 9 (x86_64) EPEL 或其他 OS 或 Linux 发行版使用为该 OS 编译的软件包。
-
运行以下命令在所有 Oracle Linux 8 实例上安装 iPerf 2。
sudo dnf install https://yum.oracle.com/repo/OracleLinux/OL8/developer/EPEL/x86_64/getPackage/iPerf-2.1.6-2.el8.x86_64.rpm
-
输入
Y
以确认安装。 -
请注意,安装已完成。
- 运行
iPerf -v
命令以验证安装的 iPerf 版本。 - 请注意,已安装 iPerf 版本
2.1.6
。
注:请确保同时在所有其他实例上安装 iPerf2。
- 运行
-
对于基于 Windows 的集线器步骤,请从此处下载:iPerf-2.2.n-win64 。
- 运行
iPerf.exe
命令以查看其是否有效。 - 运行
iPerf -v
命令以验证安装的 iPerf 版本。 - 请注意,已安装 iPerf 版本
2.2.n
。
- 运行
任务 6:定义 iPerf 测试并准备 iPerf 命令
在本任务中,我们将提供一些带有其他标志的 iPerf 命令并解释其含义。有关更多信息,请参见 Network Performance 。
-
用于使用 TCP 进行测试的基本 iPerf 命令:
-
在 iPerf 服务器端。
iPerf3 -s
-
在 iPerf 客户机端。
iPerf3 -c <server_instance_private_ip_address>
-
-
我们将用于使用 TCP 进行测试的 iPerf 命令:
注:
- 双向带宽测量 (
-r
)。 - TCP 窗口大小 (
-w
)。
-
在 iPerf 服务器端。
iPerf3 -s -w 4000
-
在 iPerf 客户机端。
iPerf3 -c <server_instance_private_ip_address> -r -w 2000 iPerf3 -c <server_instance_private_ip_address> -r -w 4000
- 双向带宽测量 (
-
我们将用于使用 UDP 进行测试的 iPerf 命令:
注:
- UDP 测试 (
-u
)。 - 带宽设置 (
-b
)。
-
在 iPerf 服务器端。
iPerf -s -u -i 1
-
在 iPerf 客户机端。
iPerf -c <server_instance_private_ip_address> -u -b 10m iPerf -c <server_instance_private_ip_address> -u -b 100m iPerf -c <server_instance_private_ip_address> -u -b 1000m iPerf -c <server_instance_private_ip_address> -u -b 10000m iPerf -c <server_instance_private_ip_address> -u -b 100000m
- UDP 测试 (
-
我们将用于使用 TCP(使用 MSS)进行测试的 iPerf 命令:
注:最大段大小 (
-m
)。-
在 iPerf 服务器端。
iPerf -s
-
在 iPerf 客户机端。
iPerf -c <server_instance_private_ip_address> -m
-
-
我们将用于使用 TCP 进行测试的 iPerf 命令(并行):
-
在 iPerf 服务器端。
iPerf -s
-
在 iPerf 客户机端。
iPerf -c <server_instance_private_ip_address> -P 2
注:对于本教程中将执行的所有测试,我们将使用以下最终命令。
-
-
用于测试的 iPerf final 命令:
注:
- 带宽设置 (
-b
)。 - 并行测试 (
-P
)。
为了测试使用 100Gbps 的 100GB 连接的吞吐量,我们将使用 11 个并行流将吞吐量设置为 9Gbps。
-
在 iPerf 服务器端。
iPerf -s
-
在 iPerf 客户机端。
iPerf -c <server_instance_private_ip_address> -b 9G -P 11
- 带宽设置 (
任务 7:在同一子网中的同一 VCN 内执行 iPerf 测试
在本任务中,我们将在同一 VCN 和同一子网内执行 iPerf2 吞吐量测试。下图显示了两个端点之间箭头的路径,我们将执行吞吐量测试。
任务 7.1:从 instance-A1 到 instance-A2
在下表中,您将找到客户机和服务器的 IP 地址(在此测试中使用),以及用于执行 iPerf 测试以及测试结果的命令。
iPerf 服务器的 IP | 172.16.1.50 |
iPerf 客户机的 IP | 172.16.1.93 |
服务器上的 iPerf 命令 | iPerf -s |
客户端上的 iPerf 命令 | iPerf -c 172.16.1.50 -b 9G -P 5 |
测试带宽 (SUM) | 1.05 Gbps |
下图显示了 iPerf 测试的命令和完整测试输出。
任务 7.2:从 instance-A2 到 instance-A1
在下表中,您将找到客户机和服务器的 IP 地址(在此测试中使用),以及用于执行 iPerf 测试以及测试结果的命令。
iPerf 服务器的 IP | 172.16.1.93 |
iPerf 客户机的 IP | 172.16.1.50 |
服务器上的 iPerf 命令 | iPerf -s |
客户端上的 iPerf 命令 | iPerf -c 172.16.1.93 -b 9G -P 5 |
测试带宽 (SUM) | 1.05 Gbps |
下图显示了 iPerf 测试的命令和完整测试输出。
任务 8:跨不同子网在同一 VCN 内执行 iPerf 测试
在本任务中,我们将在同一 VCN 中执行 iPerf3 吞吐量测试,但要执行两个不同的子网。下图显示了在要执行吞吐量测试的两个端点之间使用箭头的路径。
任务 8.1:从 pfSense 防火墙到 Hub Step-Stone
在下表中,您将找到客户机和服务器的 IP 地址(在此测试中使用),以及用于执行 iPerf 测试以及测试结果的命令。
iPerf 服务器的 IP | 172.16.0.252 |
iPerf 客户机的 IP | 172.16.0.20 |
服务器上的 iPerf 命令 | iPerf3 -s |
客户端上的 iPerf 命令 | iPerf3 -c 172.16.0.252 |
测试带宽 (SUM) | 958 MB/秒 |
下图显示了 iPerf 测试的命令和完整测试输出。
任务 8.2:从 Hub Step-Stone 到 pfSense 防火墙
在下表中,您将找到客户机和服务器的 IP 地址(在此测试中使用),以及用于执行 iPerf 测试以及测试结果的命令。
iPerf 服务器的 IP | 172.16.0.20 |
iPerf 客户机的 IP | 172.16.0.252 |
服务器上的 iPerf 命令 | iPerf3 -s |
客户端上的 iPerf 命令 | iPerf3 -c 172.16.0.20 |
测试带宽 (SUM) | 1.01 千兆位/秒 |
下图显示了 iPerf 测试的命令和完整测试输出。
任务 9:在两个不同的 VCN 之间执行 iPerf 测试
在本任务中,我们将在两个不同的 VCN 和两个不同的子网之间执行 iPerf2 吞吐量测试。请注意,测试将通过位于中心 VCN 中的防火墙。下图显示了在要执行吞吐量测试的两个端点之间使用箭头的路径。
任务 9.1:从 Instance-A1 到 Instance-B
在下表中,您将找到客户机和服务器的 IP 地址(在此测试中使用),以及用于执行 iPerf 测试以及测试结果的命令。
iPerf 服务器的 IP | 172.16.2.88 |
iPerf 客户机的 IP | 172.16.1.93 |
服务器上的 iPerf 命令 | iPerf -s |
客户端上的 iPerf 命令 | iPerf -c 172.16.2.88 -b 9G -P 5 |
测试带宽 (SUM) | 1.02 Gbps |
下图显示了 iPerf 测试的命令和完整测试输出。
任务 9.2:从 Instance-B 到 Instance-A1
在下表中,您将找到客户机和服务器的 IP 地址(在此测试中使用),以及用于执行 iPerf 测试以及测试结果的命令。
iPerf 服务器的 IP | 172.16.1.93 |
iPerf 客户机的 IP | 172.16.2.99 |
服务器上的 iPerf 命令 | iPerf -s |
客户端上的 iPerf 命令 | iPerf -c 172.16.1.93 -b 9G -P 5 |
测试带宽 (SUM) | 1.02 Gbps |
下图显示了 iPerf 测试的命令和完整测试输出。
任务 10:在绕过 pfSense 防火墙的不同 VCN 之间执行 iPerf 测试
在本任务中,我们将在两个不同的 VCN 和两个不同的子网之间执行 iPerf2 吞吐量测试。请注意,测试将绕过中心 VCN 中的防火墙。下图显示了在要执行吞吐量测试的两个端点之间使用箭头的路径。
任务 10.1:从 Instance-C 到 Instance-D
在下表中,您将找到客户机和服务器的 IP 地址(在此测试中使用),以及用于执行 iPerf 测试以及测试结果的命令。
iPerf 服务器的 IP | 172.16.4.14 |
iPerf 客户机的 IP | 172.16.3.63 |
服务器上的 iPerf 命令 | iPerf -s |
客户端上的 iPerf 命令 | iPerf -c 172.16.4.14 -b 9G -P 5 |
测试带宽 (SUM) | 1.04 Gbps |
下图显示了 iPerf 测试的命令和完整测试输出。
任务 10.2:从 Instance-D 到 Instance-C
在下表中,您将找到客户机和服务器的 IP 地址(在此测试中使用),以及用于执行 iPerf 测试以及测试结果的命令。
iPerf 服务器的 IP | 172.16.3.63 |
iPerf 客户机的 IP | 172.16.4.14 |
服务器上的 iPerf 命令 | iPerf -s |
客户端上的 iPerf 命令 | iPerf -c 172.16.3.63 -b 9G -P 5 |
测试带宽 (SUM) | 1.05 Gbps |
下图显示了 iPerf 测试的命令和完整测试输出。
任务 11:在内部部署与 OCI Hub VCN 之间执行 iPerf 测试
在本任务中,我们将使用站点到站点 IPSec VPN 隧道在本地和 OCI 之间执行 iPerf2 吞吐量测试。请注意,测试将通过位于中心 VCN 中的防火墙。下图显示了在要执行吞吐量测试的两个端点之间使用箭头的路径。
注:
当使用 VPN IPSec 隧道和 pfSense 防火墙最大传输单元 (Maximum Transmission Unit,MTU) 和最大段大小 (Maximum Segment Size,MSS) 执行吞吐量测试(有无 iPerf)时,需要考虑的一个重要因素,如果这样做错误,吞吐量结果将无效,并且不会如预期的那样。
使用 iPerf,您可以调整数据包流以便使用特定 MSS 发送数据包,如果您无法在源或目标之间的路径中更改设备上的 MSS 设置,则可以使用此功能。
最大段大小夹
在本教程中,本地部署端的 MTU 为 9000,发送 MSS 值为 1500 + IPSec 开销的数据包。
pfSense 接口 MTU 为 1500 ... 导致碎片问题。
通过将接口 MSS 设置为 1300,它将动态更改大小,此技术称为最大段大小夹紧。
MSS 对 pfSense 的变更
任务 11.1:从 VPN 客户端实例(内部部署)到 Hub 步骤 -Stone
在下表中,您将找到客户机和服务器的 IP 地址(在此测试中使用),以及用于执行 iPerf 测试以及测试结果的命令。
iPerf 服务器的 IP | 172.16.0.252 |
iPerf 客户机的 IP | 10.222.10.19 |
服务器上的 iPerf 命令 | iPerf -s |
客户端上的 iPerf 命令 | iPerf -c 172.16.0.252 -b 9G -P 5 |
测试带宽 (SUM) | 581 Mb/秒 |
下图显示了 iPerf 测试的命令和完整测试输出。
任务 11.2:从 Hub Step-Stone 到 VPN 客户端实例(内部部署)
在下表中,您将找到客户机和服务器的 IP 地址(在此测试中使用),以及用于执行 iPerf 测试以及测试结果的命令。
iPerf 服务器的 IP | 10.222.10.19 |
iPerf 客户机的 IP | 172.16.0.252 |
服务器上的 iPerf 命令 | iPerf -s |
客户端上的 iPerf 命令 | iPerf -c 10.222.10.19 -b 9G -P 5 |
测试带宽 (SUM) | 732 Mb/秒 |
下图显示了 iPerf 测试的命令和完整测试输出。
任务 12:在内部部署与 OCI Spoke VCN 之间执行 iPerf 测试
在本任务中,我们将使用站点到站点 IPSec VPN 隧道在本地和 OCI 之间执行 iPerf2 吞吐量测试。请注意,测试将通过位于中心 VCN 中的防火墙。下图显示了在要执行吞吐量测试的两个端点之间使用箭头的路径。
任务 12.1:从 VPN 客户端实例(内部部署)到实例 A1
在下表中,您将找到客户机和服务器的 IP 地址(在此测试中使用),以及用于执行 iPerf 测试以及测试结果的命令。
iPerf 服务器的 IP | 172.16.1.93 |
iPerf 客户机的 IP | 10.222.10.19 |
服务器上的 iPerf 命令 | iPerf -s |
客户端上的 iPerf 命令 | iPerf -c 172.16.1.93 -b 9G -P 5 |
测试带宽 (SUM) | 501 Mbps |
下图显示了 iPerf 测试的命令和完整测试输出。
在 iPerf 命令中使用 MSS 进行新测试:
注:使用 iPerf 可以调整数据包流,以便使用特定的 MSS 发送数据包,如果无法在源或目标之间的路径中更改设备上的 MSS 设置,则可以使用以下命令。
在下表中,您将找到客户机和服务器的 IP 地址(在此测试中使用),以及用于执行 iPerf 测试以及测试结果的命令。
iPerf 服务器的 IP | 172.16.1.93 |
iPerf 客户机的 IP | 10.222.10.19 |
服务器上的 iPerf 命令 | iPerf -s |
客户端上的 iPerf 命令 | iPerf -c 172.16.1.93 -b 9G -P 5 -M 1200 |
测试带宽 (SUM) | 580 Mb/秒 |
下图显示了 iPerf 测试的命令和完整测试输出。
任务 12.2:从实例 A1 到 VPN 客户端实例(内部部署)
在下表中,您将找到客户机和服务器的 IP 地址(在此测试中使用),以及用于执行 iPerf 测试以及测试结果的命令。
iPerf 服务器的 IP | 10.222.10.19 |
iPerf 客户机的 IP | 172.16.1.93 |
服务器上的 iPerf 命令 | iPerf -s |
客户端上的 iPerf 命令 | iPerf -c 10.222.10.19 -b 9G -P 5 |
测试带宽 (SUM) | 620 Mb/秒 |
在接下来的屏幕截图中,您还可以找到 iPerf 测试的完整测试输出。
在 iPerf 命令中使用 MSS 进行新测试:
注:使用 iPerf 可以调整数据包流,以便使用特定的 MSS 发送数据包,如果无法在源或目标之间的路径中更改设备上的 MSS 设置,则可以使用以下命令。
在下表中,您将找到客户机和服务器的 IP 地址(在此测试中使用),以及用于执行 iPerf 测试以及测试结果的命令。
iPerf 服务器的 IP | 10.222.10.19 |
iPerf 客户机的 IP | 172.16.1.93 |
服务器上的 iPerf 命令 | iPerf -s |
客户端上的 iPerf 命令 | iPerf -c 10.222.10.19 -b 9G -P 5 -M 1200 |
测试带宽 (SUM) | 805 Mbps |
下图显示了 iPerf 测试的命令和完整测试输出。
任务 13:在内部部署与 OCI Spoke VCN 之间执行 iPerf 测试,绕过 pfSense 防火墙
在本任务中,我们将使用站点到站点 IPSec VPN 隧道在本地和 OCI 之间执行 iPerf2 吞吐量测试。请注意,测试将绕过中心 VCN 中的防火墙。下图显示了在要执行吞吐量测试的两个端点之间使用箭头的路径。
任务 13.1:从 VPN 客户端实例(内部部署)到实例 D
在下表中,您将找到客户机和服务器的 IP 地址(在此测试中使用),以及用于执行 iPerf 测试以及测试结果的命令。
iPerf 服务器的 IP | 172.16.4.14 |
iPerf 客户机的 IP | 10.222.10.19 |
服务器上的 iPerf 命令 | iPerf -s |
客户端上的 iPerf 命令 | iPerf -c 172.16.4.14 -b 9G -P 5 |
测试带宽 (SUM) | 580 Mb/秒 |
下图显示了 iPerf 测试的命令和完整测试输出。
任务 13.2:从实例 D 到 VPN 客户端实例(内部部署)
在下表中,您将找到客户机和服务器的 IP 地址(在此测试中使用),以及用于执行 iPerf 测试以及测试结果的命令。
iPerf 服务器的 IP | 10.222.10.19 |
iPerf 客户机的 IP | 172.16.4.14 |
服务器上的 iPerf 命令 | iPerf -s |
客户端上的 iPerf 命令 | iPerf -c 10.222.10.19 -b 9G -P 5 |
测试带宽 (SUM) | 891 Mb/秒 |
下图显示了 iPerf 测试的命令和完整测试输出。
任务 14:在 Internet 和 OCI Hub VCN 之间执行 iPerf 测试
在本任务中,我们将使用 Internet 在 Internet 上的客户端与 OCI 之间执行 iPerf2 吞吐量测试。下图显示了在要执行吞吐量测试的两个端点之间使用箭头的路径。
任务 14.1:从 Internet 到 Hub 的 Step-Stone
在下表中,您将找到客户机和服务器的 IP 地址(在此测试中使用),以及用于执行 iPerf 测试以及测试结果的命令。
iPerf 服务器的 IP | xxx.xxx.xxx.178 |
iPerf 客户机的 IP | xxx.xxx.xxx.152 |
服务器上的 iPerf 命令 | iPerf -s |
客户端上的 iPerf 命令 | iPerf -c xxx.xxx.xxx.178 -b 9G -P 5 |
测试带宽 (SUM) | 251 Mbps |
下图显示了 iPerf 测试的命令和完整测试输出。
任务 15:在同一子网内部部署中执行 iPerf 测试
在本任务中,我们将在两个内部部署实例之间执行 iPerf2 吞吐量测试。下图显示了在要执行吞吐量测试的两个端点之间使用箭头的路径。
任务 15.1:从 VPN 客户端实例(内部部署)到 StrongSwan CPE 实例(内部部署)
在下表中,您将找到客户机和服务器的 IP 地址(在此测试中使用),以及用于执行 iPerf 测试以及测试结果的命令。
iPerf 服务器的 IP | 10.222.10.70 |
iPerf 客户机的 IP | 10.222.10.19 |
服务器上的 iPerf 命令 | iPerf -s |
客户端上的 iPerf 命令 | iPerf -c 10.222.10.70 -b 9G -P 5 |
测试带宽 (SUM) | 1.05 Gbps |
下图显示了 iPerf 测试的命令和完整测试输出。
任务 15.2:从 StrongSwan CPE 实例(内部部署)到 VPN 客户端实例(内部部署)
在下表中,您将找到客户机和服务器的 IP 地址(在此测试中使用),以及用于执行 iPerf 测试以及测试结果的命令。
iPerf 服务器的 IP | 10.222.10.19 |
iPerf 客户机的 IP | 10.222.10.70 |
服务器上的 iPerf 命令 | iPerf -s |
客户端上的 iPerf 命令 | iPerf -c 10.222.10.19 -b 9G -P 5 |
测试带宽 (SUM) | 1.05 Gbps |
下图显示了 iPerf 测试的命令和完整测试输出。
结果
在本教程中,我们使用 iPerf2 和 iPerf3 执行了不同类型的吞吐量测试。测试是在具有不同路径的完整网络体系结构中的各种不同源和目标上执行的。
在下表中,您可以查看我们收集的测试结果的摘要。
测试类型 | 带宽结果 | |
---|---|---|
任务 7.1:在同一子网中的同一 VCN 内执行 iPerf 测试(从 Instance-A1 到 Instance-A2 ) | 1.05 Gbps | OCI 内部 |
任务 7.2:在同一子网中的同一 VCN 内执行 iPerf 测试(从 Instance-A2 到 Instance-A1 ) | 1.05 Gbps | OCI 内部 |
任务 8.1:在不同子网的同一 VCN 内执行 iPerf 测试(从 pfSense 防火墙到中心服务器步骤) | 958 MB/秒 | OCI 内部 |
任务 8.2:在不同子网的同一 VCN 内执行 iPerf 测试(从中心服务器步骤通到 pfSense 防火墙) | 1.01 千兆位/秒 | OCI 内部 |
任务 9.1:在不同 VCN 之间执行 iPerf 测试(从 Instance-A1 到 Instance-B ) | 1.02 Gbps | OCI 内部 |
任务 9.2:在不同 VCN 之间执行 iPerf 测试(从实例 B 到实例 A1 ) | 1.02 Gbps | OCI 内部 |
任务 10.1:在不同的 VCN 之间执行 iPerf 测试(绕过 pfSense 防火墙)(从 Instance-C 到 Instance-D ) | 1.04 Gbps | OCI 内部 |
任务 10.2:在不同的 VCN 之间执行 iPerf 测试(绕过 pfSense 防火墙)(从 Instance-D 到 Instance-C ) | 1.05 Gbps | OCI 内部 |
任务 11.1:在内部部署与 OCI Hub VCN 之间执行 iPerf 测试(从 VPN 客户端实例(内部部署)到 Hub Stepstone ) | 581 Mb/秒 | 通过防火墙将本地部署环境迁移到 OCI |
任务 11.2:在内部部署与 OCI Hub VCN 之间执行 iPerf 测试(从 Hub Stepstone 到 VPN 客户端实例(内部部署)) | 732 Mb/秒 | 通过防火墙将本地部署环境迁移到 OCI |
任务 12.1:在内部部署与 OCI Spoke VCN 之间执行 iPerf 测试(从 VPN 客户端实例(内部部署)到实例 A1 ) | 501Mbits/sec | 通过防火墙将本地部署环境迁移到 OCI |
任务 12.2:在内部部署与 OCI Spoke VCN 之间执行 iPerf 测试(从 Instance-A1 到 VPN Client 实例(内部部署)) | 620 Mb/秒 | 通过防火墙将本地部署环境迁移到 OCI |
任务 13.1:在内部部署与 OCI Spoke VCN 之间执行 iPerf 测试(绕过 pfSense 防火墙)(从 VPN 客户端实例(内部部署)到 Instance-D ) | 580 Mb/秒 | 本地部署到 OCI 防火墙绕过 |
任务 13.2:在内部部署与 OCI Spoke VCN 之间执行 iPerf 测试(绕过 pfSense 防火墙)(从 Instance-D 到 VPN Client 实例(内部部署)) | 891 Mb/秒 | 本地部署到 OCI 防火墙绕过 |
任务 14:在 INTERNET 和 OCI Hub VCN 之间执行 iPerf 测试(从 INTERNET 到 Hub Stepstone ) | 251 Mbps | 从 Internet 到 OCI |
任务 15.1:在同一子网内部部署(从 VPN 客户端实例(内部部署)到 StrongSwan CPE 实例(内部部署))内执行 iPerf 测试 | 1.05 Gbps | 从本地到本地 |
任务 15.2:在同一子网内部部署(从 StrongSwan CPE 实例(内部部署)到 VPN 客户端实例(内部部署))内执行 iPerf 测试 | 1.05 Gbps | 从本地到本地 |
确认
- 作者 — Iwan Hoogendoorn(OCI 网络专家)
更多学习资源
浏览 docs.oracle.com/learn 上的其他实验室,或者访问 Oracle Learning YouTube 渠道上的更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 成为 Oracle Learning Explorer。
有关产品文档,请访问 Oracle 帮助中心。
Use iPerf to Test the Throughput inside an OCI Hub and Spoke VCN Routing Architecture
G17039-01
October 2024