在软路由(OpenWrt/Padavan)、NAS、树莓派、VPS 以及各类开发板上,网络带宽与流媒体连接质量是日常运维中最常排查的指标之一。
然而在终端测速时,经常会遇到以下尴尬情况:
- 依赖过重:传统的
speedtest-cli或fast-cli通常基于 Python 或 Node.js 开发。在闪存只有 16MB/32MB 的路由器或极简容器(如 Alpine)里,根本腾不出空间来安装几百兆的运行环境。 - 二进制体积臃肿:即便部分工具用 Go 或 Rust 重写,编译出的单文件体积也动辄 15MB ~ 30MB,对内存和存储受限的嵌入式设备依然偏重。
- 架构支持不全或动态库依赖:官方二进制往往只覆盖常规 x86/ARM,很多经典的路由器架构(如 MIPS 小端 MT7621、MIPS 大端 AR9344、老旧 ARMv5/v6、新一代 RISC-V)很难找到现成可用文件;即使找到了,也经常遇到缺少 glibc/musl 或 OpenSSL 动态库报错的问题。
- 测速时长无法控制:这是我个人最核心的痛点。例如从单光猫拉出 2 条 1000M 宽带,想同时压测验证两条线是否都能持续跑满 1000M;市面上绝大多数测速工具默认只测 10~15 秒,往往还没达到网络稳态就结束了。能够自由设置测速时长,才能真正做好长时间的压力和稳定性测试。
为了解决这些问题,我用 AI + C 语言开源了两款专注轻量与高兼容的非官方第三方测速工具:
- 🚀 bb-fast:兼容 Fast.com 网络节点的第三方轻量客户端
👉 GitHub 仓库:https://github.com/kxjhwbb/fast - 🚀 bb-speedtest:兼容 Speedtest.net 测速协议的第三方轻量客户端
👉 GitHub 仓库:https://github.com/kxjhwbb/speedtest
两款工具均采用纯 C 静态编译,体积仅几百 KB,内置轻量 TLS 协议栈,不依赖系统中的任何第三方库,下载即可直接运行。
一、支持平台与预编译包
每次在 GitHub 提交 Release,CI 会自动编译以下架构的静态单文件:
| 系统 / 架构 | 二进制文件名示例 | 适用设备 |
|---|---|---|
| Linux x86_64 | *-linux-x86_64 | Intel / 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-mipsel | MIPS 小端(红米 AC2100、新路由3 等 MT7621 路由器) |
| Linux mips | *-linux-mips | MIPS 大端设备(Atheros AR9344 等) |
| Linux riscv64 | *-linux-riscv64 | 64位 RISC-V 开发板与边缘设备 |
| Linux i686 | *-linux-i686 | 32位 x86 老机器 |
| macOS | *-darwin-arm64 | Apple Silicon Mac (M1 ~ M4) |
| Windows | *-windows-x86_64.exe / *-windows-arm64.exe | Windows 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_642. 双宽带 / 多 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 244475. 完整上下行测速与仅测上传
- 完整双向测速(
-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)
- 非官方工具:
bb-fast与bb-speedtest为个人独立的开源第三方命令行测试工具,与 Netflix, Inc.、Fast.com、Ookla, LLC 或 Speedtest.net 没有任何官方隶属、合作、赞助、授权或背书关系。 - 商标权属:文中所述的
Netflix、Fast.com、Speedtest、Ookla及其相关 Logo、图形标识与名称,均为其各自商标持有人(Netflix, Inc. 及 Ookla, LLC)的注册商标或商业标识。文中提及仅为描述兼容网络协议与客观功能之目的(规范性合理使用 / Nominative Fair Use)。 - 使用守则:本项目仅供个人网络质量诊断、链路排查及学习研究使用,严禁将其用于商业转售、恶意并发压测或任何违反各服务商使用协议的行为。请规范合理控制测速频次与时长,共同维护公共网络资源。
项目仓库
欢迎提交 Issue 和 PR:
- bb-fast:https://github.com/kxjhwbb/fast
- bb-speedtest:https://github.com/kxjhwbb/speedtest