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.
The "stable" version. That is, the one before the current stable.
You can find it at https://go.dev/dl/.
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