Starlink offers 'unusually hostile environment' to TCP

Hopping satellites every 15 seconds will do that to a protocol, natch

SpaceX's Starlink satellite internet service "represents an unusually hostile link environment" to the TCP protocol, according to Geoff Huston, chief scientist at the Asia Pacific Network Information Center.

Huston's assessment appeared late last week in a blog post detailing his analysis of Starlink performance.

The post opens by explaining that low-Earth-orbit satellites whizz past so quickly that they can go from horizon to horizon in fewer than five minutes. To maintain a connection, terrestrial antennae therefore periodically need to connect to a different sat.

That's pretty much to be expected, we guess; this info therefore serves as a concrete reference for those anticipating the state of connectivity over Starlink for future applications and uses.

"A continuous LEO satellite service needs to hop across a continual sequence of satellites as they pass overhead and switch the virtual circuit path across to successive satellites as they come into view of both the end user and the user’s designated Earth station," he wrote. Huston believes that may happen as often as every 15 seconds.

Using Ping, he found "minimum latency changes regularly every 15 seconds" and surmised: "It appears that this change correlates to the Starlink user's terminal being assigned to a different satellite. That implies that the user equipment 'tracks' each satellite for a 15-second interval, which corresponds to a tracking angle of 11 degrees of arc."

During those handovers, Huston observed some packet loss – and a significant increase in latency. "The worst case in this data set is a shift from 30ms to 80ms," he wrote. Further: "Within each 15-second satellite tracking interval, the latency variation is relatively high. The average variation of jitter between successive RTT intervals is 6.7ms. The latency spikes at handover impose an additional 30ms to 50ms indicating the presence of deep buffers in the system to accommodate the transient issues associated with satellite handover."

Overall, Huston believes Starlink has "a very high jitter rate, a packet drop rate of around one percent to two percent that is unrelated to network congestion, and a latency profile that jumps regularly every 15 seconds."

That makes it "an unusually hostile link environment" for transport control protocol (TCP), and means "older variants of TCP, such as Reno TCP, that react quickly to packet loss and recover slowly, can perform very poorly when used across Starlink connections."

Which is obviously not good news if you've built an app to use a version of TCP that won't enjoy visiting space over Starlink.

Thankfully, Huston thinks he has a remedy: Tune TCP to behave better on Starlink. He even has three candidates he thinks could be made to do the job.

One is the Bottleneck Bandwidth and Round-trip propagation time (BBR) protocol – a TCP congestion control algorithm developed at Google. BBR tries to predict the delays on a network path, and adjusts sending strategies accordingly.

The CUBIC TCP network congestion avoidance algorithm could also do a job, in harness with Selective Acknowledgement (SACK – aka RFC 2883).

Huston also thinks Explicit Congestion Notification could help, because it can handle situations like latency spikes caused by satellite handovers.

While Starlink's hostility to TCP worries Huston and could trouble some apps, the service mostly offers a decent amount of bandwidth: The chief scientist used Speedtest every four hours from August 2023 through March 2024 and found the service "appears to have a median value of around 120Mbit/sec of download capacity, with individual measurements reading as high as 370Mbit/sec and as low as 10Mbit/sec, and 15Mbit/sec of upload capacity, with variance of between 5Mbit/sec to 50Mbit/sec." ®

More about


Send us news

Other stories you might like