In part 8 of my Starlink series, I’ve been looking at downlink throughput with a Windows notebook. The maximum speed I could achieve with iperf3 was around 30 Mbps, while tools like speedtest.net and LibreSpeed could easily reach 150 to 200 Mbps. So what’s the difference and which speed test reflects real world use?
Iperf3 without an additional command line option uses a single TCP connection for throughput testing. Speedtest.net and LibreSpeed on the other hand use many concurrent TCP connections. When analyzing a speedtest.net session running in a web browser with Wireshark, I could see 24 (!!) concurrent conversations, some of them over IPv4, some of them over IPv6. The screenshot above shows how this looks like in Wireshark. The rightmost column is the most important one, it shows the average throughput of each connection. The first three get a double digit throughput in Mbit/s while the others are a bit slower. None of them reach the 30 Mbps of a single iPerf3 TCP stream, but that’s logical, as they all have to share the available bandwidth.
Next, I took a Wireshark trace of a LibreSpeed throughput test. With 6 simultaneous conversations, it uses fewer connections than Speedtest.net, but reaches about the same overall throughput. What both programs hide: A much slower single TCP connection throughput in the light of massive packet loss over Starlink when used with a Windows notebook.
So are such speedtests actually realistic? I guess the answer is ‘yes and no’. For single file downloads over a single TCP connection over a high-loss link to and from Windows notebooks without sophisticated TCP congestion avoidance algorithms, the answer is clearly ‘no’. That’s because the difference between the 30 Mbps iPerf3 downlink speed on average observed with a Windows notebook, and the 200 Mbps reported by speedtest.net is just too big.
In other scenarios, for example when many people use the network simultaneously for streaming videos, downloading large amounts of data, etc. the link’s capacity has to be split anyway. And there are certainly services that transfer large amounts of data that already use several data streams to avoid speed limitations due to packet loss. In these scenarios the overall link capacity counts and the answer can be more to the ‘yes’ side.
So long story short: Take throughput results from speedtest.net, LibreSpeed and other such services with a grain of salt and use iPerf3 with a single TCP session to see how most services will run over a connection when they have the full link capacity for their own use.
Next up in part 10: Windows 11 uplink throughput performance.