官网地址: https://iperf.fr/

感兴趣的小伙伴可以去官网看看,本教程只介绍最基本最常用的使用方式:具体以官方为准~

iperf3简介

当使用iperf3进行网络测速时,可以通过在一个服务器上运行iperf3服务器端,然后在另一个客户端机器上运行iperf3客户端来测试两个设备之间的带宽和延迟情况。iperf3可以提供详细的网络性能数据,包括带宽、延迟、数据包丢失率等指标。

安装

linux端

  • debian/ubuntu

    apt install iperf3
  • centos

    yum install iperf3

windows端

下载地址

https://github.com/ar51an/iperf3-win-builds
#windows需要下载软件包

mac端

brew install iperf3
#brew是苹果端开源的软件包管理系统
​
sudo port install iperf3
#使用port install进行安装

安卓端

下载软件包apk,下载地址

https://github.com/davidBar-On/android-iperf3/

使用

启动服务器端

# 启动iperf3服务端
iperf3 -s -i 1 -p 5201
# 示例指令1 标准启动方式
​
iperf3 –s –p 1000 -D
# 示例指令2 以守护进程的方式启动,使用端口1000
  • -s 以服务器模式启动

  • -D 以守护进程模式运行(也就是后台启动,不阻塞当前命令行界面)

  • -p 定义端口号

  • -s 以服务器模式启动

  • -i 定义多少秒报告一次结果

客户端测速

下载测速

就是测试本地客户端使用服务器的下载速度(常用)

# 测试下载测速
iperf3 -c 156.251.xxx.xxx -R -P 1
# 客户端测试下载速度 -c表示是作客户端使用 -R表示反向也就是测试下载速度 -P是表示连接数为1(线程)(区分下-p和-P)
​
iperf3 -c 156.251.xxx.xxx -u -b 1000M -R
# -u表示udp传送方式 -b 1000M:设置UDP测试的带宽为1000Mbit/s。 -R见上面:就是下载测试
​
iperf3 -c 156.251.xxx.xxx -u –p 5501 -b 1000M –t 60 -R -P 10
# -t 60:设置测试的持续时间为60,也就是跑60个测试结果 -p 5501就是表示5501端口 -P是10是客户端流也就是多线程下载
​
iperf3 -c 156.251.xxx.xxx -O 2 -R -p 10028 -t 100 -i 1
# -O丢弃前两秒的测试结果(防止起速误差) -t然后持续100s测速 -i 1s输出一次测试结果 (推荐)
​
iperf3 -c 156.251.xxx.xxx -b 200M -i 1 -t 60 -l 300
# -b设置tcp窗口为200M -i表示1每秒打印一次结果,总计测试60s -l表示缓冲区长度为300字节

常见参数解释如下:

  • -c:指定服务器地址

  • -p:服务器的端口号

  • -u:使用udp协议(默认使用tcp连接)

  • -b:指定客户端通过UDP协议发送信息的带宽,默认值为1Mbit/s(TCP由拥塞控制算法决定:不需要设置)

  • -n:指定传输的字节数

  • -t:指定Iperf测试时间,默认10秒

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

  • -F:传输或接收特定的文件

  • -P:客户端到服务器的连接数,默认值为1

  • -T:指定ttl值

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

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

  • -J:来输出JSON格式测试结果

  • -R:反向传输(测试下载速度)

  • -m:输出结果以MB显示

  • -l:设置缓冲区大小

关于上面缓冲区的作用解释:

设置缓冲区大小为 300 字节的目的是控制 iperf3 每次发送和接收数据的大小。这可以影响网络性能测试的结果,因为不同的缓冲区大小可能会导致不同的网络性能表现。例如,较小的缓冲区可能会导致更高的 CPU 利用率,而较大的缓冲区可能会导致更高的内存利用率。

默认情况下,iperf3 的缓冲区大小是 128 KB。这对于大多数网络条件来说是一个合理的默认值。然而,如果你正在测试具有非常高带宽或非常低延迟的网络,或者你正在尝试优化特定的网络性能指标,那么你可能需要调整这个值。

上传测速(不常用)

也就是测试客户端向服务端发送数据的能力

# 默认是测试的上传速度
iperf3 -c 156.251.xxx.xxx
​
iperf3 -c 156.251.xxx.xxx -t 60 -P 2
# -t持续60秒 -P则为多线程2个线程
​
iperf3 –c 156.251.xxx.xxx -u -b 1000M -t 60
# upd协议1000M带框到服务器的上传测试,持续60秒

我将,点燃星海~