Student project · Computer Networks · VIT Vellore

ChronoRoute

Every packet carries its planned path and a deadline for each hop, so the satellite that receives it late knows the plan has broken and switches to geographic forwarding.

Deadline-based source routing for low-Earth-orbit constellations, evaluated on real Starlink orbit geometry. Starlink itself does not use it.

A real T-CRH header, byte for byte: the reference test vector from the specification.

Golden vector v0-3hop: 24-byte T-CRH, path 2 → 3 → 7, unit 1 ms Label: REAL spec/golden/tcrh_vectors.json
  1. Bytes 0–3 11 02 fd 03 Next Header 17 (UDP) · Hdr Ext Len 2 · Routing Type 253 · Segments Left 3
  2. Bytes 4–7 00 03 00 00 Flags 0x00 (no state flags; unit code 0 = 1 ms) · Num Hops 3 · Dev Hop 0 · Reserved
  3. Bytes 8–11 00 00 03 e8 Epoch_Base 1000 units
  4. Bytes 12–14 00 07 08 SID[0] = 7 · Delta[0] = 8 (final endpoint)
  5. Bytes 15–17 00 03 07 SID[1] = 3 · Delta[1] = 7
  6. Bytes 18–20 00 02 06 SID[2] = 2 · Delta[2] = 6 (first hop)
  7. Bytes 21–23 00 00 00 Padding to a multiple of 8 bytes (3 B)

The test geometry

Real Starlink orbits, computed in your browser

Each dot is a Starlink satellite from a public CelesTrak orbit snapshot, placed by the SGP4 orbit model at the time shown on the globe. The clock here runs at 60 times real time so that the motion is visible (it starts paused if your device asks for reduced motion); the Earth turns at the same rate.

We use these orbits only as realistic geometry for testing T-CRH. Starlink does not use T-CRH, and its own routing is not public.

Label: REAL orbital elements Label: REAL positions (SGP4) Label: DERIVED colour groups

The live globe has the full controls: the current time or faster, a time slider, search and details for every satellite.

Loading the orbit snapshot and starting SGP4…

Loading the orbit snapshot…

In 60 seconds

How a deadline catches a link that is up but slow

Link-state routing learns about links from hello messages. A link that is up but slow still passes its hellos, so the routing keeps using it while packets wait in its queue. A deadline in the packet does not depend on hellos: the packet itself arrives late, and the satellite that receives it can tell.

Example timings, for illustration; the rules are those of spec section 6. Label: MODELLED example timings Label: REAL processing rules
  1. The plan goes into the packet

    The ingress ground station predicts the delay of every hop from the orbits and writes the path and a cumulative deadline for each hop into the T-CRH: A by 6 ms, B by 13 ms, C by 21 ms, the egress by 27 ms.

  2. On time at A

    The packet reaches A at 5 ms, before its 6 ms deadline. A follows the path.

  3. A link that is up but slow

    The link from A to B is up: it still carries hello messages, so link-state routing keeps using it. But a queue on it holds the packet back.

  4. B notices

    B receives the packet at 17 ms, 4 ms after its 13 ms deadline. It sets the DEV flag and writes Dev Hop = 2. No extra message was needed: the packet itself is the evidence.

  5. Fall back

    Under the greedy policy, B stops following the planned path and forwards the packet geographically towards the egress. The egress delivers it, and DEV with Dev Hop tells it where the plan broke.

Reading this site

Every number carries a label

We use real, public Starlink orbits as a realistic test geometry. Starlink does not use T-CRH, and how Starlink really routes traffic is not public, so we never claim it.

  • Label: REAL

    Public or measured data, real physics computed with real code on REAL inputs, or the exact output of our real code, such as the bytes of a header.

    Example: CelesTrak orbital elements, satellite positions computed from them with SGP4, the speed of light, the bytes of a T-CRH.

  • Label: DERIVED

    Computed by our code from REAL inputs by an inference or a choice that could be made differently.

    Example: Shells and orbital planes inferred from the elements, the colour groups, a planned route and its budgets.

  • Label: MODELLED

    Our assumption, used because the truth is not public.

    Example: Which satellites are joined by laser links, the traffic, the failures.

  • Label: UNKNOWN

    Not public, so we do not claim it.

    Example: Starlink's real routing. Starlink does not use T-CRH.

How we apply the labels

Explore

Where to go next

  • Live globe

    Every satellite in the orbit snapshot, placed by SGP4 in your browser for the current time or any time near it.

  • Route planner

    Pick two cities: a hypothetical path over modelled laser links, its per-hop deadlines, and the T-CRH bytes, checked against the Python reference.

  • Protocol

    Build, decode and step through T-CRH headers with an engine checked against the shared golden test vectors.

  • Methodology

    What is real, derived, modelled or unknown, the sources, the limitations and what is new.

Orbit data in this build

The orbit snapshot

The globes compute satellite positions with SGP4 from public orbital elements. This build uses the snapshot below.

Status

Results

How well does the alarm work?

The registered experiments measured how often a deadline catches a real problem and how often it raises a false alarm, on real Starlink orbit data. Each experiment has its own page with the question, the pre-registered hypothesis, the verdict, charts with confidence intervals, the data to download and its run manifest (code commit, configuration, random seeds, orbit snapshot and file hashes), so that anyone can reproduce it.

In short: deadlines catch strong slow-downs and dead links with no extra control traffic, but at the registered 1% false-alarm limit small delays stay hidden inside the slack, and a local queue monitor detects more. Each page says where ChronoRoute loses.

See the experiments