一、工具简介


iperf 是一款开源网络性能测试工具,支持 TCP/UDP 协议,可测量带宽、吞吐量、延迟抖动和丢包率等关键指标。主要特点包括:


  • 跨平台支持:Windows、Linux、macOS、Android 等
  • 多线程测试:3.16 + 版本支持多线程,突破单 CPU 核心限制
  • 灵活参数配置:可自定义测试时长、数据包大小、并发连接数等
  • 详细报告输出:提供带宽、延迟、抖动、丢包率等数据


二、版本区别(iperf2 vs iperf3)


特性

iperf2

iperf3

线程模型

多线程

3.16 + 支持多线程

默认端口

5001

5201

并发连接

支持多客户端同时连接

一次仅支持一个客户端

双向测试

-d(同时)/-r(顺序)

--bidir(需 3.7 + 版本)

Windows 支持

官方支持

非官方支持

新特性


支持 MSS/MTU 报告、JSON 输出、零拷贝模式


三、安装方法


Windows 11


  1. 下载地址:https://iperf.fr/iperf-download.php 或 GitHub release
  2. 解压后得到iperf3.execygwin1.dll
  3. 直接在命令提示符中运行


Linux


bash

# Ubuntu/Debian
sudo apt-get update && sudo apt-get install iperf3# CentOS/RHEL
yum install iperf3 -y# 源码安装
wget https://downloads.es.net/pub/iperf/iperf-3.0.6.tar.gz
tar zxvf iperf-3.0.6.tar.gz
cd iperf-3.0.6
./configure && make && make install


macOS


bash

brew install iperf3


四、核心参数详解


参数

作用

示例

-s

启动服务器模式

iperf3 -s

-c

客户端模式,指定服务器 IP

iperf3 -c 192.168.1.100

-p

指定端口号

-p 5001

-t

测试时长(秒)

-t 60(持续 60 秒)

-i

报告间隔(秒)

-i 5(每 5 秒输出一次)

-u

使用 UDP 协议

-u

-b

设置带宽(UDP 模式)

-b 100M(100Mbps)

-P

并发连接数

-P 4(4 个并行流)

-w

TCP 窗口大小

-w 2M(2MB)

-l

数据包大小

-l 1400(1400 字节)

-R

反向测试(服务器发送数据)

-R

--json

JSON 格式输出

--json


五、常用测试场景示例


1. 基本 TCP 带宽测试


bash

# 服务端
iperf3 -s -p 5201# 客户端(测试60秒,每5秒报告)
iperf3 -c 192.168.1.100 -p 5201 -t 60 -i 5


2. 多线程 TCP 测试(突破单流瓶颈)


bash

# 客户端(4个并行流)
iperf3 -c 192.168.1.100 -P 4 -t 60


3. UDP 性能测试(含丢包率和抖动)


bash

# 服务端
iperf3 -s -p 5201# 客户端(100Mbps带宽,1400字节包)
iperf3 -c 192.168.1.100 -u -b 100M -l 1400 -t 60 --get-server-output


4. 反向测试(服务器发送数据)


bash

iperf3 -c 192.168.1.100 -R -t 30


5. 长时间稳定性测试


bash

# 客户端(测试12小时,输出到日志)
iperf3 -c 192.168.1.100 -t 43200 -i 60 --logfile stability_test.log


六、测试结果解读


TCP 测试示例输出:


plaintext

[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   201 MBytes   169 Mbits/sec    0             sender
[  5]   0.00-10.05  sec   198 MBytes   165 Mbits/sec                  receiver


  • Transfer:传输数据总量
  • Bitrate:实际带宽(sender 发送端 /receiver 接收端)
  • Retr:TCP 重传次数(越低越好)


UDP 测试关键指标:


  • Jitter:延迟抖动(实时业务需 < 50ms)
  • Lost/Total:丢包率(VoIP 需 < 1%,视频流需 < 3%)


七、注意事项


  1. 防火墙配置:需开放对应端口(默认 5201)
  2. 参数匹配:客户端与服务器端口必须一致
  3. 测试时长:建议至少 60 秒,避免瞬时波动影响结果
  4. 多线程使用:高带宽链路(>10Gbps)建议 - P 10-20
  5. 窗口大小优化:长距离链路建议增大 - w 参数(公式:窗口大小 = 带宽 ×RTT)


八、高级应用


  • JSON 输出iperf3 -c <IP> -J > result.json,便于自动化分析
  • CPU 亲和性-A 0,1绑定特定 CPU 核心,避免调度干扰
  • 零拷贝模式-Z使用 sendfile 系统调用,降低 CPU 占用
  • 自定义拥塞控制--linux-congestion cubic(仅 Linux 支持)


九、常见问题解决


  1. 连接被拒绝:检查防火墙规则和服务器状态
  2. 带宽未达预期
  • 增加并发数(-P)
  • 调大 TCP 窗口(-w)
  • 检查中间设备限速

  1. UDP 丢包率高
  • 降低带宽目标(-b)
  • 减小数据包大小(-l)
  • 检查网络 QoS 配置