6.2. 使用 iperf3 测试 UDP 吞吐量


iperf3 工具提供了服务器和客户端模式,来在两个主机之间执行网络吞吐量测试。

注意

应用程序的吞吐量取决于许多因素,如应用程序使用的缓冲区大小。因此,使用测试工具(如 iperf 3)测量的结果可能与生产工作负载下服务器上应用程序测量的结果有很大不同。

先决条件

  • iperf3 软件包已安装在客户端和服务器上。
  • 两个主机上没有其他服务导致严重影响测试结果的网络流量。
  • 可选:您在服务器和客户端上增加了最大 UDP 套接字大小。详情请查看 增加系统范围的 UDP 套接字缓冲区

流程

  1. 可选:显示服务器和客户端上网络接口控制器(NIC)的最大网络速度:

    # ethtool enp1s0 | grep "Speed"
       Speed: 10000Mb/s
  2. 在服务器上:

    1. 显示最大 UDP 套接字读缓冲区大小,并记录此值:

      # sysctl net.core.rmem_max
      net.core.rmem_max = 16777216

      显示的值以字节为单位。

    2. firewalld 服务中临时打开默认的 iperf3 端口 5201 :

      # firewall-cmd --add-port=5201/tcp --add-port=5201/udp

      请注意,iperf3 只在服务器上打开一个 TCP 套接字。如果客户端希望使用 UDP,它首先连接到此 TCP 端口,然后服务器在同一端口号上打开一个 UDP 套接字,以执行 UDP 流量吞吐量测试。因此,您必须在本地防火墙中为 TCP 和 UDP 协议打开端口 5201。

    3. 在服务器模式下启动 iperf3

      # iperf3 --server

      服务现在等待传入的客户端连接。

  3. 在客户端中:

    1. 显示客户端将用来连接到服务器的接口的最大传输单元(MTU),并记录此值:

      # ip link show enp1s0
      2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
      ...
    2. 显示最大 UDP 套接字写缓冲区大小,并记录此值:

      # sysctl net.core.wmem_max
      net.core.wmem_max = 16777216

      显示的值以字节为单位。

    3. 开始测量吞吐量:

      # iperf3 --udp --time 60 --window 16777216 --length 1472 --bitrate 2G --client 192.0.2.1
      • --udp :使用 UDP 协议进行测试。
      • --time <seconds> :定义客户端停止传输时的时间(以秒为单位)。
      • --window <size> :设置 UDP 套接字缓冲区大小。理想情况下,客户端和服务器上的大小都一样。如果不一样,则将此参数设置为较小的值:客户端上的 net.core.wmem_max 或服务器上的 net.core.rmem_max
      • --length <size> :设置要读和写的缓冲区的长度。将这个选项设置为最大未碎片的有效负载。按如下所示计算理想的值:MTU - IP 标头(20 字节用于 IPv4 ,40 字节用于 IPv6) - 8 字节 UDP 标头。
      • --bitrate <rate> :将比特率限制为指定的值,单位是比特每秒。您可以指定单位,如 2G 代表 2 Gbps。

        将此参数设置为您希望工作的值,并在稍后的测量中增加它。如果客户端以比传输路径上的设备快的速度,或者比服务器可以处理数据包快的速度发送数据包,则数据包可以丢弃。

      • --client <server>:启用客户端模式,并设置运行 iperf3 服务器的服务器的 IP 地址或名称。
  4. 等待 iperf3 完成测试。服务器和客户端都显示每秒的统计信息,并在结尾显示总结。例如,以下是客户端上显示的总结:

    [ ID] Interval       Transfer      Bitrate         Jitter    Lost/Total Datagrams
    [ 5] 0.00-60.00 sec  14.0 GBytes   2.00 Gbits/sec  0.000 ms  0/10190216 (0%) sender
    [ 5] 0.00-60.04 sec  14.0 GBytes   2.00 Gbits/sec  0.002 ms  0/10190216 (0%) receiver

    在这个示例中,平均波特率为 2 Gbps,没有数据包丢失。

  5. 在服务器上:

    1. Ctrl+C 停止 iperf3 服务器。
    2. 关闭 firewalld 中的端口 5201 :

      # firewall-cmd --remove-port=5201/tcp --remove-port=5201/udp
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部