Bug #11553
closedWant pluggable TCP congestion control algorithms
100%
Description
Sebastien Roy at Delphix ported FreeBSD's pluggable congestion control framework to their gate a while back. It would be nice to upstream this to gain new algorithms, and allow for supporting others in the future. The commits this is based on are:
- DLPX-25998 TCP congestion control is inadequate
- DLPX-56025 sunreno's tcp_cwnd_ssthresh should be halved after RTO
This will give us three different congestion control algorithms:
- CUBIC
- New Reno
- Sun Reno (the logic that can be currently found throughout tcp_input.c)
I pulled this into SmartOS in OS-7329, and made some additional changes.
Related issues
Updated by Cody Mello almost 3 years ago
Running several iperf
tests from my OmniOS VM on my laptop (going from San Francisco to Amsterdam) using the options -t 120 -P 8
, I get:
Algorithm | Run 1 | Run 2 | Run 3 | Average |
---|---|---|---|---|
cubic |
187 Mbits/sec | 183 Mbits/sec | 185 Mbits/sec | 185 Mbits/sec |
sunreno |
183 Mbits/sec | 184 Mbits/sec | 184 Mbits/sec | 183.66 Mbits/sec |
newreno |
183 Mbits/sec | 186 Mbits/sec | 184 Mbits/sec | 184.33 Mbits/sec |
Under these conditions, they're all doing about the same. On a server running SmartOS in Emeryville, California, going to the same Amsterdam server, using the options -t 120 -P 32
, I get:
Algorithm | Run 1 | Run 2 | Run 3 | Run 4 | Run 5 | Average |
---|---|---|---|---|---|---|
cubic |
1.46 Gbits/sec | 1.42 Gbits/sec | 1.53 Gbits/sec | 1.54 Gbits/sec | 1.59 Gbits/sec | 1.508 Gbits/sec |
sunreno |
1.31 Gbits/sec | 1.26 Gbits/sec | 1.40 Gbits/sec | 1.50 Gbits/sec | 1.37 Gbits/sec | 1.368 Gbits/sec |
newreno |
1.40 Gbits/sec | 1.41 Gbits/sec | 1.26 Gbits/sec | 1.48 Gbits/sec | 1.27 Gbits/sec | 1.364 Gbits/sec |
For additional testing using iperf
(and some examples comparing measuring time in nanoseconds vs. ticks in the CUBIC module), see OS-7329.
Updated by Electric Monk almost 3 years ago
- Status changed from New to Closed
- % Done changed from 0 to 100
git commit 45a4b79d042e642c2ed7090ec290469ccf8fc563
commit 45a4b79d042e642c2ed7090ec290469ccf8fc563 Author: Sebastien Roy <seb@delphix.com> Date: 2019-08-23T18:42:52.000Z 11553 Want pluggable TCP congestion control algorithms Portions contributed by: Cody Peter Mello <cody.mello@joyent.com> Reviewed by: Dan McDonald <danmcd@joyent.com> Reviewed by: Robert Mustacchi <robert.mustacchi@joyent.com> Approved by: Richard Lowe <richlowe@richlowe.net>
Updated by Andy Fiddaman almost 3 years ago
- Related to Bug #11752: inet/cc.h should be shipped added