在软路由(OpenWrt/Padavan)、NAS、树莓派、VPS 以及各类开发板上,网络带宽与流媒体连接质量是日常运维中最常排查的指标之一。

然而在终端测速时,经常会遇到以下尴尬情况:

  1. 依赖过重:传统的 speedtest-cli 或 fast-cli 通常基于 Python 或 Node.js 开发。在闪存只有 16MB/32MB 的路由器或极简容器(如 Alpine)里,根本腾不出空间来安装几百兆的运行环境。
  2. 二进制体积臃肿:即便部分工具用 Go 或 Rust 重写,编译出的单文件体积也动辄 15MB ~ 30MB,对内存和存储受限的嵌入式设备依然偏重。
  3. 架构支持不全或动态库依赖:官方二进制往往只覆盖常规 x86/ARM,很多经典的路由器架构(如 MIPS 小端 MT7621、MIPS 大端 AR9344、老旧 ARMv5/v6、新一代 RISC-V)很难找到现成可用文件;即使找到了,也经常遇到缺少 glibc/musl 或 OpenSSL 动态库报错的问题。
  4. 测速时长无法控制:这是我个人最核心的痛点。例如从单光猫拉出 2 条 1000M 宽带,想同时压测验证两条线是否都能持续跑满 1000M;市面上绝大多数测速工具默认只测 10~15 秒,往往还没达到网络稳态就结束了。能够自由设置测速时长,才能真正做好长时间的压力和稳定性测试。

为了解决这些问题,我用 AI + C 语言开源了两款专注轻量与高兼容的非官方第三方测速工具:

两款工具均采用纯 C 静态编译,体积仅几百 KB,内置轻量 TLS 协议栈,不依赖系统中的任何第三方库,下载即可直接运行。


一、支持平台与预编译包

每次在 GitHub 提交 Release,CI 会自动编译以下架构的静态单文件:

系统 / 架构二进制文件名示例适用设备
Linux x86_64*-linux-x86_64Intel / AMD 64位 PC、软路由、VPS、服务器
Linux aarch64*-linux-aarch64树莓派 4/5、ARM 软路由 (MT7981/MT7986/高通等)、甲骨文 ARM
Linux armhf*-linux-armhf树莓派 2/3、ARMv7 架构设备
Linux armel*-linux-armel老旧 ARMv5TE / ARMv6 嵌入式硬件
Linux mipsel*-linux-mipselMIPS 小端(红米 AC2100、新路由3 等 MT7621 路由器)
Linux mips*-linux-mipsMIPS 大端设备(Atheros AR9344 等)
Linux riscv64*-linux-riscv6464位 RISC-V 开发板与边缘设备
Linux i686*-linux-i68632位 x86 老机器
macOS*-darwin-arm64Apple Silicon Mac (M1 ~ M4)
Windows*-windows-x86_64.exe / *-windows-arm64.exeWindows 10/11 x64 及 ARM 版

二、完整参数列表速查

两款工具的参数设计保持了一致的逻辑:

参数说明默认值示例
-d <sec>测试持续时长(秒)10 秒-d 60(长压测 60 秒)
-t <threads>并发连接线程数4 线程-t 8(跑满千兆/万兆建议调大)
-U启用上传测试(先下载,再上传)仅测试下载-U
--only-upload仅测试上传(跳过下载测试)关--only-upload
-L列出附近可用测速服务器及实时延迟关-L
-s <ID/序号>指定测速服务器(Fast 为序号,Speedtest 为服务器 ID)自动择优-s 1 或 -s 24447
-u <URL>直接指定自定义测试目标 URL关-u https://...
-T <sec>TCP Socket 连接超时时间(秒)10 秒-T 5
-b <bytes>单块请求数据大小(字节)25MB默认无需修改
-h查看帮助说明--h

三、常用实战用法介绍

1. 默认快速测速

直接执行,程序会自动探测附近测速节点,并发 Ping 测出延迟最低的最优服务器,然后进行 10 秒下行测速:

# bb-fast (测试 Fast.com 网络)
./bb-fast-linux-x86_64
 
# bb-speedtest (测试 Speedtest.net 网络)
./bb-speedtest-linux-x86_64

2. 双宽带 / 多 WAN 长时间满载压力测试

如果你和我一样,需要验证单光猫两条千兆宽带是否都能持续跑满,或者排查晚高峰期网络是否会降速、丢包,可以使用 -d 延长测试时间,并用 -t 增加并发连接数:

# 持续测速 60 秒,并启用 8 线程并发拉流(更易压满千兆/2.5G 物理带宽)
./bb-speedtest-linux-x86_64 -d 60 -t 8
 
