iperf3 基础使用
最近在帮同时远程搭一个简单的家庭网络环境,但是用测速网站怎么都只有 50M 左右,宽带师傅来直接接光猫又能跑 1000M,灰常奇怪。打算测一测内网的带宽情况时,发现没个工具可用(换了个 be5100 没问题了)。
谁曾想几天后在看 NAS 测评时发现了 iperf3,这不是巧了。
1 iperf3 介绍
iperf3 是一款基于 TCP/UDP 协议的网络性能测试工具,主要用于测量网络的带宽、延迟、抖动和丢包率等关键指标。它采用“客户端-服务端”架构,需要在两台测试设备上分别运行对应模式,支持跨平台使用(Linux、macOS、Windows 均兼容),且完全免费开源。
核心优势:
命令简洁,上手成本低;
支持 TCP 吞吐量、UDP 抖动/丢包等多维度测试;
跨平台兼容性强,无多余依赖;
测试结果直观,可直接用于网络性能评估。
Github 地址(编译使用):https://github.com/esnet/iperf
下载地址:https://iperf.fr/iperf-download.php
2 Windows 下的安装与配置
[!Note]
Linux 下可以直接使用 apt、yum 进行安装,如果源显示无此软件那就用源码安装。
根据自己的系统下载所需版本,我主要在 Windows 上用,所以我下载的是 Windows 版本的~~(可能要小翻一下墙)~~:


下载完成后,解压内容如下:

可以看到默认只有一个 exe 可执行程序,在 CMD 中使用 iperf3.exe -v 验证结果:

3 iperf3 常用命令
iperf3 必须以“服务端(Server)+ 客户端(Client)”的模式运行,先启动服务端,再启动客户端连接测试。
[!Note]
工具使用基础前提:
服务端设备:需知道其 IP 地址(局域网 IP 或公网 IP);
网络连通性:确保客户端和服务端之间网络通畅,且未拦截 iperf3 默认端口(5201);
测试逻辑:服务端被动监听,客户端主动发起连接并进行测试。
3.1 TCP 带宽测试
TCP 测试主要用于测量网络的最大吞吐量(即实际可用带宽),默认测试时长 10 秒。
启动服务端(在一台设备上执行):iperf3 -s,-s表示启动服务端模式(server)。启动成功后,会显示类似信息: Server listening on 5201。

启动客户端连接测试(在另一台设备上执行):iperf3 -c 服务端IP,-c` 表示启动客户端模式(client),后面跟服务端的 IP 地址。

测试完成后,客户端会输出详细结果,核心关注 Bitrate(比特率),即实际带宽。例如[ 5] 0.00-10.01 sec 9.66 GBytes 8.29 Gbits/sec,表示 10 秒内测试的吞吐量为 8.29 Gbps。
3.2 UDP 延迟与丢包测试
UDP 协议不保证可靠传输,常用于测试实时网络(如视频通话、游戏)的延迟、抖动和丢包率。测试时需要指定带宽(-b 参数)。
启动服务端(和 TCP 服务端命令一致):iperf3 -s
启动客户端 UDP 测试:iperf3 -c 服务端IP -u -b 100M
-u:启用 UDP 模式(默认是 TCP 模式);
-b 100M:指定测试带宽为 100 Mbps(可根据网络实际情况调整,如 50M、200M)。

测试完成后,客户端结果核心关注 3 个指标:
Bitrate:UDP 实际发送带宽;
Jitter:延迟抖动(越小越好,实时网络建议 < 50ms);
Loss:丢包率(越小越好,实时网络建议 < 1%)。
3.3 自定义测试时长与输出间隔
默认测试时长 10 秒,若想延长测试时间(如测试稳定性),可使用 -t 参数;若想实时查看测试进度,可使用 -i 参数指定输出间隔:
# 客户端命令:测试 30 秒,每 2 秒输出一次结果(TCP 模式)
iperf3 -c 10.0.0.128 -t 30 -i 2
# UDP 模式同理
iperf3 -c 10.0.0.128 -u -b 100M -t 30 -i 2

参数说明:
-t 30:测试时长 30 秒(time);
-i 2:每 2 秒输出一次中间结果(interval)。
3.4 多线程并发测试
默认是单线程测试,若想模拟多用户并发访问场景,可使用 -P 参数指定线程数(适用于高带宽网络,如千兆、万兆网络):
# 客户端命令:启动 4 个线程并发测试 TCP 带宽
iperf3 -c 10.0.0.128 -P 4

参数说明:-P 4 表示启动 4 个并发线程(parallel)。测试结果会显示每个线程的吞吐量,以及总吞吐量。
4 常用参数速查表
整理了基础使用中最常用的参数,方便快速查阅: