iperf3
ESnet 维护的主动网络吞吐测试工具,通过可控客户端与服务器端测量 TCP/UDP 带宽、丢包与相关参数。
[!info] related notes
- 相关主题:
- 相关 MOC:
- 相关 howto:
iperf3
这是什么
iperf3 是 ESnet / Lawrence Berkeley National Laboratory 维护的主动网络性能测试工具。与公共 Speedtest 不同,它通常要求你控制测试两端:一端运行服务器,一端运行客户端,然后直接测这两个端点之间的 TCP / UDP 传输能力。
一句话定位:如果你想知道“客户端、中转、落地 VPS 之间真正能跑多少吞吐”,iperf3 是最可靠的基础工具之一。
为什么它对代理节点特别重要
公共一键脚本往往连接随机或固定公共测试服务器,结果混入测试点负载、选路和共享出口因素。
而代理架构经常是:
本地 -> 机场入口 / 中转 -> 自建落地 -> Internet
这时最有价值的是把链路拆开测:
本地 -> 中转
中转 -> 落地
本地 -> 落地(直连基线)
如果可以在各端部署 iperf3,就能定位到底哪一段限制了吞吐。
基本使用
服务端
在目标服务器上:
iperf3 -s
默认监听 TCP 5201。
客户端
iperf3 -c <server-ip>
默认会从客户端向服务器发送 TCP 流量。
测反向方向
iperf3 -c <server-ip> -R
-R 让服务器向客户端发送数据,可以看到两个方向是否不对称。
增加并行流
iperf3 -c <server-ip> -P 4 -t 30
多并发流可以帮助判断:
- 单 TCP 流受窗口 / RTT 影响;
- 多流能否更接近链路总容量;
- 限速是按连接还是按端口 / IP。
但不要为了“跑出更高数字”盲目堆几十条并发流;实际代理业务如果主要是少量连接,单流和低并发结果更有代表性。
UDP 测试
iperf3 -c <server-ip> -u -b 50M
UDP 模式适合观察:
- 在指定发送速率下的丢包;
- 抖动;
- 实时业务可能承受的网络质量。
例如逐步尝试 20M、50M、100M,观察从哪个速率开始明显丢包,比单纯追求最大值更有意义。
如何评价结果
TCP 吞吐
关注:
- 发送 / 接收 Mbps;
- 是否稳定;
- 单流与多流差距;
- 正向与反向是否严重不对称;
- 重传是否异常高。
如果套餐写 1 Gbps,但同区域可控测试端点之间稳定只有 30 Mbps,就应该继续排查限速、CPU、拥塞和虚拟机网络规格。
UDP 丢包与抖动
对游戏、语音、QUIC 等场景,稳定低丢包往往比峰值吞吐更重要。
同一条线路上:
- 0~0.1% 稳定丢包通常非常好;
- 持续出现可见丢包需要结合业务敏感程度判断;
- 如果提高发送速率后丢包突然大量增加,说明开始超过当前链路可承载能力。
这些不是绝对 SLA 阈值,应结合测试时长、协议和真实业务。
用它定位代理链瓶颈
假设:
你 -> 机场中转 -> Oracle 落地
可以分别测试:
你 -> 中转;中转 -> Oracle;你 -> Oracle直连;- 最后再测试真实代理链的应用层下载。
例如:
你 -> 中转 500 Mbps
中转 -> Oracle 45 Mbps
你 -> Oracle 180 Mbps
最终代理链 42 Mbps
那么瓶颈几乎可以锁定在“中转 -> Oracle”这一段,而不是 Oracle CPU 或本地宽带。
与延迟工具的区别
iperf3 主要测数据传输能力,不是逐跳路由诊断。
因此:
- 延迟 / 路由:NextTrace;
- 长时间逐跳丢包:MTR;
- 综合线路初筛:NetQuality;
- 吞吐和 UDP 传输质量:iperf3。
一条线路可以 Ping 很低但吞吐很差,也可以吞吐很高但抖动严重,所以必须分开看。
CPU 可能成为瓶颈
如果 iperf3 跑到一定速率后 CPU 单核满载,结果可能不再代表物理链路上限。
测试高带宽 VPS 时,应同步看:
top
htop
尤其是在低性能 ARM / 老旧共享 CPU、很高 PPS 或启用额外加密隧道时。
公共 iperf3 服务器的局限
互联网上有公共 iperf3 服务,但它们可能:
- 并发用户很多;
- 有速率限制;
- 位置 / ASN 不稳定;
- 临时下线。
如果目的是严肃比较 VPS,优先使用自己控制的另一台服务器或可信测试机。
安全注意
- 不要长期把
iperf3 -s暴露在公网而毫无防火墙限制; - 测试会真实消耗带宽和流量额度;
- 云厂商按流量计费时,大流量双向测试可能产生费用;
- 不要在生产高峰做长时间满带宽压测。
可以用安全组 / 防火墙仅放行自己的测试源 IP,测试完成后关闭端口。
与 YABS 的关系
YABS 内部也会调用 iperf3 对若干公共测试节点测速,但那适合快速综合验货。
当你需要自己指定两个端点、拆分中转链路、做正反向和 UDP 测试时,应直接使用 iperf3。