# 测试 120 秒,观察长时间流媒体下载稳定性
./bb-fast-linux-x86_64 -d 120 -t 8

小技巧:如果是双 WAN 路由,可以在不同终端里分别绑定不同的出口网卡或 IP 并发执行该命令,观察光猫总带宽能否同时被打满。请注意适度测速,避免长期高频占用公共节点带宽。

3. 查看附近服务器列表与延迟对比(-L)

很多时候我们想知道当前网络连接到周边各个机房的真实延迟,使用 -L 即可列出:

# 查看周边 Fast.com 节点及其实时 Ping 延迟
./bb-fast-linux-x86_64 -L
 
# 查看周边 Speedtest.net 节点名称、运营商及 ID
./bb-speedtest-linux-x86_64 -L

执行后会输出类似如下的列表:

Available servers:
  [1] Tokyo, Japan (15.2 ms)
  [2] Hong Kong (32.8 ms)
  [3] Singapore (58.4 ms)

4. 指定特定服务器测速(-s)

自动选优并不一定符合所有测试场景(例如你想测试跨省专线、或者特定国际出口的连通质量):

# Fast.com:根据 -L 列出的序号,指定第 2 个服务器测速
./bb-fast-linux-x86_64 -s 2
 
# Speedtest.net:指定特定服务器 ID 测速(例如指定某地电信/联通机房)
./bb-speedtest-linux-x86_64 -s 24447

5. 完整上下行测速与仅测上传

  • 完整双向测速(-U):
    # 下载完成后自动继续测试上传
    ./bb-speedtest-linux-x86_64 -U -d 15
  • 仅测试上传(--only-upload): 适合用于排查 NAS 异地备份、内网穿透推流、监控上传等纯上行受限场景,节省宝贵的下行测试时间:
    ./bb-speedtest-linux-x86_64 --only-upload -d 20

四、两款工具的应用场景区分

  • bb-fast:
    • 测试目标是 Fast.com 分布式网络;
    • 适合用来排查国际出口质量、出海代理节点带宽、流媒体分发 CDN 是否通畅;
    • 内置了动态 Token 解析与防过期兜底机制。
  • bb-speedtest:
    • 测试目标是 Speedtest.net;
    • 拥有极其庞大的国内各省市三大运营商(电信/移动/联通)机房节点;
    • 适合用来排查宽带签约物理速率验收、内网专线 QoS、国内对等机房时延;
    • 每次请求自动携带随机 UUID 参数,防止被运营商或代理缓存虚标。

五、极简下载与运行

无需安装任何依赖环境,直接从 GitHub Release 下载对应平台的可执行文件即可使用。

以常见的 ARM64(树莓派 4/5、常见软路由) 为例:

# 1. 下载 bb-fast
curl -sSL -O https://github.com/kxjhwbb/fast/releases/latest/download/bb-fast-linux-aarch64
chmod +x bb-fast-linux-aarch64
 
# 2. 下载 bb-speedtest
curl -sSL -O https://github.com/kxjhwbb/speedtest/releases/latest/download/bb-speedtest-linux-aarch64
chmod +x bb-speedtest-linux-aarch64
 
# 3. 运行测试(持续 30 秒,8 线程)
./bb-fast-linux-aarch64 -d 30 -t 8
./bb-speedtest-linux-aarch64 -d 30 -t 8

提示:如果是运行 OpenWrt 的 MT7621 小端路由器(如红米 AC2100、新路由 3 等),只需将文件名中的 aarch64 换成 mipsel 即可。


六、免责与商标声明 (Disclaimer)

  1. 非官方工具:bb-fast 与 bb-speedtest 为个人独立的开源第三方命令行测试工具,与 Netflix, Inc.、Fast.com、Ookla, LLC 或 Speedtest.net 没有任何官方隶属、合作、赞助、授权或背书关系。
  2. 商标权属:文中所述的 Netflix、Fast.com、Speedtest、Ookla 及其相关 Logo、图形标识与名称,均为其各自商标持有人(Netflix, Inc. 及 Ookla, LLC)的注册商标或商业标识。文中提及仅为描述兼容网络协议与客观功能之目的(规范性合理使用 / Nominative Fair Use)。
  3. 使用守则:本项目仅供个人网络质量诊断、链路排查及学习研究使用,严禁将其用于商业转售、恶意并发压测或任何违反各服务商使用协议的行为。请规范合理控制测速频次与时长,共同维护公共网络资源。

项目仓库

欢迎提交 Issue 和 PR: