Bug #11553

Want pluggable TCP congestion control algorithms

Added by Cody Mello about 1 year ago. Updated about 1 year ago.

Start date:
Due date:
% Done:


Estimated time:
Gerrit CR:


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:

- 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

Related to illumos gate - Bug #11752: inet/cc.h should be shippedClosedAndy Fiddaman


Updated by Cody Mello about 1 year 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 about 1 year ago

  • Status changed from New to Closed
  • % Done changed from 0 to 100

git commit 45a4b79d042e642c2ed7090ec290469ccf8fc563

commit  45a4b79d042e642c2ed7090ec290469ccf8fc563
Author: Sebastien Roy <>
Date:   2019-08-23T18:42:52.000Z

    11553 Want pluggable TCP congestion control algorithms
    Portions contributed by: Cody Peter Mello <>
    Reviewed by: Dan McDonald <>
    Reviewed by: Robert Mustacchi <>
    Approved by: Richard Lowe <>


Updated by Andy Fiddaman about 1 year ago

  • Related to Bug #11752: inet/cc.h should be shipped added

Also available in: Atom PDF