Skip to main content

Crate manycastr

Crate manycastr 

Source
Expand description

ยงMAnycastR

MAnycastR (Measure Anycast Routing) performs synchronized Internet measurements from a distributed set of anycast Points of Presence (PoPs): catchment mapping, anycast and unicast latency, anycast traceroute, and anycast censuses. IPv4 and IPv6 are both supported, over ICMP, UDP (DNS), and TCP.

These pages document the internals. For installation, usage, measurement types, and output formats, see the README, or run manycastr cli start --help.

ยงThe components

A deployment consists of three components, each a subcommand of the manycastr binary:

  • Orchestrator - a central controller orchestrating measurements
  • CLI - command-line interface scheduling measurements at the Orchestrator and collecting results
  • Worker - deployed on anycast PoPs, performing measurements

The CLI sends a measurement definition to the Orchestrator, which instructs the Workers to start the measurement. Workers send probes and receive replies, streaming results back to the Orchestrator, which aggregates them (creating follow-up tasks where the measurement type calls for it) and forwards them to the CLI, which writes the output file.

Supporting modules: net (packet construction and parsing), tls (transport security for the inter-component gRPC connections), and custom_module (generated gRPC types).

Modulesยง

cli ๐Ÿ”’
custom_module ๐Ÿ”’
net ๐Ÿ”’
orchestrator ๐Ÿ”’
tls ๐Ÿ”’
worker ๐Ÿ”’

Constantsยง

ALL_ORIGINS
ALL_WORKERS
SINGLE_ORIGIN

Functionsยง

dns_identifier
Get 6-bits from the measurement ID for the DNS identifier for filtering.
m_id_of
Get the 16-bit measurement ID from a probe ID.
main ๐Ÿ”’
Parse command line input and start MAnycastR orchestrator, worker, or CLI
parse_cmd ๐Ÿ”’
Parse command line arguments using clap
probe_id
Used for --responsive and --sessions enabled when using -m feed.
session_id_of
Get the 16-bit session ID from a probe ID.