一、工具简介与背景
在数据中心、企业网络、云环境中,经常会遇到:
带宽跑不满?
文件传输慢?
VPN / 跨网段性能异常?
10G / 25G 网络验收?
这些问题都离不开一个核心能力:
精准测量“网络本身”的性能
而 iperf(尤其 iperf3) 正是业内标准工具。
二、iperf 测速原理
一句话讲透:
iperf 测的是“内存 → 网络 → 内存”的传输能力
2.1、工作机制
服务端(Server)
监听端口(默认 5201)
接收客户端数据
统计吞吐量
客户端(Client)
在内存中生成数据流
持续发送到服务端
2.2、数据路径
客户端内存 → 网卡 → 网络 → 网卡 → 服务端内存✔ 不涉及:
❌ 磁盘
❌ 文件系统
2.3、为什么这样设计?
排除干扰因素:
避免 SSD/HDD 成为瓶颈
避免文件系统影响
专注测“网络极限能力”
三、iperf 官方下载地址
官方项目主页
GitHub(iperf3 官方仓库)
https://github.com/esnet/iperf

Windows版本下载:

Linux:
直接用包管理器安装
四、Linux 安装(重点:含离线方案)
4.1、在线安装(Ubuntu / Debian)
sudo apt update
sudo apt install -y iperf3


4.2、在线安装(CentOS / Rocky / RHEL)
sudo yum install -y iperf3或:
sudo dnf install -y iperf34.3、编译安装(适合内网/国产化环境)
wget https://github.com/esnet/iperf/archive/refs/tags/3.x.tar.gz
tar -xvf 3.x.tar.gz
cd iperf-3.x
./configure
make
sudo make install五、Windows 安装
5.1、下载
从 GitHub Releases 下载:
iperf3.x.x-win64.zip
5.2、使用
解压后:
cd D:\iperf3直接运行:
iperf3.exe无需安装

5.3、防火墙放行
netsh advfirewall firewall add rule name="iperf3" dir=in action=allow protocol=TCP localport=5201
5.4、直接运行(无需安装)
启动服务端
iperf3.exe -s
客户端测试
iperf3.exe -c 192.168.1.10
六、典型使用方式(Windows & Linux通用)
6.1、点对点测速(最基础)
服务端
iperf3 -s客户端
iperf3 -c 192.168.1.10执行 iperf3 -c 时,默认只测一次,但持续时间是 10 秒。
修改测试时长
iperf3 -c 192.168.1.10 -t 60表示:
测 1次
持续 60秒
导出每次测试结果
iperf3 -c IP -P 4 -t 60 --logfile result.log

6.2、多线程压测(高带宽必用)
iperf3 -c 192.168.1.10 -P 4说明:
-P:并发流数量,注意是大写字母P10G/25G 网络必须使用

如果想自定义端口
客户端
iperf3 -c 192.168.1.10 -P 4 -p 5202那服务端必须这样开:
iperf3 -s -p 5202如果Windows自定义端口可选择放行端口范围
netsh advfirewall firewall add rule name="iperf3_range" dir=in action=allow protocol=TCP localport=5000-6000TCP(测极限带宽)
单TCP流有瓶颈:
TCP窗口限制
拥塞控制
CPU单核限制
所以:
多流 = 多条TCP连接 = 更容易跑满带宽
UDP(测丢包/质量)
-b ≈ 带宽的 80%~95%
6.3、UDP 测试(丢包/抖动)
iperf3 -c 192.168.1.10 -u -b 1G参数说明:
-u:UDP模式,不加默认是TCP-b:带宽(必须指定)

6.4、反向测试(测对端能力)
iperf3 -c 192.168.1.10 -R常用于:
判断哪端是瓶颈

