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
| State | Trigger | TraceRouter action |
|---|
| Connect | TCP + NTRIP auth succeeded | Allocate session ID, attach to default region |
| Ephemeris mode | No valid GGA yet | Subscribe to /assist stream and repeat ephemerides every 5 s |
| VRTK mode | First valid GGA received | Switch to nearest VRS mountpoint, stream MSM4 corrections |
| Re-evaluate | GGA location change beyond cell bounds | Seamlessly hand off to new region/base |
| Disconnect | TCP closed or timeout | Release 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.