iperf3 网络性能测试
iperf3 是常用的网络性能测试工具,可以测试:
- TCP 带宽
- UDP 带宽
- 丢包率
- 抖动
- 多连接并发
- 双向网络性能
典型使用场景:
客户端 <======== 网络 ========> 服务端
iperf31. 安装 iperf3
Ubuntu / Debian
apt update
apt install -y iperf3CentOS / Rocky Linux
dnf install -y iperf3macOS
brew install iperf3检查版本:
iperf3 --version2. 启动服务端
在服务端执行:
iperf3 -s默认监听:
TCP 5201指定端口:
iperf3 -s -p 5202后台运行:
iperf3 -s -D如果有防火墙,需要开放端口:
ufw allow 5201/tcpUDP 测试同样需要开放:
ufw allow 5201/udp3. TCP 基础测试
客户端执行:
iperf3 -c 192.168.1.100默认测试:
客户端 -> 服务端持续 10 秒。
指定测试时间:
iperf3 -c 192.168.1.100 -t 30每秒输出一次:
iperf3 -c 192.168.1.100 -i 14. 测试反向带宽
默认方向:
Client -> Server增加:
-R测试:
Server -> Client例如:
iperf3 -c 192.168.1.100 -R测试公网服务器时,建议正向和反向都跑一次:
iperf3 -c 1.2.3.4
iperf3 -c 1.2.3.4 -R这样可以分别观察上传和下载能力。
5. 多线程测试
单连接可能无法跑满高带宽链路。
例如使用 4 个并发连接:
iperf3 -c 192.168.1.100 -P 48 个连接:
iperf3 -c 192.168.1.100 -P 8常见测试方式:
iperf3 -c 192.168.1.100 -P 4 -t 30适合测试:
- 千兆网络
- 跨公网链路
- 高延迟网络
- 单 TCP 流无法跑满的场景
6. UDP 测试
使用:
-u开启 UDP 测试。
例如测试 100 Mbps:
iperf3 -c 192.168.1.100 \
-u \
-b 100M测试 500 Mbps:
iperf3 -c 192.168.1.100 \
-u \
-b 500M \
-t 30UDP 重点关注:
Bitrate
Jitter
Lost/Total Datagrams例如:
0.00-10.00 sec 119 MBytes 100 Mbits/sec
0.120 ms
15/85000 (0.018%)主要指标:
| 指标 | 含义 |
|---|---|
| Bitrate | 实际吞吐 |
| Jitter | 网络抖动 |
| Lost | UDP 丢包 |
| Lost % | 丢包率 |
实时音视频业务尤其需要关注:
丢包率 + Jitter7. 测试不同 UDP 带宽
可以逐步增加:
iperf3 -c 192.168.1.100 -u -b 10M
iperf3 -c 192.168.1.100 -u -b 50M
iperf3 -c 192.168.1.100 -u -b 100M
iperf3 -c 192.168.1.100 -u -b 500M
iperf3 -c 192.168.1.100 -u -b 1G观察什么时候开始明显出现:
丢包
Jitter 增加
实际吞吐下降可以大致判断链路的稳定承载能力。
8. 指定客户端网卡/IP
服务器有多块网卡时,可以指定源 IP:
iperf3 -c 192.168.1.100 \
-B 192.168.2.10适合测试:
eth0
eth1
内网
公网
专线
VPN分别对应的网络性能。
9. 指定端口
服务端:
iperf3 -s -p 6000客户端:
iperf3 -c 192.168.1.100 -p 600010. JSON 输出
方便脚本采集:
iperf3 -c 192.168.1.100 -J保存到文件:
iperf3 -c 192.168.1.100 -J > iperf.json适合:
- 自动化监控
- 网络巡检
- Prometheus 数据采集
- CI 网络性能测试
11. 常用测试组合
TCP 单连接
iperf3 -c 192.168.1.100 -t 30TCP 反向
iperf3 -c 192.168.1.100 -R -t 30TCP 4 并发
iperf3 -c 192.168.1.100 -P 4 -t 30TCP 8 并发
iperf3 -c 192.168.1.100 -P 8 -t 30UDP 100M
iperf3 -c 192.168.1.100 -u -b 100M -t 30UDP 500M
iperf3 -c 192.168.1.100 -u -b 500M -t 3012. 推荐测试流程
测试一条网络链路时,可以依次执行:
# TCP 上传
iperf3 -c 192.168.1.100 -P 4 -t 30
# TCP 下载
iperf3 -c 192.168.1.100 -P 4 -R -t 30
# UDP 100M
iperf3 -c 192.168.1.100 -u -b 100M -t 30
# UDP 500M
iperf3 -c 192.168.1.100 -u -b 500M -t 30重点观察:
TCP:
- Bandwidth
- Retr
- 上传/下载差异
UDP:
- Bitrate
- Jitter
- Packet Loss13. TCP Retr 是什么
TCP 测试中经常看到:
Retr表示:
TCP Retransmissions
TCP 重传次数例如:
[SUM] 0.00-10.00 sec 1.08 GBytes 928 Mbits/sec 82 sender其中:
82表示发生了 82 次重传。
如果重传很多,可能存在:
- 网络丢包
- 链路拥塞
- 网卡错误
- MTU 问题
- Wi-Fi 干扰
- 中间设备性能不足
正常情况下:
Retr 越少越好14. 注意事项
iperf3 测的是网络,不是磁盘
iperf3 数据主要在内存中生成:
Memory -> Network -> Memory因此结果基本不受磁盘性能影响。
单线程跑不满不代表网络有问题
例如万兆网络:
iperf3 -c server可能只能跑:
3~5 Gbps但:
iperf3 -c server -P 8可能可以达到:
9+ Gbps需要结合:
RTT
TCP Window
CPU
单流性能综合判断。
公网测试结果不等于运营商标称带宽
公网链路中还存在:
ISP
路由路径
跨网
跨省
跨境
拥塞
QoS所以 iperf3 测到的是:
两台机器之间当前路径的实际性能15. 常用参数速查
| 参数 | 作用 |
|---|---|
-s | 服务端模式 |
-c | 客户端模式 |
-p | 指定端口 |
-t | 测试时间 |
-i | 输出间隔 |
-P | 并发连接数 |
-R | 反向测试 |
-u | UDP 模式 |
-b | UDP 发送带宽 |
-B | 指定源 IP |
-J | JSON 输出 |
-D | 服务端后台运行 |
总结
日常测试网络性能,最常用的几个命令基本就是:
# TCP 上传
iperf3 -c SERVER -P 4
# TCP 下载
iperf3 -c SERVER -P 4 -R
# UDP
iperf3 -c SERVER -u -b 100M
# 长时间测试
iperf3 -c SERVER -P 4 -t 60如果主要排查直播、音视频、VPN、跨公网链路,除了带宽,还要重点关注:
TCP Retr
UDP Packet Loss
UDP Jitter
上传与下载差异