第3章:iperf3 入门——安装、基本命令与TCP/UDP测试模式
说实话,我入行那会儿做带宽测试,用的还是老掉牙的 FTP 大文件拷贝法。传个大文件,掐秒表算时间,再手动除一下……那叫一个原始。后来接触了 iperf3,才感觉打开了新世界的大门。这工具,说白了就是网络性能测试的瑞士军刀。今天我就带你把它摸透。
3.1 安装 iperf3:别在这步翻车
iperf3 的安装其实很简单,但不同系统有点小区别。我踩过的坑是:有些系统源里的版本太老,导致客户端和服务端握手失败。
Linux(以 Ubuntu/CentOS 为例)
# Ubuntu / Debian
sudo apt-get install iperf3
# CentOS / RHEL
sudo yum install epel-release
sudo yum install iperf3
嗯,这里要注意:CentOS 默认源里没有 iperf3,必须先装 EPEL。我曾经在一台刚装好的 CentOS 7 上直接敲 yum install iperf3,结果提示找不到包。当时还以为是网络问题,折腾了半天……后来才发现是源没配。
macOS
brew install iperf3
Windows
去官网下载预编译的 exe 文件,或者用 choco install iperf3。我个人习惯把 iperf3.exe 扔到 C:\Windows\System32 里,这样命令行直接就能调用了。
iperf3 -v,如果能看到版本号,说明装好了。看不到?检查一下环境变量。
3.2 基本命令结构:记住这个公式
iperf3 的命令其实就一个套路:
iperf3 -s # 服务端(Server)
iperf3 -c [服务器IP] # 客户端(Client)
你想想看,这跟现实中的测速很像。服务端开着等你来连,客户端主动发起测试。我刚开始学的时候,总记混哪个是服务端哪个是客户端。后来我给自己编了个口诀:「S 是 Server,也是 Stay,它在那等着;C 是 Client,也是 Connect,它去连别人。」
常用参数我列个表,你收藏一下:
| 参数 | 含义 | 我的备注 |
|---|---|---|
-s |
服务端模式 | 默认监听 5201 端口 |
-c |
客户端模式,后跟服务器 IP | 必填参数 |
-p |
指定端口 | 如果服务端改了端口,客户端也要对应改 |
-t |
测试时长(秒) | 默认 10 秒,我一般设 30 秒 |
-i |
结果输出间隔(秒) | 设 1 秒,能看到实时波动 |
-u |
使用 UDP 模式 | 默认是 TCP |
-b |
UDP 目标带宽 | 比如 -b 100M |
3.3 TCP 测试模式:最常用的场景
TCP 测试是 iperf3 的默认模式。说白了,就是看你的网络链路能跑多快,同时也能看出 TCP 窗口、延迟这些因素对吞吐量的影响。
实战步骤
假设服务端 IP 是 192.168.1.100:
服务端(先启动):
iperf3 -s
客户端(发起测试):
iperf3 -c 192.168.1.100 -t 30 -i 1
这条命令的意思是:连到 192.168.1.100,测 30 秒,每 1 秒打印一次结果。
[ ID] Interval Transfer Bitrate
[ 5] 0.00-30.00 sec 3.45 GBytes 987 Mbits/sec重点看 Bitrate 那一列,987 Mbits/sec 说明你的千兆链路基本跑满了。
我记得有一次帮客户排查问题,他们抱怨说「内网拷贝文件慢」。我上去一测,TCP 吞吐量只有 200 Mbps。后来发现是网线质量太差,换了一根 Cat6 的线,直接飙到 940 Mbps。你看,iperf3 能帮你快速定位到底是网络问题还是其他问题。
3.4 UDP 测试模式:看丢包和抖动
TCP 测试看的是吞吐量,UDP 测试看的是丢包率和抖动。为什么?因为 UDP 没有重传机制,丢了就是丢了。这对实时业务(比如视频会议、VoIP)特别重要。
实战步骤
服务端:
iperf3 -s -u
客户端:
iperf3 -c 192.168.1.100 -u -b 100M -t 30 -i 1
这里 -b 100M 的意思是:以 100 Mbps 的速率发送 UDP 数据包。如果不设 -b,iperf3 默认只会发 1 Mbps,那测出来肯定没丢包,没有参考价值。
-u 参数。我曾经只给客户端加了 -u,服务端没加,结果服务端一直报错,我还以为是防火墙的问题……
输出解读
[ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams
[ 5] 0.00-30.00 sec 357 MBytes 100 Mbits/sec 0.123 ms 0/256000 (0%)
重点关注三个指标:
- Jitter(抖动): 延迟的变化量。一般小于 1ms 算优秀,超过 5ms 就要注意了。
- Lost(丢包率): 括号里的百分比。0% 最好,超过 1% 就会影响实时业务。
- Bitrate: 实际接收到的带宽。如果发送 100M,接收只有 80M,说明链路有瓶颈。
3.5 一张图看懂 iperf3 测试流程
下面这张 SVG 图,是我自己画的 iperf3 核心逻辑。你一看就明白:
3.6 避坑指南:我踩过的三个坑
- 防火墙没关: 服务端启动了,客户端就是连不上。检查一下防火墙,iperf3 默认用 5201 端口。我习惯先
telnet [IP] 5201测试一下端口通不通。 - 版本不一致: 服务端是 iperf3 3.1,客户端是 3.9,有时候会握手失败。尽量保持两端版本一致。
- UDP 测试忘了设 -b: 默认 1 Mbps 的速率,测出来当然没丢包。你以为网络很好,其实只是压力不够大。
-b 720M,这样能看出真实链路的承载能力。
好了,这一章的内容就这些。iperf3 入门其实不难,关键是理解 TCP 和 UDP 测试分别看什么指标。你先把安装和基本命令跑通,后面章节我们会深入讲多线程、反向测试、双向测试这些高级玩法。
想要更多资料,联系可可