socket option: TCP CC algo

294 views
Skip to first unread message

vm finance

unread,
Oct 24, 2019, 2:09:02 AM10/24/19
to BBR Development
Hi,

Linux allows cubic and reno to be set for congestion control per socket basis:
net.ipv4.tcp_allowed_congestion_control = reno cubic
net.ipv4.tcp_available_congestion_control = reno cubic
net.ipv4.tcp_congestion_control = cubic

I can see how/why it would be useful but it can complicate things as well.
1. Could someone please share their experiences with setting different cc for different socket.
2. Also wondering if there are any available test results on BBR co-existence with reno/cubic and plans to include BBR in above sysctls.

Any pointers highly appreciated!

Thank you!

Neal Cardwell

unread,
Oct 27, 2019, 7:18:06 PM10/27/19
to vm finance, BBR Development
On Thu, Oct 24, 2019 at 2:09 AM vm finance <vm.fi...@gmail.com> wrote:
Hi,

Linux allows cubic and reno to be set for congestion control per socket basis:
net.ipv4.tcp_allowed_congestion_control = reno cubic
net.ipv4.tcp_available_congestion_control = reno cubic
net.ipv4.tcp_congestion_control = cubic

I can see how/why it would be useful but it can complicate things as well.
1. Could someone please share their experiences with setting different cc for different socket.

The results will depend heavily on which congestion control algorithm you are talking about, and what network paths are used, and what the traffic workload is. You can do a search for papers in the field of congestion control to get a sense.
 
2. Also wondering if there are any available test results on BBR co-existence with reno/cubic and plans to include BBR in above sysctls.

In terms of BBR co-existence with reno/cubic we have shared some example results at the IETF 102-105 and on this list. You can see links here:

The results are by no means complete/exhaustive, but the code is still under development and testing, so we will post more exhaustive results when things are further along.

In terms of including BBR in the above sysctls, whether BBR shows up in those sysctls will depend on whether the BBR module was compiled and/or loaded into the Linux kernel.

In many recent Linux distributions (many with kernel 4.9 or later) you can either:

(1) run "modprobe tcp_bbr" as root, to load the tcp_bbr module, after which "bbr" will show up on those sysctl values.

or

(2) run "sysctl net.ipv4.tcp_congestion_control=bbr" to load the tcp_bbr module and set it as the default congestion control for all TCP connections created after that point (until the machine reboots, at which 

For more tips on getting started with Linux TCP BBR, please see:

Hope that helps.

best,
neal


 

Any pointers highly appreciated!

Thank you!

--
You received this message because you are subscribed to the Google Groups "BBR Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email to bbr-dev+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/bbr-dev/CAKy-8%3DgtF8F7ObKFqYLq7pkfvW0f64Oz1G87BgLjZKs68mnnAw%40mail.gmail.com.
Reply all
Reply to author
Forward
0 new messages