Can I use TCP BBR on my Linode?
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:
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.
3) Set BBR as the CCA. The necessary lines can be added to the sysctl.conf file with the following
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:
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:
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.
@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.
* 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.
It may be a good idea to clarify this though.