measured | LeoAware suite | 7 handovers in 90s
Stop treating Starlink handovers as congestion
Built for engineers shipping real traffic over LEO - including X and other high-volume apps on Starlink-class paths. LeoAware is an endpoint congestion controller that invalidates stale RTT/BW samples after reconfigs. ASCENT optionally feeds explicit satellite state so the rate loop is not pure ACK guessing.
Source: open-source discrete-time sim
(Pitchfork-and-Torch/leo-aware-transport),
scenario leo_fast_ho (90s, ~12s handover mean, seed 13).
Educational BBR-family approx - not bit-exact production BBRv3. Full table below.
Reproduce: pip install -r requirements.txt && python -m experiments.run_suite
01 / measured
Actual suite output (not marketing placeholders)
Same path model for all three CCAs. Handovers redraw RTT and capacity and inject non-congestive loss bursts. The stress case is frequent reconfiguration - the failure mode Starlink-class users hit when CUBIC treats mobility loss as queue overflow. Tabs below show algorithm evolution (scientific honesty): baseline launch numbers vs current LeoAware v2.
Fast handovers (leo_fast_ho | 7 hops | 90s)
| CCA | Goodput | Avg RTT | p95 RTT | Loss | HOs |
|---|---|---|---|---|---|
| CUBIC | 6.44 Mbps | 65.4 ms | 134.3 ms | 0.14% | 7 |
| BBRv3approx | 65.38 Mbps | 116.2 ms | 188.6 ms | 1.18% | 7 |
| LeoAware | 70.36 Mbps | 84.8 ms | 123.2 ms | 0.63% | 7 |
Single long flow (leo_single | ~22s HO mean)
| CCA | Goodput | Avg RTT | p95 RTT | Loss |
|---|---|---|---|---|
| CUBIC | 9.04 Mbps | 55.5 ms | 111.2 ms | 0.10% |
| BBRv3approx | 83.99 Mbps | 97.1 ms | 161.8 ms | 1.27% |
| LeoAware | 81.97 Mbps | 86.1 ms | 141.1 ms | 0.78% |
Under stress handovers LeoAware leads goodput with lower p95 than BBR approx. On calmer single-flow LEO, v2 closes most of the goodput gap to BBR while keeping better p95 than BBR.
Terrestrial control (no handovers)
| CCA | Goodput | p95 RTT | Note |
|---|---|---|---|
| CUBIC | 13.34 Mbps | 40.0 ms | Conservative on stable path |
| BBRv3approx | 78.81 Mbps | 40.0 ms | Strong utilization |
| LeoAware | 77.39 Mbps | 40.0 ms | No material LEO-only regression vs BBR approx |
Fast handovers (leo_fast_ho)
| CCA | Goodput | Avg RTT | p95 RTT | Loss | HOs |
|---|---|---|---|---|---|
| CUBIC | 6.44 Mbps | 65.4 ms | 134.3 ms | 0.14% | 7 |
| BBRv3approx | 65.38 Mbps | 116.2 ms | 188.6 ms | 1.18% | 7 |
| LeoAware | 68.31 Mbps | 87.3 ms | 164.0 ms | 1.26% | 7 |
Single long flow (leo_single)
| CCA | Goodput | p95 RTT | Loss |
|---|---|---|---|
| CUBIC | 9.04 Mbps | 111.2 ms | 0.10% |
| BBRv3approx | 83.99 Mbps | 161.8 ms | 1.27% |
| LeoAware | 64.67 Mbps | 129.1 ms | 1.32% |
Terrestrial control
| CCA | Goodput | p95 RTT |
|---|---|---|
| BBRv3approx | 78.81 Mbps | 40.0 ms |
| LeoAware | 77.98 Mbps | 40.0 ms |
| Scenario | v0 goodput | v2 goodput | v0 p95 | v2 p95 | Verdict |
|---|---|---|---|---|---|
| leo_fast_ho | 68.31 Mbps | 70.36 Mbps | 164.0 ms | 123.2 ms | +3% goodput, -41 ms p95 |
| leo_single | 64.67 Mbps | 81.97 Mbps | 129.1 ms | 141.1 ms | +27% goodput (p95 trade) |
| terrestrial | 77.98 Mbps | 77.39 Mbps | 40.0 ms | 40.0 ms | No material regression |
Full scientific log: docs/experiment_log.md and design notes docs/leoaware_v2_design.md.
02 / problem
What breaks on Starlink-class paths
Peak bandwidth is fine. The path is not. Handovers, beam switches, ISL re-routes, and non-congestive loss look like congestion to loss-based CCAs and leave model-based CCAs with stale min-RTT and BDP. Interactive and bulk both suffer - latency variance and self-limited goodput.
| What most stacks assume | What OrbitStack does |
|---|---|
Stable path, stable RTT
|
Reconfiguration-aware control
|
03 / ASCENT
Wire state the CCA can actually trust
Endpoint detection alone is deployable today. ASCENT is the upgrade path: a greppable, integrity-protected stream for telemetry, agent roles, and multimodal refs - so Starlink-class terminals or edge agents can announce reconfigs and capacity instead of forcing the sender to discover them after the RTT spike.
Sacred ASCII stays greppable. ASCENT-D can wrap critical feedback with RS(255,223) erase-on-fail so the CCA never acts on corrupted control.
state
Predict, do not only react
Altitude, status, vector into the bottleneck model. Freeze/ramp around known windows before p95 blows out.
control
Protected feedback
Capacity estimates and reconfig notices in ASCENT-D. Erase on parity failure. No thrash on garbage state.
efficiency
Lower offered load
Content-addressed REFs and lightweight sacred control free headroom for goodput on the same window.
04 / design
Endpoint-first, quiche-shaped
No network cooperation required to start. Interface maps cleanly onto a QUIC congestion controller
(on_ack, on_loss(congestive?), optional on_path_hint).
That is the integration surface for Cloudflare-class edge stacks and client-side mobile/desktop transports.
-
01
LeoAware detection
RTT jump outliers, ACK inter-arrival gaps, loss bursts without RTT inflation. Soft re-probe - not CUBIC collapse.
-
02
Optional ASCENT side channel
Subscribe to pilot / dish / gateway agent frames. Cross-check untrusted external telemetry. Prefer trusted status for rate decisions.
-
03
Adaptive profiles
Nominal -> lower ECC, higher probe headroom. Degraded geometry -> stronger protection + QUEUE coordination.
-
04
Measure on real ASNs
A/B CUBIC / BBR / LeoAware on Starlink-attached clients or edge PoPs. Endpoint-only first; path hints when available.
05 / audience
For X engineers (and anyone on LEO)
If you run interactive product, media, or bulk sync over Starlink-class last miles, classic CCA assumptions leak into user-visible latency and goodput. OrbitStack is a concrete brief plus measured sim evidence for two complementary pieces:
- LeoAware - ship endpoint logic that does not self-limit on mobility loss.
- ASCENT - optional structured state/control plane so reconfigs are signals, not mysteries.
- Honest scope - research sim and design, not a claim of production BBRv3 parity or official Starlink affiliation.
Natural pilot: Starlink-attached clients or edge terminations A/B'ing rate controllers, with ASCENT frames as a later assist. Related: ascent.jonbailey.xyz (wire) and skycache.jonbailey.xyz (mesh / DTN).
06 / path
Cloudflare x Starlink collaboration shape
Cloudflare: high-volume QUIC and global edge. Starlink: LEO topology and potential path-change signals. OrbitStack is the bridge brief - endpoint measurement first, authenticated reconfiguration hints later. Multipath and AI-scale bulk are phase-two traffic classes once the single-path rate loop is honest about handovers.
phase 0
This brief + sim
Shared vocabulary, metrics, and LeoAware behavior under synthetic LEO dynamics.
phase 1
Live A/B
Instrument Starlink ASNs / PoPs. Validate which endpoint signals fire around real hops.
phase 2
ASCENT assists
Optional epoch markers and capacity advice into on_path_hint without forcing cooperation.