Skip to main content
TraceRouter is our NTRIP caster responsible for routing correction streams from multiple sources. It manages which data streams are sent to each client based on configuration rules and the client’s current state. For instance, it automatically transitions a rover’s connection between the Ephemeris and VRTK streams by interpreting NMEA GGA messages received from the client.

Responsibilities

  • Authentication & authorization – validate device credentials, apply subscription limits, and record session metadata.
  • Routing – map each rover to the nearest correction region using live GGA coordinates.
  • Mode switching – deliver TraceAssist ephemerides before first fix, then upgrade to VRTK corrections automatically.
  • SSR orchestration – feed state-space corrections into TraceNav VRTK so each rover receives a synthetic OSR stream tailored to its location.
  • Resilience – maintain redundant caster pools and perform geo-fallback if connectivity drops.

State machine

CONNECT → {Await GGA → Ephemeris mode} → {GGA received → VRTK mode} → DISCONNECT
StateTriggerTraceRouter action
ConnectTCP + NTRIP auth succeededAllocate session ID, attach to default region
Ephemeris modeNo valid GGA yetSubscribe to /assist stream and repeat ephemerides every 5 s
VRTK modeFirst valid GGA receivedSwitch to nearest VRS mountpoint, stream MSM4 corrections
Re-evaluateGGA location change beyond cell boundsSeamlessly hand off to new region/base
DisconnectTCP closed or timeoutRelease resources, log usage metrics, trigger alerts if configured
TraceRouter tolerates short GGA gaps. Before the first GGA arrives, the rover has up to 10 minutes to achieve a fix. After promotion to VRTK, the session expects the client to send a GGA message at least every 30 seconds or the connection is dropped.
I