Every number on this site, and how we got it.
Every speed claim on farwing.io links here. Each one is a median of three runs on a real path, with the method and the raw results.
Test setup
| Date | 2 Oct 2026 |
|---|---|
| Path | Oregon, USA to Sydney, Australia, over a public cloud backbone |
| Round trip | 139 ms |
| Hosts | Two 16-core cloud hosts See published benchmark JSON (hosts to be labelled) |
| Path capacity | 12.4 Gbit/s with no loss tool |
| Added loss | 0%, 0.1%, 1% and 3%, random, added at the receiver (loss tool labelled in results JSON). The tool caps every sender near 8 Gbit/s. |
| Runs | 20-second streams and 1 GiB copies, median of three |
| Farwing | see release tag, default settings (4 lanes, --policy auto) |
| TCP | Linux default CUBIC, TCP BBR, 8 parallel BBR streams; default buffers |
Throughput, Oregon to Sydney
useful data delivered per second, Mbit/s. 20-second runs, median of three.
| Added loss | Farwing | 8 × TCP BBR | TCP BBR | TCP CUBIC | Farwing vs BBR |
|---|---|---|---|---|---|
| 0% | 6,721 | 4,884 | 4,199 | 2,950 | 1.6× |
| 0.1% | 6,058 | 5,188 | 2,841 | 10.4 | 2.1× |
| 1% | 6,801 | 5,084 | 1,998 | 1.2 | 3.4× |
| 3% | 6,627 | 4,479 | 1,400 | 0.57 | 4.7× |
No loss tool: the path gives 12.4 Gbit/s. Farwing 11,523 Mbit/s, 8 CUBIC streams 11,051, 8 BBR streams 10,811, one TCP flow about 4,300. Farwing used about 2 of 16.
1 GiB copy, start of command to checked file
| Added loss | Farwing | scp |
|---|---|---|
| 0% | 2.2 s | 83 s |
| 0.1% | 2.4 s | did not finish |
| 1% | 2.6 s | did not finish |
| 3% | 3 s | did not finish |
A 5-minute limit per run. Repeat copies: SSH session reused, path speed remembered. A first copy to a new host took 4.5–4.8 s with no loss.
Sharing the link
With the default 4 lanes, one long TCP flow kept about half its speed while Farwing ran.
With --lanes 1, Farwing ran next to a 4.8 Gbit/s TCP flow and did not slow it at all.
How the calculator estimates
The calculator uses a small model fitted to the runs above and to emulated paths from 2 to 250 ms with up to 10% loss. Farwing fills a steady share of the link, less the lost packets. One TCP connection is capped by the classic loss formula, scaled at each loss level to what Linux TCP really did. scp is also capped by the SSH window. First copies add the SSH login and a speed ramp.
| Constant | Value | What it means |
|---|---|---|
| fwEff | 0.93 | Share of the link Farwing fills with no loss (11.5 Gbit/s of 12.4 Gbit/s) |
| fwLossSlope | 1.5 | Extra trim per unit of loss, on top of the lost packets |
| fwCeilingMbps | 11,500 | Fastest copy measured so far |
| fwSetupRtt / fwWarmSetupRtt | 3 / 4.5 | Farwing start-up, in round trips (first copy / repeat copy) |
| sshLoginRtt | 13 | A fresh SSH login, in round trips |
| sshLossSec | 3 s | Extra time a fresh SSH login took on a lossy path |
| startMbps · rampFit | 20 · 1.25 | First-copy start rate, doubling each round trip |
| tcpEff | 0.95 | Share of the link one TCP connection fills with no loss |
| tcpLossFit | 3.2 → 0.55 | Scale on the classic loss formula, from 0.1% to 10% loss |
| scpWindowBits · scpFit | 16 Mbit · 0.86 | SSH keeps about 2 MiB in flight per channel |
| freeCapMbps | 1,000 | Free Farwing speed limit |
farwing bench user@host --size 5G