starla-controller
Handles communication with the RIPE Atlas controller infrastructure.
Features
- SSH Tunnel Management: Secure connection to RIPE Atlas controllers using
russh - Registration Protocol: INIT/KEEP command handling for probe registration
- Telnet Interface: Receives measurement commands from the controller
- Reverse Port Forwarding: Allows controller to send commands back to the probe
Components
SSH Connection
Manages the SSH tunnel to RIPE Atlas registration and controller servers:
use ;
// Generate or load SSH key
let key = generate_key?;
// Load known host keys (TOFU verification)
let known_hosts = load;
// Connect to registration servers
let ssh = connect_to_servers.await?;
Telnet Server
Receives and parses measurement commands:
use ;
let server = new;
// Commands are parsed into TelnetCommand variants:
// - Ping, Traceroute, Dns, Http, Tls, Ntp
// - Stop, Status
Protocol
The crate implements the RIPE Atlas probe protocol:
- Connect to registration server via SSH
- Send INIT with probe info, receive controller assignment
- Connect to assigned controller
- Establish reverse tunnel for telnet commands
- Maintain connection with KEEP messages