Can I use TCP BBR on my Linode?

Linode Staff

I want to enable TCP BBR, does my Linode support that?

5 Replies

TCP BBR can be enabled on your Linode by following these steps. The following steps were performed on a Linode running Ubuntu 16.04 with the Linode-supplied 4.15.8-x86_64-linode103 kernel.

1) (Optional) At the Linode’s command line, the current congestion control algorithm (CCA) in use can be checked by issuing the following command:

sysctl net.ipv4.tcp_congestion_control

By default, this Linode returns:

net.ipv4.tcp_congestion_control = cubic

2) Check the kernel version using the following command. It needs to be 4.9 or greater to use BBR, otherwise it will need to be updated.

uname -r

3) Set BBR as the CCA. The necessary lines can be added to the sysctl.conf file with the following cat command:

cat <<-EOF | sudo tee -a /etc/sysctl.conf
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr
EOF

Or, they can be added to the end of sysctl.conf using a text editor like nano:

nano /etc/sysctl.conf

4) Finally, reboot the Linode for the changes to take effect. After rebooting, check the CCA algorithm again by running the command from step 1:

sysctl net.ipv4.tcp_congestion_control

Which should produce the following output:

net.ipv4.tcp_congestion_control = bbr

But isn't fq qdisc no longer required with 4.13+ Linux Kernels as they have TCP level pacing https://github.com/google/bbr/blob/master/Documentation/bbr-quick-start.md ?

TCP BBR is in Linux v4.9 and beyond. However, we recommend compiling from the latest sources, from the networking development branch. In particular, in the davem/net-next networking development branch (and Linux v4.13-rc1 and beyond) there is new support for TCP-level pacing. This means that there is no longer a requirement to install the "fq" qdisc to use BBR. Any qdisc will do.

I just ran through this on a CentOS 7 Linode with a 4.15.8 kernel and it appears that you're absolutely correct. Simply running the following command provided me with the switch to BBR:

cat << EOF | tee -a /etc/sysctl.conf
net.ipv4.tcp_congestion_control=bbr
EOF

The rest of the article that you've linked to appears to be referencing specific changes that are made at a kernel level though so I'd be cautious although there are guides for installing your own custom kernel for both CentOS 7 and Debian/Ubuntu.

-Garrett

@eva2000 I'm not an expert on this, but as I understand it, TCP-level pacing is no longer required, but recommended for performance reasons.

See excerpt:

* NOTE: BBR might be used with the fq qdisc ("man tc-fq") with pacing enabled,
* otherwise TCP stack falls back to an internal pacing using one high
* resolution timer per TCP socket and may use more resources.

(Source)

It may be a good idea to clarify this though.

Yeah not entirely sure myself as documentation doesn't fully explain it.

Reply

Please enter an answer
Tips:

You can mention users to notify them: @username

You can use Markdown to format your question. For more examples see the Markdown Cheatsheet.

> I’m a blockquote.

I’m a blockquote.

[I'm a link] (https://www.google.com)

I'm a link

**I am bold** I am bold

*I am italicized* I am italicized

Community Code of Conduct