iperf3 是常用的网络性能测试工具,可以测试:

  • TCP 带宽
  • UDP 带宽
  • 丢包率
  • 抖动
  • 多连接并发
  • 双向网络性能

典型使用场景:

客户端  <======== 网络 ========>  服务端
             iperf3

1. 安装 iperf3

Ubuntu / Debian

apt update
apt install -y iperf3

CentOS / Rocky Linux

dnf install -y iperf3

macOS

brew install iperf3

检查版本:

iperf3 --version

2. 启动服务端

在服务端执行:

iperf3 -s

默认监听:

TCP 5201

指定端口:

iperf3 -s -p 5202

后台运行:

iperf3 -s -D

如果有防火墙,需要开放端口:

ufw allow 5201/tcp

UDP 测试同样需要开放:

ufw allow 5201/udp

3. TCP 基础测试

客户端执行:

iperf3 -c 192.168.1.100

默认测试:

客户端 -> 服务端

持续 10 秒。

指定测试时间:

iperf3 -c 192.168.1.100 -t 30

每秒输出一次:

iperf3 -c 192.168.1.100 -i 1

4. 测试反向带宽

默认方向:

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 4

8 个连接:

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 30

UDP 重点关注:

Bitrate
Jitter
Lost/Total Datagrams

例如:

0.00-10.00 sec  119 MBytes  100 Mbits/sec
0.120 ms
15/85000 (0.018%)

主要指标:

指标含义
Bitrate实际吞吐
Jitter网络抖动
LostUDP 丢包
Lost %丢包率

实时音视频业务尤其需要关注:

丢包率 + Jitter

7. 测试不同 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 6000

10. 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 30

TCP 反向

iperf3 -c 192.168.1.100 -R -t 30

TCP 4 并发

iperf3 -c 192.168.1.100 -P 4 -t 30

TCP 8 并发

iperf3 -c 192.168.1.100 -P 8 -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

12. 推荐测试流程

测试一条网络链路时,可以依次执行:

# 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 Loss

13. 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反向测试
-uUDP 模式
-bUDP 发送带宽
-B指定源 IP
-JJSON 输出
-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
上传与下载差异

标签: none

添加新评论