iperf3主要诊断网络瓶颈,测试网络设备性能并调优网络配置。 使用 iperf3 的主要方法是分别在两台计算机上运行 iperf3 服务器和客户端。服务器接收客户端发送的数据包,从而测量网络吞吐量。iperf3 支持多种操作系统,如 Linux、Windows 和 macOS。

安装(以CentOS 7为例)

#启用 EPEL 存储库
sudo yum install epel-release
#安装 iperf3
sudo yum install iperf3

基本测试

在一台计算机上启动 iperf3 服务器:iperf3 -s。这将在默认的 TCP 端口 5201 上启动服务器。 image.png 从另一台计算机连接到服务器并启动测试:iperf3 -c <server_ip>。这将启动一个默认为 10 秒的 TCP 测试,通过此命令可以获取网络吞吐量的结果。(记得服务端防火墙放行相关端口) image.png 同时服务端这边也有记录 image.png

改变测试时长

iperf3 -c <server_ip> -t <time_in_seconds>。例如:iperf3 -c 192.168.1.100 -t 30 将进行 30 秒的测试。 image.png 服务端: image.png

指定要发送的总数据量

在 iperf3 中,-k 选项用于指定要发送的数据包个数。通过使用 -k 选项,您可以限制在测试期间发送的数据包个数,而不是根据 -t 选项设置的时间来发送数据。 -k 选项的值可以是带单位的,例如 K(千字节)、M(兆字节)和 G(吉字节)。

#向 iperf3 服务器发送总共3个数据包
iperf3 -c 192.168.1.100 -k 3

image.png 服务端 image.png

使用 UDP 协议进行测试

iperf3 -c 192.168.1.100 -u

image.png 第一次防火墙忘记开放5201端口的udp协议了,所以失败 第二次是开放端口协议后成功。 服务端: image.png 服务端对应的两次测试

设置客户端的带宽限制,对于 UDP 测试特别有用

在进行 UDP 测试时,设置客户端的带宽限制特别有用,原因如下:

  1. 无拥塞控制:与 TCP 不同,UDP 协议不具有内置的拥塞控制机制。TCP 会根据网络拥塞情况自动调整发送速率,以防止网络过载。而在 UDP 中,数据包会以一个恒定的速率发送,而不管网络状况如何。因此,在进行 UDP 测试时,设置一个合适的带宽限制可以防止由于发送速率过高而导致的网络拥塞。
  2. 丢包率测量:UDP 是一种不可靠的传输协议,数据包在传输过程中可能会丢失。在进行 UDP 测试时,设置带宽限制可以帮助我们观察在不同传输速率下的丢包率,从而评估网络设备和链路的性能。
  3. 服务质量评估:在实际应用中,许多实时通信应用(如 VoIP、在线游戏和实时视频流)使用的是 UDP 协议。这些应用对网络延迟和抖动的要求较高。通过设置不同的带宽限制,我们可以模拟不同场景下的实时通信质量,评估网络环境是否满足应用要求。

综上所述,在进行 UDP 测试时,设置客户端的带宽限制可以帮助我们更好地评估网络性能,发现潜在的问题,并为实际应用提供有价值的参考。

iperf3 -c 192.168.1.100 -u -b 100M

image.png 服务端 image.png 上面是将使用 UDP 协议进行网络性能测试,并将带宽限制为 100 Mbps。

启动多个并行流进行测试

#这将在 4 个并行 TCP 连接上进行网络性能测试。
iperf3 -c 192.168.1.100 -P 4

image.png 服务端 image.png

以反向模式运行测试,即服务器向客户端发送数据

#启动一个默认为 10 秒的反向 TCP 测试,服务器将向客户端发送数据。
iperf3 -c 192.168.1.100 -R

image.png 服务端 image.png

设置报告间隔,以秒为单位

#启动一个 TCP 测试,并每 2 秒报告一次吞吐量。
iperf3 -c 192.168.1.100 -i 2

image.png 服务端 image.png