orbitstack // transport

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.

LeoAware goodput | fast HO 70.4 Mbps p95 RTT 123 ms | 7 handovers
CUBIC under same path 6.4 Mbps p95 RTT 134 ms | collapses on mobility loss
BBR approx under same path 65.4 Mbps p95 RTT 189 ms | higher latency tax
Terrestrial control | LeoAware 77.4 Mbps near BBR ~78.8 | no LEO regression

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

OrbitStack editorial LEO mesh: constellation path control to edge node
Landing art - LEO mesh + edge path (editorial) full frame | no crop

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.

LeoAware v2 | multi-signal reconfig detection + two-phase REPROBE | suite seed 13 | open log: experiment_log.md

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

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
  • Mobility loss -> cut cwnd
  • Keep min-RTT across hops
  • Recover slowly after every reconfig
Reconfiguration-aware control
  • Detect path change at the endpoint
  • Discard stale samples; soft re-probe
  • Taxonomy: mobility loss != congestion

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.

ASCENT/1.0 # approach vector locked alt=120km status=nominal role:pilot role:untrusted:external-telemetry cid:sha256:deck-camera-03

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.

  1. 01

    LeoAware detection

    RTT jump outliers, ACK inter-arrival gaps, loss bursts without RTT inflation. Soft re-probe - not CUBIC collapse.

  2. 02

    Optional ASCENT side channel

    Subscribe to pilot / dish / gateway agent frames. Cross-check untrusted external telemetry. Prefer trusted status for rate decisions.

  3. 03

    Adaptive profiles

    Nominal -> lower ECC, higher probe headroom. Degraded geometry -> stronger protection + QUEUE coordination.

  4. 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.