首页/网络/网络排障速查/无 iperf3 时的带宽测量替代

无 iperf3 时的带宽测量替代

受限环境(生产机不允许装工具)下的替代方案:nc 做 TCP 灌流、curl 下载大文件、dd + nc 计时,或用系统自带 scp 观察速率。

网络排障速查网络更新于 2026-10-13

无 iperf3 时的带宽测量是什么

受限环境(生产机不允许安装新软件、也没有测试对端)里测带宽,只能借用系统已有工具:nc 做 TCP 灌流、curl 下载大文件看速率、dd 配合 nc 计时、scp 观察传输速度。这些方法测出的是『够不够用』而非精确基准,结果里混入了协议、磁盘与服务端开销,与 iperf3 的净吞吐不能直接比较。

基本信息

适用平台Linux 通用(nc、curl、dd、scp 通常预装)
测量口径应用层可用带宽,含协议与磁盘开销
关键注意全零数据在压缩链路上会虚高,需用随机数据
替代关系无法替代 iperf3 的精确基准,仅用于可用性判断

典型使用场景

  • 生产机不能装工具:先用现有命令回答『带宽够不够』
  • 临时验证扩容效果:传输同一文件对比前后耗时
  • 排查是否需要专业测量:先粗测定位方向,再申请测试窗口
  • 容器与精简镜像环境:多数镜像自带 curl,可直接测量
  • 跨机房传输评估:用真实大文件测端到端可用速率

替代方案

替代方案
# 接收端:丢弃所有收到的数据,只测吞吐
nc -l 9000 > /dev/null
# 发送端:用零数据灌流(若路径有压缩设备会虚高)
dd if=/dev/zero bs=1M count=1024 2>/dev/null | nc 10.0.0.5 9000
# 用随机数据避免压缩带来的虚高
openssl rand 512000000 > /tmp/rand.bin; cat /tmp/rand.bin | nc 10.0.0.5 9000
# curl 测下载速率
curl -sS -o /dev/null -w 'speed=%{speed_download} B/s\n' http://10.0.0.5/big.bin
# scp 观察实际传输速率
scp big.bin user@10.0.0.5:/tmp/

方法对照

方法测的是主要偏差来源
nc 灌流单向 TCP 吞吐nc 实现差异、单流窗口限制
curl 下载HTTP 可用速率服务端与磁盘开销、协议头部
scp 传输加密通道可用速率加解密 CPU 开销
dd 计时磁盘与管道吞吐本机磁盘成为瓶颈
nc 的实现差异较大:传统 netcat 用 nc -l 监听,ncat 与部分 BSD 实现参数不同,动手前先用 nc -h 或 man 确认本机用法,避免在接收端就失败。
用全零数据在带压缩或去重的链路上测,会得到明显虚高的结果:需要准确数值时改用随机数据,或者安排 iperf3 的正式测试窗口。

易错点

  • 用全零数据在有压缩的链路上测出虚高带宽:结论偏乐观,容量规划失准
  • 把 curl 下载速率当链路容量:其中包含服务端与磁盘瓶颈
  • nc 参数按错实现书写:接收端没起来,测出的是『零带宽』
  • 忽略单流窗口限制:长肥管道上单流测不出真实容量
  • 把粗测结果当作验收数据:替代工具无法替代专业测量工具的精度

数据来源与参考

  • man 1 nc
  • curl 手册:-w speed_download
  • OpenSSH 文档:scp

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