4、带宽测试实战:使用iPerf3进行TCP/UDP带宽测试、单流与多流测试、双向测试、结果解读
带宽测试,说白了就是看看你的专线到底能跑多快。
我见过太多人买了100M的专线,结果实际只能跑20M。运营商说「线路没问题」,你拿什么去怼?这时候iPerf3就是你的武器。
4.1 准备工作:装好iPerf3
iPerf3是目前最主流的带宽测试工具。它采用客户端-服务器模式工作。一台机器当服务器,另一台当客户端,客户端往服务器发流量。
安装很简单:
# Linux (CentOS/RHEL)
yum install iperf3 -y
# Linux (Ubuntu/Debian)
apt install iperf3 -y
# macOS
brew install iperf3
# Windows
# 去官网下载exe,或者用scoop: scoop install iperf3
我个人习惯在服务器端和客户端都装好,然后先启动服务端。
4.2 TCP带宽测试:最常用的场景
先启动服务端:
iperf3 -s -p 5201
-s 表示服务器模式,-p 指定端口。默认端口就是5201,但如果你跑多条测试,建议换端口避免冲突。
客户端发起测试:
iperf3 -c 192.168.1.100 -p 5201 -t 30
-c 后面跟服务器IP,-t 指定测试时长(秒)。我一般跑30秒,太短数据不稳定,太长浪费时间。
输出结果长这样:
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-30.00 sec 356 MBytes 99.6 Mbits/sec 0 sender
[ 5] 0.00-30.00 sec 356 MBytes 99.6 Mbits/sec receiver
关键看三个指标:
- Bitrate:实际带宽,单位Mbps。99.6 Mbps说明你的100M专线基本跑满了。
- Retr:重传次数。0说明网络质量很好。如果这个数字很大,说明有丢包或拥塞。
- Transfer:总传输数据量。配合时间可以反推带宽。
4.3 UDP带宽测试:看极限和抖动
TCP有拥塞控制,会自动降速。UDP不会,它只管发。所以UDP测试能看出网络的真实极限。
服务端启动方式一样:
iperf3 -s -p 5201
客户端加个 -u 参数:
iperf3 -c 192.168.1.100 -u -b 100M -t 30
-b 指定目标带宽。我设了100M,看看能不能发过去。
输出结果:
[ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams
[ 5] 0.00-30.00 sec 357 MBytes 99.8 Mbits/sec 0.023 ms 0/262144 (0%)
UDP测试多了两个关键指标:
- Jitter:抖动,单位毫秒。0.023 ms非常优秀。超过1 ms就要注意了。
- Lost/Total:丢包率。0%说明网络很干净。超过0.1%对实时业务就有影响了。
-b 设得比实际带宽大,丢包率会飙升。我曾经帮一个客户排查视频会议卡顿,他专线标称50M,我UDP打60M,丢包率直接到15%。后来降到45M,丢包率0.01%。这说明运营商给的带宽有水分。
4.4 单流与多流测试
单流就是只开一个TCP连接。多流就是同时开多个连接。
为什么要测多流?因为很多应用(比如Web服务、文件传输)会建立多条连接。单流跑不满带宽的情况很常见。
单流测试:
iperf3 -c 192.168.1.100 -P 1 -t 30
-P 指定并行流数。-P 1 就是单流。
多流测试:
iperf3 -c 192.168.1.100 -P 4 -t 30
输出结果会显示每个流的情况,最后汇总:
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-30.00 sec 89.2 MBytes 24.9 Mbits/sec 2
[ 7] 0.00-30.00 sec 89.5 MBytes 25.0 Mbits/sec 1
[ 9] 0.00-30.00 sec 89.1 MBytes 24.9 Mbits/sec 3
[ 11] 0.00-30.00 sec 89.3 MBytes 25.0 Mbits/sec 2
[SUM] 0.00-30.00 sec 357 MBytes 99.8 Mbits/sec 8
你看,单流只能跑25M,但4个流加起来能跑100M。这说明什么?
- 要么是TCP窗口限制,单流无法充分利用带宽
- 要么是中间设备(比如防火墙、负载均衡)对单流有限速
- 要么是服务器网卡队列不够深
4.5 双向测试:上下行一起测
很多专线是上下行不对称的。比如企业宽带,下行100M,上行可能只有20M。双向测试能同时测出上下行的真实性能。
加个 -d 参数:
iperf3 -c 192.168.1.100 -d -t 30
输出结果会分两部分:
[ ID] Interval Transfer Bitrate
[ 5] 0.00-30.00 sec 356 MBytes 99.6 Mbits/sec sender
[ 5] 0.00-30.00 sec 356 MBytes 99.6 Mbits/sec receiver
[ 7] 0.00-30.00 sec 71.2 MBytes 19.9 Mbits/sec sender
[ 7] 0.00-30.00 sec 71.2 MBytes 19.9 Mbits/sec receiver
上面是客户端到服务器(下行),下面是服务器到客户端(上行)。
你看,下行99.6M,上行19.9M。这跟运营商承诺的100M/20M完全吻合。
4.6 结果解读:别只看数字
拿到结果后,我一般按这个顺序分析:
- 看Bitrate是否达标:跟合同带宽对比。差太多就找原因。
- 看Retr是否过高:TCP重传超过1%就要警惕。超过5%基本可以断定网络有问题。
- 看Jitter和丢包:UDP测试中,Jitter超过1ms或丢包超过0.1%,对VoIP和视频会议就有明显影响。
- 对比单流和多流:如果多流能跑满而单流不能,说明需要优化TCP参数或检查中间设备。
- 对比上下行:不对称太严重,可能是链路问题或运营商限速。
4.7 知识体系:一张图看懂
下面这张图总结了iPerf3带宽测试的核心逻辑:
这张图把测试协议、流模式、测试方向、结果解读串在了一起。你每次做测试前,可以对照这张图确认自己覆盖了哪些维度。
4.8 实战总结
带宽测试不是跑个数字就完事。你得理解每个参数的含义,知道不同场景下该用什么模式。
- 日常验证:TCP单流 + 多流,跑30秒
- 极限测试:UDP打满带宽,看丢包和抖动
- 全面检查:双向测试,上下行一起看
- 问题定位:对比单流和多流,对比TCP和UDP
嗯,掌握了这些,你就能拿着iPerf3的结果去跟运营商「友好沟通」了。