4.7.2. iperf3

iperf3 是用于执行网络吞吐量测量的工具。 它可以测试 TCP、UDP 或 SCTP 吞吐量。 要执行 iperf3 测试,用户必须建立服务器和客户端。测试完成后提供详细的测试报告。

4.7.2.1. 语法说明

Usage: iperf3 [-s|-c host] [options]
       iperf3 [-h|--help] [-v|--version]

4.7.2.2. 常用参数选项介绍

  • -s, --server:启动iperf3服务器。

  • -c, --client <host>:运行iperf3客户端,并连接到指定的服务器。

  • -p, --port <端口号>:指定服务器端口。

  • -t, --time <数字>:指定传输测试的持续时间(以秒为单位),iperf3在指定的时间内,重复的发送指定长度的数据包,(默认 10 秒)。

  • -i, --interval <数字>: 设置每次报告之间的时间间隔,单位为秒,如果设置为非零值,就会按照此时间间隔输出测试报告,默认值为零。

  • -f, --format <报告格式>:设置报告的格式,可选值包括Kbits、Mbits、Gbits、Tbits等。

  • -u, --udp:使用 UDP 而不是 TCP。

  • -w, --window <size>: 设置套接字缓冲区为指定大小,对于TCP方式,此设置为TCP窗口大小,对于UDP方式,此设置为接受UDP数据包的缓冲区大小,限制可以接受数据包的最大值。

  • --logfile:将输出的测试结果储存至文件中

  • -J, --json:输出JSON格式测试结果。

  • -R, --reverse:反向测试,客户端作为接收端,服务器作为发送端。如果需要测试下载速度,则在Client侧使用-R参数即可。

  • -h, --help:显示帮助信息。

可以执行 iperf3 -h 命令,了解更多参数选项。

4.7.2.3. 测试结果分析

客户端连接服务端成功后,会自动开始进行测试,两端都会输出相应的测试结果信息。

服务端输出结果包含:[ ID] Interval Transfer Bandwidth

各字段含义:

  • [ ID]:标识测试的流ID。每个测试流都被分配一个唯一的ID,用于区分不同的数据流。通过这个ID,你可以跟踪特定流的性能表现。

  • Interval:指示iperf3报告的时间间隔。iperf3-i选项设置报告间隔,而Interval字段表示每个报告的时间间隔。

  • Transfer:传输的数据量。这是指在特定的时间间隔内通过测试流传输的数据量,以字节(KBytes,MBytes等)为单位。

  • Bandwidth/Bitrate:带宽,表示在特定的时间间隔内的平均传输速率。通常以Kbits/s或Mbits/s为单位,表示每秒传输的比特数。这个值用于衡量网络连接的速度和性能。

例如:

iperf3 -s -p 5002
-----------------------------------------------------------
Server listening on 5002
-----------------------------------------------------------
Accepted connection from 192.168.1.10, port 44764
[  5] local 192.168.1.195 port 5002 connected to 192.168.1.10 port 44766
[ ID] Interval           Transfer     Bandwidth
[  5]   0.00-1.00   sec   109 MBytes   917 Mbits/sec
[  5]   1.00-2.00   sec   112 MBytes   942 Mbits/sec
[  5]   2.00-3.00   sec   113 MBytes   949 Mbits/sec

客户端输出结果包含:[ ID] Interval Transfer Bitrate Retr Cwnd

各字段含义:

  • [ ID]:标识测试的流ID。每个测试流都被赋予一个唯一的ID,用于区分不同的数据流。

  • Interval:测试的时间间隔。iperf3-i选项设置报告间隔,Interval字段指示这些结果的时间间隔。

  • Transfer:传输的数据量。以字节(Bytes)为单位,表示在测试期间通过网络传输的数据量。

  • Bitrate:比特率,表示在测试期间的平均传输速率。通常以Kbits/s或Mbits/s为单位,表示每秒传输的比特数。

  • Retr:重传次数。表示在传输过程中发生的数据包重传的次数。较高的重传次数可能表明网络有问题或存在拥塞。

  • Cwnd:拥塞窗口大小。表示TCP拥塞控制算法中的窗口大小,即在不收到确认时允许发送的数据量。这个值的变化可以反映网络拥塞的情况。

例如:

iperf3 -c 192.168.1.195 -i 1 -t 600 -p 5002
Connecting to host 192.168.1.195, port 5002
[  5] local 192.168.1.10 port 44766 connected to 192.168.1.195 port 5002
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   113 MBytes   946 Mbits/sec    0    227 KBytes       
[  5]   1.00-2.00   sec   113 MBytes   948 Mbits/sec    0    227 KBytes       
[  5]   2.00-3.00   sec   113 MBytes   948 Mbits/sec    0    227 KBytes

4.7.2.4. 使用示例

  • 启动iperf3服务器:

iperf3 -s
  • 连接到iperf3服务器:

iperf3 -c <host>
iperf3 -c <host> -p 5002
  • 指定测试时间为30秒:

iperf3 -c <host> -t 30
  • 执行UDP模式测试,设置带宽为10Mbits/s:

iperf3 -c <host> -u -b 10M
  • 以反向模式进行测试:

iperf3 -c <host> -R