Skip to main content

RMBT network measurement client — performs ping, download, and upload speed tests against an RMBT measurement server

Project description

rmbt-client (Python)

RMBT network measurement client written in Python. Performs ping, download, and upload phases against an RMBT measurement server and submits results to the control server.

Requirements

  • Python 3.7+
  • No third-party dependencies (stdlib only: ssl, socket, threading, urllib)

Usage

python -m rmbt_client --host https://measure.example.com

Run with a specific thread count and duration:

python -m rmbt_client --host https://measure.example.com --threads 4 --duration 10

Skip TLS verification against a local test server:

python -m rmbt_client --host https://localhost:8080 --no-tls-verify

Options

Flag Description
-h, --host URL Control server base URL (required)
-p, --port PORT Override test server port
-u, --uuid UUID Client UUID (uses/creates ~/.rmbt_client_uuid if omitted)
-t, --threads N Force thread count for download and upload (overrides pre-test)
-d, --duration SECS Test duration in seconds (default: from control server)
--ws Use WebSocket (RMBTws) framing instead of plain HTTP upgrade
--http Use plain HTTP upgrade (RMBThttp) — overrides auto-detection
--no-tls-verify Skip TLS certificate verification (insecure)
--debug Print control server request/response JSON
--intermediate Print upload throughput every 40 ms per thread
--help Print help

Performance note

Python's GIL (Global Interpreter Lock) limits true parallel execution across threads. On a 100 Gbit/s back-to-back test system the client achieves roughly 8 Gbit/s downstream and 6.3 Gbit/s upstream (with some run-to-run variation), compared to ~32 Gbit/s in both directions for the Rust client.

For typical home and office connections (up to ~1 Gbit/s) this is not a concern. On high-bandwidth links or low-powered hardware (e.g. a Raspberry Pi or a home router) the CPU may become the bottleneck before the network link is saturated, leading to results that understate the true available bandwidth.

Protocol

  1. POST /RMBTControlServer/settings → register client, receive UUID
  2. POST /RMBTControlServer/testRequest → receive token, server address, thread count
  3. Pre-test: 2-second single-thread GETCHUNKS download to determine chunk size and thread counts
  4. Ping: 1 s / 10–100 pings
  5. Download: multi-threaded GETTIME, all threads start simultaneously via threading.Barrier
  6. Upload: multi-threaded PUTNORESULT
  7. POST /RMBTControlServer/result

Supports both RMBThttp (plain HTTP upgrade) and RMBTws (WebSocket) variants.
TLS via the stdlib ssl module; control server HTTPS via urllib.request.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rmbt_client-1.1.0.tar.gz (16.4 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

rmbt_client-1.1.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (34.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

rmbt_client-1.1.0-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl (38.3 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARMv7lmanylinux: glibc 2.31+ ARMv7l

rmbt_client-1.1.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (35.9 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

File details

Details for the file rmbt_client-1.1.0.tar.gz.

File metadata

  • Download URL: rmbt_client-1.1.0.tar.gz
  • Upload date:
  • Size: 16.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for rmbt_client-1.1.0.tar.gz
Algorithm Hash digest
SHA256 d59142918c12a0b4bcebfc7df23fb93cad580e6a17718c7a92b36cd0f7db29b5
MD5 b26d305021f8e2e69bc11364279172f0
BLAKE2b-256 a326a7e82f33c169aa726ed19da47da894bfd150449e561c0cd2b36f8c634458

See more details on using hashes here.

Provenance

The following attestation bundles were made for rmbt_client-1.1.0.tar.gz:

Publisher: publish-python.yml on raaaimund/open-rmbt-client-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rmbt_client-1.1.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for rmbt_client-1.1.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ab43b4ffa69258975030b11904ea94b8ba5a54633d20e28c53ac9cfff4a8e250
MD5 b8304c82c87f55851050b549f4d62d8c
BLAKE2b-256 3678561047d46173848f467ce961b4d8c6764775bcc2ee7ab9e42102a51e2b85

See more details on using hashes here.

Provenance

The following attestation bundles were made for rmbt_client-1.1.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish-python.yml on raaaimund/open-rmbt-client-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rmbt_client-1.1.0-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl.

File metadata

File hashes

Hashes for rmbt_client-1.1.0-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl
Algorithm Hash digest
SHA256 809d5b1b6e3aed6eaa4e1a814f3e4fb39eb9afb841d4ae36ebf61a9af960c750
MD5 8b0f872bf66f1e5649d76392cb20d147
BLAKE2b-256 d8b4f3942943f4a554d435e8bcd472fd6c18ee97a968a2e459a1fcdcb5a8485a

See more details on using hashes here.

Provenance

The following attestation bundles were made for rmbt_client-1.1.0-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl:

Publisher: publish-python.yml on raaaimund/open-rmbt-client-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rmbt_client-1.1.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for rmbt_client-1.1.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 80308e113376d971af741ab22cdf6f66a2b5f276381281b7ec13cae0ef1a1e31
MD5 942c35f657aa519cddce13df755b6a10
BLAKE2b-256 e7040b1570e346cc78628af8503708cbb4b20e950de5fe94341e7db523b3f3d3

See more details on using hashes here.

Provenance

The following attestation bundles were made for rmbt_client-1.1.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: publish-python.yml on raaaimund/open-rmbt-client-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page