介绍
什么是 iPerf3 呢?iPerf3 是一个开源的网络性能测试工具,可以在 Linux、Windows 等系统上运行,常用于测试局域网、专线、云服务器的带宽、延迟、丢包率等指标。当然由于是设备间的测试,所以存在木桶效应。
iPerf3 的主要特点有:
- 多线程:可以同时进行多数据流传输测试,充分利用网络带宽。
- 多平台:支持在 Linux、Windows 和 Mac 等系统上运行。
- 双向测试:支持客户端与服务器之间的单向和双向测试,便于评估网络性能。
- 参数灵活:支持众多参数,可以精准控制性能测试条件,满足众多网络性能测试需求。
安装
Windows
从下面选择一个可以打开的地址,下载需要的文件。
https://files.budman.pw
https://github.com/ar51an/iperf3-win-builds/releases
这里馆长从 Github 下载,下载完成后将文件解压出来。
现在我们将解压出来的所有文件复制到下面文件路径中,你可以复制后直接在资源管理器的路径栏中粘贴下面内容,随后按下回车键。
C:\Windows\System32
现在我们按下 Win
+ R
键,然后输入 cmd
将命令提示符打开,随后输入 iperf3 -v
如果提示了当前版本信息那么就算是安装完成了。
Linux
在 Linux 上安装 iPerf3 可以直接使用包管理工具。
# Debian / Ubuntu / Mint ..
sudo apt install iperf3
# Fedora / CentOS / Red Hat / Rocky ..
yum install iperf3
Mac
在 Mac 上安装 Iperf3 也可以直接通过包管理工具。
HomeBrew 的安装和配置可以参考南京大学开源镜像站的 Homebrew 软件仓库镜像使用帮助。
# HomeBrew
brew install iperf3
# MacPorts
sudo port install iperf3
使用
服务器
首先我们需要在一端以服务器模式启动,例如测试云服务器与本地之间的网络情况,那么在云服务器上就以服务器模式启动。
# 以服务器模式启动(默认为 5201 端口)
iperf3 -s
# 以服务器模式启动,绑定到 127.0.0.1 地址
iperf3 -s -B 127.0.0.1
# 以服务器模式,以守护进程模式启动,监听 5000 端口
iperf3 -s -D -p 5000
服务器常见参数
- -s, --server : 以服务器模式运行。
- -p, --port <端口> : 监听/连接的端口。
- -B, --bind <地址> : 绑定到 <地址> 这个地址。
- -D, --daemon : 作为守护进程运行服务器(这里就是后台启动,不会造成命令行阻塞)。
客户端
现在我们在另外一个设备以客户端模式运行,这样我们就可以连接服务器了。
客户端向服务器上传(默认)
# 以客户端模式运行,连接到 10.0.1.201 服务器(默认为 5201 端口)上传数据
iperf3 -c 10.0.1.201
# 持续上传数据 30 秒,并且 10 秒输出一次信息
iperf3 -c 10.0.1.201 -t 60 -i 10
# 连接到 10.0.1.201 服务器的 5000 端口,并以 8 线程进行上传测试
iperf3 -c 10.0.1.201 -p 5000 -P 8
客户端从服务器下载(更为常用)
# 以客户端模式运行,连接到 10.0.1.201 服务器(默认为 5201 端口)下载数据
iperf3 -c 10.0.1.201 -R
# 以 4 线程进行下载测试
iperf3 -c 10.0.1.201 -R -P 4
# 连接到 10.0.1.201 服务器的 5000 端口,持续 30 秒以 4 线程进行下载测试,并且 10 秒输出一次信息
iperf3 -c 10.0.1.201 -R -p 5000 -t 60 -P 4 -i 10
# 丢弃前 2 秒的测速信息(减少起速的误差)进行下载测试
iperf3 -c 10.0.1.201 -R -O 2
# 以 UDP 协议,100Mbits/s 进行下载测试
iperf3 -c 10.0.1.201 -R -u -b 100M
客户端常见参数
- -c, --client <地址> : 以客户端模式运行,连接到 <地址>。
- -p, --port <端口> : 监听/连接的端口。
- -u, --udp : 使用 UDP 协议,而不是 TCP 协议。
- -O, --omit <秒数> : 进行相应秒数的预测试,并省略预测试统计信息。
- -t, --time : 持续传输时间(秒,默认10秒)。
- -V, --verbose : 更详细的输出信息。
- -P, --parallel <线程数> : 运行的并行客户端流数量。
扩展资料
参数介绍
# 服务器或客户端参数
-p, --port <端口> : 监听/连接的服务器端口。
-B, --bind <地址> : 绑定到 <地址> 这个地址
-F, --file <文件路径> : 发送 / 接收指定文件。
-I, --pidfile <文件路径> : 写入 PID 文件。
-f, --format <格式> : 报告格式:K|k、M|m、G|g、T|t。
-i, --interval <时间> : 定期吞吐量报告之间的间隔时间(秒)。
-h, --help : 显示帮助消息并退出。
-J, --json : 以 JSON 格式输出。
-V, --verbose : 更详细的输出。
-v, --version : 显示版本信息并退出。
--logfile <文件路径> : 将输出发送到日志文件。
--rcv-timeout <时间> : 接收数据的空闲超时时间(默认 120000 毫秒)。
--forceflush : 每个间隔强制刷新输出。
--json-stream : 以行分隔的 JSON 格式输出。
--timestamps <=format> : 在每行输出开始时输出时间戳(参照 strftime(3),例如 --timestamps=%H:%M:%S)。
# 服务器参数
-s, --server : 以服务器模式运行
-D, --daemon : 作为守护进程运行服务器(这里就是后台启动,不会造成命令行阻塞)。
-1, --one-off : 处理一个客户端连接后退出
--idle-timeout <时间> : 在 <时间> 秒后重启闲置的服务器,以防其卡住(默认 - 无超时)
--use-pkcs1-padding : 使用 PKCS1 填充,风险自负
--time-skew-threshold : 服务器和客户端在身份验证过程中的时间偏差阈值(单位:秒)
--rsa-private-key-path : 用于解密身份验证凭据的 RSA 私钥路径
--authorized-users-path : 包含用户凭据的配置文件路径
--server-bitrate-limit #<KMG>[/#] : 服务器的总比特率限制(默认 0 = 不限制) (可选的斜杠和数字表示平均总数据速率的时间间隔。 默认是 5 秒)
# 客户端参数
-u, --udp : 使用 UDP 协议而不是 TCP 协议
-S, --tos N : 设置 IP 服务类型 0-255。 常用的八进制和十六进制前缀可以使用, 即 52、064 和 0x34 都指定同一个值。
-O, --omit N : 进行 N 秒的预测试,并省略预测试统计信息
-t, --time : 传输时间(秒,默认 10 秒)
-T, --title str : 在每行输出前加上此字符串
-n, --bytes #<KMG> : 传输的字节数(例如 10G)
-l, --length #<KMG> : 读取或写入的缓冲区长度 (默认 TCP 为 128KB,UDP 为动态或 1460KB)
-c, --client <地址>[%<dev>] : 以客户端模式运行,连接到 <地址> (选项<dev>相当于--bind-dev <dev>)
-w, --window #<KMG> : 设置发送/接收的套接字缓冲区大小 (间接设置TCP窗口大小)
-M, --set-mss #<KMG> : 设置 TCP/SCTP 最大报文段大小(MTU - 40字节)
-N, --no-delay : 设置 TCP/SCTP 无延迟,禁用 Nagle 算法
-Z, --zerocopy : 使用“零拷贝”数据发送方法
-R, --reverse : 在反向模式下运行(服务器发送,客户端接收)
-b, --bitrate #<KMG>[/#] : 目标比特率(比特/秒)0表示无限制(默认 UDP 为 1 Mbit/sec,TCP为无限制)(可选斜杠和数据包计数用于突发模式)
-P, --parallel <线程数> : 运行的并行客户端流数量
-4, --version4 : 仅使用 IPv4
-6, --version6 : 仅使用 IPv6
-k, --blockcount #<KMG> : 传输的块数(数据包)
--bidir : 以双向模式运行,客户端和服务器同时发送、接收数据。
--dscp N or --dscp val : 设置 IP dscp 值,范围为 0-63 或符号。 数值可以用十进制、八进制和十六进制指定(见 --tos 以上)。
--username : 身份验证的用户名
--cport <port> : 绑定到特定客户端端口(TCP 和 UDP,默认:临时端口)
--pacing-timer #<KMG> : 设置节奏的定时器,单位微秒(默认1000)
--dont-fragment : 设置 IPv4 的“禁止分片”标志
--extra-data str : 客户端和服务器 JSON 中包含的数据字符串
--connect-timeout # : 控制连接设置的超时时间(毫秒)
--get-server-output : 从服务器获取结果
--repeating-payload : 在有效载荷中使用重复模式,而不是 随机有效载荷(如 iperf2)
--udp-counters-64bit : 在 UDP 测试数据包中使用 64 位计数器
--rsa-public-key-path : 用于加密身份验证凭据的 RSA 公钥路径
第三方服务器
有时候我们需要更大带宽的 iPerf3 服务器,这时候可以尝试从下面的地址中寻找合适的。
https://github.com/R0GGER/public-iperf3-servers
https://iperf3serverlist.net
https://iperf.fr/iperf-servers.php