One of the oldest protocols and maybe the most used protocol on the Internet today is TCP. You likely send and receive hundreds of millions TCP packets (or segments) a day, and it just works! Many peoples believe TCP development has finished, but that’s not right. In this post will take a look at a relatively new TCP congestion control algorithm called BBR and take it for a spin.

We all know the difference between the two most popular transport protocols used on the Internet today. There are UDP and TCP. UDP is a send and forget protocol. It is stateless and has no congestion control or reliable delivery support. We can see UDP used for DNS and VPNs.

BBR

Bottleneck Bandwidth and Round-trip propagation time is a TCP congestion control algorithm developed by Google in 2016. Up until this, the Internet has primarily used loss-based congestion control, relying only on indications of lost packets as the signal to slow down the sending rate. This worked nice, but the networks have changed. We have more bandwidth usage than ever before. The Internet is generally more reliable now, and we see new things such as bufferbloat that impact latency. BBR tackles this with a ground-up rewrite of congestion control, and it uses latency, instead of lost packets as a primary factor to determine the sending rate.

source: https://cloud.google.com/blog/products/gcp/tcp-bbr-congestion-control-comes-to-gcp-your-internet-just-got-faster

We can enable BBR in Cemtos 7 using some few commands. First of all we need to install the repo and then install new kernel.

# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
# yum --enablerepo=elrepo-kernel install kernel-ml

Now we need to edit file /etc/default/grub. Search for line containing GRUB_DEFAULT and set it to 0. Now we need to create a new grub configuration file with commands:

# grub2-mkconfig -o /boot/grub2/grub.cfg
# reboot

Right now we are ready to enable TCP BBR. Append the following 2 lines to /etc/sysctl.conf:

net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr

We will apply this changes to our base system using command sysctl -p then we are ready.

Categories: Blog

1 Comment

Leave a Reply

Avatar placeholder

Your email address will not be published. Required fields are marked *