4、Iperf3实战:TCP吞吐量测试、UDP带宽与抖动测试、双向测试、多线程测试、反向模式测试
好,咱们直接进入正题。Iperf3 这工具,说白了就是网络性能的“照妖镜”。你WiFi调得再好,空口策略再花哨,一跑 Iperf3,真实水平全暴露。我这些年排查无线瓶颈,十次里有八次第一件事就是掏出 Iperf3。
这一章,咱们把 Iperf3 最常用的几个测试场景过一遍。TCP 吞吐量、UDP 带宽与抖动、双向测试、多线程、反向模式——每个我都会结合实战经验讲透。
4.1 TCP吞吐量测试
TCP 吞吐量测试是最基础的。它模拟的是你日常上网、看视频、传文件时的真实表现。WiFi 环境下,TCP 的拥塞控制算法对结果影响很大。
服务端启动:
iperf3 -s -p 5201
客户端启动:
iperf3 -c 192.168.1.100 -p 5201 -t 30
这里 -t 30 表示跑 30 秒。我个人习惯至少跑 60 秒,WiFi 信道波动大,短时间测试容易“撞大运”。
输出解读:
[ ID] Interval Transfer Bitrate
[ 5] 0.00-30.00 sec 112 MBytes 31.3 Mbits/sec sender
[ 5] 0.00-30.00 sec 112 MBytes 31.3 Mbits/sec receiver
看 receiver 行的 Bitrate,这就是实际吞吐量。如果 sender 和 receiver 差距很大,说明丢包重传严重——WiFi 环境常见。
4.2 UDP带宽与抖动测试
UDP 测试关注的是带宽上限和抖动。这对语音、视频会议这类实时业务特别重要。你想想看,Zoom 卡顿的时候,多半是 UDP 抖动超标了。
服务端:
iperf3 -s -p 5202
客户端:
iperf3 -c 192.168.1.100 -p 5202 -u -b 50M -t 30
-u 启用 UDP 模式,-b 50M 指定目标带宽 50 Mbps。
输出解读:
[ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams
[ 5] 0.00-30.00 sec 179 MBytes 50.0 Mbits/sec 0.000 ms 0/128000 (0%) sender
[ 5] 0.00-30.00 sec 179 MBytes 50.0 Mbits/sec 2.345 ms 0/128000 (0%) receiver
重点关注三个指标:
- Jitter(抖动): 一般要求 < 30ms。超过 50ms 语音就会明显断续。
- Lost(丢包率): 0% 最好,超过 1% 视频就会卡。
- 实际带宽: 看 receiver 行的 Bitrate,如果远低于
-b设定值,说明网络瓶颈了。
-b 不要设得比链路带宽还高。我曾经在 100M 链路上设 -b 200M,结果丢包 80%,AP 直接挂死。嗯,那场面挺尴尬的。
4.3 双向测试
WiFi 是半双工的,上下行互相影响。单向测试只能看一半真相。双向测试才能暴露真实问题。
客户端命令:
iperf3 -c 192.168.1.100 -p 5203 -d -t 30
-d 就是双向模式。服务端不用额外参数,正常启动就行。
输出解读:
[ ID] Interval Transfer Bitrate
[ 5] 0.00-30.00 sec 112 MBytes 31.3 Mbits/sec sender
[ 5] 0.00-30.00 sec 112 MBytes 31.3 Mbits/sec receiver
[ 7] 0.00-30.00 sec 89.3 MBytes 25.0 Mbits/sec sender
[ 7] 0.00-30.00 sec 89.3 MBytes 25.0 Mbits/sec receiver
你会看到两组数据。第一组是客户端→服务端,第二组是服务端→客户端。WiFi 环境下,上下行往往不对称。我见过下行 300M、上行只有 50M 的奇葩情况——后来发现是客户端天线有问题。
4.4 多线程测试
单线程测试只能压一个 CPU 核心。现代设备都是多核的,多线程才能榨干性能。特别是 WiFi 6 的 OFDMA,多线程更能模拟真实场景。
客户端命令:
iperf3 -c 192.168.1.100 -p 5204 -P 4 -t 30
-P 4 表示 4 个并行线程。
输出解读:
[ ID] Interval Transfer Bitrate
[ 5] 0.00-30.00 sec 28.0 MBytes 7.83 Mbits/sec sender
[ 7] 0.00-30.00 sec 28.0 MBytes 7.83 Mbits/sec sender
[ 9] 0.00-30.00 sec 28.0 MBytes 7.83 Mbits/sec sender
[ 11] 0.00-30.00 sec 28.0 MBytes 7.83 Mbits/sec sender
[SUM] 0.00-30.00 sec 112 MBytes 31.3 Mbits/sec sender
看 [SUM] 行的总吞吐量。如果单线程 30M,4 线程还是 30M,说明瓶颈在空口或 CPU 单核性能。如果 4 线程能跑到 100M+,说明设备多核能力不错。
4.5 反向模式测试
反向模式,说白了就是让服务端发数据,客户端收。默认是客户端发、服务端收。反向模式能测试服务端的上行能力。
客户端命令:
iperf3 -c 192.168.1.100 -p 5205 -R -t 30
-R 就是反向模式。
输出解读:
[ ID] Interval Transfer Bitrate
[ 5] 0.00-30.00 sec 112 MBytes 31.3 Mbits/sec sender
[ 5] 0.00-30.00 sec 112 MBytes 31.3 Mbits/sec receiver
注意看,这里的 sender 是服务端,receiver 是客户端。反向模式常用于测试 AP 到终端的下行性能。我遇到过 AP 下行 500M、上行只有 200M 的情况——后来发现是 AP 的 TX 队列配置有问题。
4.6 知识体系总览
下面这张图,把 Iperf3 的测试类型、关键参数和适用场景串起来了。你对照着看,思路会更清晰。
4.7 测试结果对比表
最后,我把这五种测试模式的关键指标整理成了一张表。你以后做测试报告,直接套用这个格式就行。
| 测试模式 | 核心参数 | 关注指标 | WiFi 典型值 | 常见问题 |
|---|---|---|---|---|
| TCP 吞吐量 | -t -p |
Bitrate (receiver) | 30-300 Mbps | 重传率高、吞吐量波动大 |
| UDP 带宽/抖动 | -u -b |
Jitter、Lost% | Jitter < 30ms, Lost < 1% | 抖动超标、丢包严重 |
| 双向测试 | -d |
上下行 Bitrate 对比 | 上下行差异 < 20% | 上下行严重不对称 |
| 多线程测试 | -P |
SUM 总吞吐量 | 单线程的 2-4 倍 | 多线程无提升(CPU 瓶颈) |
| 反向模式 | -R |
服务端→客户端 Bitrate | 与正向差异 < 30% | 反向远低于正向(AP 下行问题) |
iperf3 -c 目标IP -p 端口 --version 确认版本。然后按 TCP→UDP→双向→多线程→反向的顺序跑一遍,全程记录。这样一份完整的 WiFi 性能画像就出来了。