-
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.
-
On time at A
The packet reaches A at 5 ms, before its 6 ms deadline. A follows the path.
-
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.
-
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.
-
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.
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.
v0-3hop: 24-byte T-CRH, path 2 → 3 → 7,
unit 1 ms
Label: REAL
spec/golden/tcrh_vectors.json
-
Bytes
0–3
11 02 fd 03Next Header 17 (UDP) · Hdr Ext Len 2 · Routing Type 253 · Segments Left 3 -
Bytes
4–7
00 03 00 00Flags 0x00 (no state flags; unit code 0 = 1 ms) · Num Hops 3 · Dev Hop 0 · Reserved -
Bytes
8–11
00 00 03 e8Epoch_Base 1000 units -
Bytes
12–14
00 07 08SID[0] = 7 · Delta[0] = 8 (final endpoint) -
Bytes
15–17
00 03 07SID[1] = 3 · Delta[1] = 7 -
Bytes
18–20
00 02 06SID[2] = 2 · Delta[2] = 6 (first hop) -
Bytes
21–23
00 00 00Padding 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.
The live globe has the full controls: the current time or faster, a time slider, search and details for every satellite.
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.
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.
Explore
Where to go next
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.