iperf3网络性能测试工具指南
工具简介
iperf3 是一款专业的开源网络性能测试工具,用于主动测量IP网络所能达到的最大带宽。它支持调整时序、缓冲区和协议(TCP、UDP、SCTP)等多种参数,并能报告带宽、延迟抖动、丢包率等关键网络性能指标。
核心功能与特点
- 多协议支持:支持 TCP、UDP、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 |
Windows
- 从官方站点iperf.fr下载Windows版本iperf3
- 解压压缩包
- 在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 | 从服务端获取测试结果报告 |
高级使用技巧
- 大带宽测试建议:进行高带宽测试时(如千兆以上),建议使用 -P 参数开启多线程,以更充分地利用带宽。例如:iperf3 -c 192.168.1.34 -P 10
- UDP测试深入了解质量:进行UDP测试时,除了带宽,还需关注抖动(Jitter) 和丢包率(Lost/Total Datagrams),这些是衡量网络质量的重要指标
- 测试时长设置:短时间测试可能无法反映网络持续性能,建议使用 -t 参数适当延长测试时间(如60秒或300秒),以获得更稳定的平均值
- 结果输出与分析:结合 -i 参数(报告间隔)和 -t 参数(总时长),可以观察网络性能在时间维度上的变化。使用 -J 参数输出JSON格式,便于脚本解析和自动化处理
参数速查表
下表汇总了核心参数以便快速查阅:
| 类别 | 参数 | 说明 |
|---|---|---|
| 模式 | -s | 服务器模式 |
| -c |
客户端模式 | |
| 协议 | -u | 使用UDP协议 |
| 带宽 | -b | 目标带宽 (UDP/TCP) |
| 时间 | -t | 测试时长 (秒) |
| 并行 | -P | 并行流数量 |
| 报告 | -i | 报告间隔 (秒) |
| -f | 报告输出单位 | |
| -J | JSON格式输出 | |
| 窗口 | -w | 设置TCP窗口大小 |
| 缓冲 | -l | 设置缓冲区长度 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 L.S.W!
评论