RBMK is a CLI tool for performing low-level, scriptable network measurements.
-
Run commands you already know (e.g.,
rbmk dig,rbmk curl). -
Measure fundamental network operations: DNS, HTTP(S), TCP, TLS, and STUN.
-
Obtain structured logs in JSONL format for easy analysis using
--logs FILE. -
Organize measurements as portable shell scripts run using
rbmk sh. -
Support shell scripting with built-in commands like
rbmk tar, andrbmk mv. -
Get extensive help using
rbmk helpandrbmk tutorial.
RBMK is mostly useful when investigating network anomalies, including outages, misconfigurations, censorship, and performance issues.
Go 1.24.
go install -v -tags netgo github.com/rbmk-project/rbmk/cmd/rbmk@latestThese examples demonstrate how to use RBMK for common network measurements:
# Resolve a domain name
rbmk dig +short=ip example.com
93.184.215.14
# Make an HTTP request
rbmk curl -vo index.html https://example.com/
# Combine dig and curl for step-by-step measurement
addr=$(rbmk dig +short=ip example.com | rbmk head -n 1)
rbmk curl --resolve example.com:443:$addr https://example.com/
# Use --logs to get structured logs in JSONL format
rbmk dig --logs dns.jsonl +short=ip example.com
rbmk curl --logs http.jsonl -vo index.html https://example.com/For a quick introduction with more examples, run:
rbmk introFor comprehensive usage documentation, run:
rbmk tutorialRBMK supports the following build tags to customize the build:
| Feature Flag | Description |
|---|---|
netgo |
Use pure-Go functions instead of linking the C stdlib. |
rbmk_disable_markdown |
Disables Markdown rendering in help text, reducing binary size. |
You can pass those flags to go install or go build. For example:
go install -v -tags netgo,rbmk_disable_markdown github.com/rbmk-project/rbmk/cmd/rbmk@latest-
Core Measurement Commands:
curl,dig,nc,stun. -
Unix-like Commands for Scripting:
cat,head,mkdir,mv,rm,sh,tar. -
RBMK-Specific Commands for Scripting:
ipuniq,markdown,pipe,random,timestamp. -
Helper Commands:
intro,tutorial,version.
Each command supports the --help flag for detailed usage information.
For example:
rbmk curl --helpYou need GNU make installed. Run:
make releaseRun make without arguments to see all available targets.
Read the packages documentation at pkg.go.dev/rbmk-project/rbmk.
Documentation:
- docs/design: Design documents.
- docs/man: Manual pages for RBMK commands.
- docs/spec: Specification documents.
- docs/tutorial: Tutorials for using RBMK.
Main Entry Point:
- cmd/rbmk: The main RBMK command-line tool.
Go Packages:
- pkg/cli: CLI implementation.
- pkg/common: Common utilities and helpers.
- pkg/dns: DNS measurement implementation.
- pkg/x: Experimental Go packages.
Build System:
- GNUmakefile: Makefile for RBMK.
Contributions are welcome! Please submit pull requests using GitHub.
SPDX-License-Identifier: GPL-3.0-or-later