3、iPerf3 基础使用:安装与配置、TCP带宽测试命令、UDP带宽测试命令、常用参数详解
好,咱们直接进入正题。iPerf3 这工具,说白了就是网络工程师手里的“卷尺”。你想知道一条链路到底能跑多快?用它测一下就知道了。我这些年排查网络瓶颈,十次里有八次第一件事就是掏出 iPerf3。
3.1 安装与配置:别在这步卡住
安装其实没什么技术含量,但很多人一开始就栽在版本不匹配上。我强调一下:客户端和服务端的 iPerf3 版本必须一致,否则会报错或者结果不准。
Linux 安装
大多数发行版直接走包管理器就行。我个人习惯用 Ubuntu,一条命令搞定:
# Ubuntu / Debian
sudo apt-get install iperf3
# CentOS / RHEL
sudo yum install iperf3
# 或者从源码编译(我一般不推荐,除非你要改参数)
wget https://downloads.es.net/pub/iperf/iperf-3.11.tar.gz
tar -xzf iperf-3.11.tar.gz
cd iperf-3.11
./configure
make
sudo make install
Windows 安装
去官网下载二进制包,解压就能用。嗯,这里要注意:Windows 版没有注册成系统服务,你得手动在命令行里跑。
macOS 安装
用 Homebrew 最省事:
brew install iperf3
iperf3 -v 确认版本。我曾经遇到过系统自带的旧版 iPerf2 和新装的 iPerf3 冲突,结果测了半天数据全是错的。
3.2 TCP 带宽测试命令:最常用的场景
TCP 测试是 iPerf3 的默认模式。说白了就是模拟文件传输,看看 TCP 协议栈能跑多快。
基本命令结构
服务端先启动监听:
iperf3 -s
默认监听 5201 端口。客户端连上去:
iperf3 -c 192.168.1.100
就这么简单?对,但实际工作中没人这么用。为什么?因为默认只跑 10 秒,结果太粗糙。我一般会加几个参数:
# 服务端
iperf3 -s -p 5201
# 客户端(我常用的生产环境命令)
iperf3 -c 192.168.1.100 -p 5201 -t 30 -P 4 -i 1
解释一下:-t 30 跑 30 秒,-P 4 开 4 个并行流,-i 1 每秒打印一次结果。你想想看,单流测试很多时候测不出真实带宽,尤其是面对多核 CPU 或者链路聚合的场景。
3.3 UDP 带宽测试命令:测极限、看丢包
UDP 测试和 TCP 完全不同。TCP 有拥塞控制,会自动降速;UDP 不管这些,你给它多少带宽它就发多少。所以 UDP 测试更适合看链路的硬上限。
基本命令
# 服务端(和 TCP 一样)
iperf3 -s
# 客户端(指定 UDP 模式,设置目标带宽)
iperf3 -c 192.168.1.100 -u -b 1000M
-u 开启 UDP 模式,-b 1000M 表示以 1000 Mbps 的速率发包。这里有个坑:如果你设的带宽超过了链路实际容量,服务端会显示丢包率。
-b 2000M,结果丢包率飙到 40% 以上。这不是链路有问题,而是我强行塞了超过容量的数据。UDP 测试要逐步增加带宽,找到那个“刚好不丢包”的临界点。
UDP 测试结果怎么看?
服务端输出会包含这几项关键数据:
| 指标 | 含义 | 正常范围 |
|---|---|---|
| Jitter | 抖动(延迟变化) | < 1ms 优秀,< 5ms 可接受 |
| Lost/Total Datagrams | 丢包数 / 总包数 | 0% 最好,< 0.1% 可接受 |
| Bandwidth | 实际接收带宽 | 接近你设定的 -b 值 |
3.4 常用参数详解:这些你早晚用得上
iPerf3 的参数很多,但常用的就十几个。我按使用频率给你排个序:
必知参数(每次都用)
-c:客户端模式,后面跟服务器 IP-s:服务端模式-p:指定端口,默认 5201-t:测试时长,单位秒。我一般设 30 秒以上-i:结果打印间隔,单位秒。设 1 秒能看到实时波动
进阶参数(解决特定问题)
-P:并行流数。测多核 CPU 或链路聚合时很有用-R:反向模式。让服务端向客户端发包,测上行带宽-w:TCP 窗口大小。我调这个参数解决过高延迟下的吞吐问题-M:设置 MSS(最大报文段大小)。排查 MTU 问题时用-l:缓冲区长度。UDP 测试时调整包大小
-w 256K 把窗口调大,结果直接跑到 80Mbps。很多时候不是带宽不够,是 TCP 窗口没调对。
3.5 知识体系:一张图看懂 iPerf3 测试流程
下面这张图是我自己总结的,把 iPerf3 的核心逻辑串起来了:
这张图把整个测试流程串起来了。客户端发起连接,服务端接收,最后两端都会输出结果。我个人习惯看服务端的结果,因为那是实际接收到的数据,更准确。
3.6 实战避坑指南
最后分享几个我踩过的坑:
- 防火墙拦截:默认端口 5201 经常被防火墙挡住。记得先 telnet 一下端口通不通。
- CPU 瓶颈:单流测试跑不满带宽?看看 CPU 是不是已经 100% 了。加
-P 2或-P 4试试。 - 网卡 offload 特性:有些网卡开启了 TSO/GRO,测出来的带宽虚高。我一般会关掉再测一次做对比。
- 无线环境:Wi-Fi 测试结果波动极大。别只看一次结果,多跑几轮取中位数。
好了,这一章的内容就到这。工具装好了,命令会用了,参数也懂了。接下来就是多练,多试,慢慢你就能从数字里读出网络的故事。