6.5、指定端口
#客户端
iperf3 -c 192.168.1.10 -p 5202
#服务端
iperf3 -s -p 52026.6、长时间稳定性测试
#-t参数默认是秒
iperf3 -c 192.168.1.10 -t 60
6.7、指定带宽(限速测试)
iperf(iperf3)理论上没有“固定最大带宽限制”
能指定多大,取决于:
CPU能力 + 网卡带宽 + 系统网络栈 + 参数设置
如果电脑是1G网卡,即使配置-b 10G,但是实际也只会跑到1G
iperf3 -c 192.168.1.10 -b 100M
iperf3 -c 192.168.1.10 -b 1G
iperf3 -c 192.168.1.10 -b 10G七、MTU对测速的影响
7.1、MTU 影响的本质
MTU 决定的是:
每个数据包的大小举个直观对比
结论:
MTU越大 → 包越少 → CPU压力越小 → 吞吐越高
MTU越小 → 包越多 → 容易成为瓶颈
7.2、对 iperf 测速的具体影响
用 iperf 时:
情况1:MTU一致(正常)
1500 → 能跑满1G、10G(但CPU更高)
9000 → 更容易跑满高带宽(推荐)
情况2:MTU不一致(最危险)
典型问题:
丢包
降速
甚至完全不通
例如:
客户端:9000
交换机:1500结果:
❌ 分片
❌ 丢包
❌ iperf跑不满
7.3、交换机 MTU 应该设多少?
标准建议
MLAG / VXLAN 场景
必须更大:
≥ 9000(建议 9216)因为:
VXLAN 有额外封装(≈50字节)
如果不调大 → 会碎片化
7.4、VPN 场景 MTU 应该多少?
常见 VPN MTU 推荐
原因:
VPN会增加封装:
原始包 + 加密头 → 超过1500 → 分片不要直接用1500
建议:
1400 左右最稳7.5、验证 MTU 是否正确
方法1:ping 检测
28 字节 = IP头 + ICMP头,
ping -M do -s 8972 192.168.1.108972 + 28 = 9000
-M→ 控制是否允许分片-s→ 控制数据包大小
结果:
✔ 通 → MTU OK
❌ 不通 → MTU不一致
方法2:逐步测试
ping -M do -s 1472 IP # MTU 1500
ping -M do -s 8972 IP # MTU 9000Windows环境用-f和-l代替-M和-s参数,-f表示不允许分片
ping 192.168.1.10 -f -l 8972
八、典型使用场景
场景一:网络带宽验证
用途:
千兆 / 10G / 25G 网络验收
方法:
iperf3 -c 目标IP -P 4场景二:MLAG / 双核心网络验证
验证:
是否走双链路
是否负载均衡
方法:
多线程 + 多源IP测试
例如:
客户端:192.168.1.2 / 1.3 / 1.4
服务端:192.168.1.10
启动服务端
iperf3 -s不同源IP分别压测
iperf3 -c 192.168.1.10 -B 192.168.1.2 -P 4 -t 60
iperf3 -c 192.168.1.10 -B 192.168.1.3 -P 4 -t 60
iperf3 -c 192.168.1.10 -B 192.168.1.4 -P 4 -t 60场景三:跨网段/VLAN问题排查
验证:
路由是否正确
ACL是否限速
场景四:VPN / 专线质量测试
用 UDP:
iperf3 -c IP -u -b 100M看:
丢包
抖动
场景五:存储网络(iSCSI/NFS)
先用 iperf:
排除网络问题
再用 fio:测磁盘
九、iperf vs 实际传输
常见现象:
iperf:10G 跑满
拷贝文件:只有 300MB/s
原因:
磁盘瓶颈
协议开销
CPU限制
十、常见问题与优化建议
10.1、带宽跑不满
解决:
iperf3 -P 4 或 -P 810.2、CPU瓶颈
表现:
单核100%
解决:
增加线程
升级CPU
10.3、网络设备限制
检查:
交换机端口速率
MTU(是否支持9000)
是否限速策略
10.4、Windows测速偏低
原因:
网卡驱动
中断合并
RSS未开启
iperf 是测“网络极限能力”的标准工具(内存→内存)
不是测“文件传输速度”的工具(磁盘→磁盘)