工具简介

iperf3 是一款专业的开源网络性能测试工具,用于主动测量IP网络所能达到的最大带宽。它支持调整时序、缓冲区和协议(TCP、UDP、SCTP)等多种参数,并能报告带宽、延迟抖动、丢包率等关键网络性能指标。

核心功能与特点

  • 多协议支持:支持 TCPUDP、SCTP(支持 IPv4 和 IPv6)
  • 性能指标测量
    • 带宽 (Bandwidth):测量网络最大吞吐量
    • 抖动 (Jitter):数据包延迟的变化,尤其适用于UDP测试
    • 丢包率 (Packet Loss):适用于UDP测试,统计丢失的数据包比例
  • 客户端/服务器模式:采用C/S架构,测试时需同时运行服务端和客户端程序
  • 参数灵活调整:支持调整数据包大小、测试时长、并行流数量、TCP窗口大小等
  • 结果输出多样:支持常规文本输出,也可使用 -J 参数以 JSON格式 输出,便于自动化处理

安装指南

Linux

sudo apt-get install iperf3

交叉编译

如果编译的版本是3.19.1,编译过程报错va_list参考iperf 3.19: missing header #1890解决

wget https://github.com/esnet/iperf/archive/refs/tags/3.19.1.tar.gz
# 解压源码
tar -xvf 3.19.1.tar.gz
cd iperf-3.19.1/

# 配置编译环境
./configure \
--host=arm-sigmastar-linux-uclibcgnueabihf \
CC=arm-sigmastar-linux-uclibcgnueabihf-gcc \
CXX=arm-sigmastar-linux-uclibcgnueabihf-g++ \
CFLAGS="-static" --prefix=`pwd`/my-install
# 编译并安装,二进制文件路径为 my-install/bin/iperf3
make
make install

Windows

  1. 从官方站点iperf.fr下载Windows版本iperf3
  2. 解压压缩包
  3. 在CMD或PowerShell中,切换到解压目录即可使用 iperf3 命令

macOS

brew install iperf3

基本使用

iperf3 采用客户端/服务器模式。服务端负责接收数据,客户端负责发送数据

启动服务端

在服务端机器上执行以下命令,默认监听 5201 端口:

iperf3 -s
  • -s 表示以服务器模式运行
  • 可使用 -p 指定特定端口,例如 iperf3 -s -p 9999

启动客户端进行测试

在客户端机器上执行命令连接服务端

TCP 带宽测试

基本的TCP测试能测出链路的最大TCP带宽

iperf3 -c <服务器IP地址>

示例:iperf3 -c 192.168.1.34 -i 1 -t 10 表示测试10秒,每1秒输出一次报告

UDP 带宽测试

UDP测试能测出链路的极限带宽、时延抖动和丢包率

iperf3 -u -c <服务器IP地址> -b <目标带宽>

示例:iperf3 -c 192.168.1.34 -u -b 100M -i 1 -t 10 表示以100Mbps带宽发送UDP流,测试10秒

  • -u 表示使用UDP协议
  • -b 用于指定UDP模式的目标带宽。如不指定,默认是1Mbps。可设为 0 表示不限制带宽

常用参数详解

通用参数

参数 说明
-p,–port 指定服务器端口
-i, –interval 设置每次报告之间的时间间隔(秒)
-t, –time 设置传输的总时间(秒),默认10秒
-f, –format 设置报告输出单位:K(Kbits), M(Mbits), K(KBytes), M(MBytes)等
-J, –json 以JSON格式输出结果
–logfile 将输出写入到日志文件
-h, –help 显示帮助信息

服务端专用参数

参数 说明
-s, –server 运行在服务器模式
-D, –daemon 在后台以守护进程模式运行Iperf

客户端专用参数

参数 说明
-c, –client 运行在客户端模式,后接服务器地址
-u, –udp 使用UDP协议(默认使用TCP)
-b, –bandwidth 设置目标带宽(bits/sec),对于UDP可加K, M等后缀,TCP默认为无限制
-t, –time 设置传输时间(秒)
-P, –parallel 设置并行连接的线程数,用于模拟多路并发。例如 -P 10 表示使用10个并发线程
-R, –reverse 反向模式测试(服务端发送,客户端接收)
-l, –len 设置读写缓冲区的长度
-O, –omit 跳过前N秒的测试,以避免测试开始时的抖动影响
–get-server-output 从服务端获取测试结果报告

高级使用技巧

  1. 大带宽测试建议:进行高带宽测试时(如千兆以上),建议使用 -P 参数开启多线程,以更充分地利用带宽。例如:iperf3 -c 192.168.1.34 -P 10
  2. UDP测试深入了解质量:进行UDP测试时,除了带宽,还需关注抖动(Jitter) 和丢包率(Lost/Total Datagrams),这些是衡量网络质量的重要指标
  3. 测试时长设置:短时间测试可能无法反映网络持续性能,建议使用 -t 参数适当延长测试时间(如60秒或300秒),以获得更稳定的平均值
  4. 结果输出与分析:结合 -i 参数(报告间隔)和 -t 参数(总时长),可以观察网络性能在时间维度上的变化。使用 -J 参数输出JSON格式,便于脚本解析和自动化处理

参数速查表

下表汇总了核心参数以便快速查阅:

类别 参数 说明
模式 -s 服务器模式
-c 客户端模式
协议 -u 使用UDP协议
带宽 -b 目标带宽 (UDP/TCP)
时间 -t 测试时长 (秒)
并行 -P 并行流数量
报告 -i 报告间隔 (秒)
-f 报告输出单位
-J JSON格式输出
窗口 -w 设置TCP窗口大小
缓冲 -l 设置缓冲区长度