BBR (Bottleneck Bandwidth and Round-trip propagation time) is a networking algorithm that responds to actual congestion rather than waiting for packet loss to occur like traditional networking from the olden days (that's the 1980's for you young'uns).


This idea is not new and has been around for a least a decade but with Google's successful implementation at YouTube (at least since July 20, 2017) the stable benefits are hard to ignore (italic emphasis below is ours):

BBR yielded 4 percent higher network throughput, because it more effectively discovers and utilizes the bandwidth offered by the network. BBR also keeps network queues shorter, reducing round-trip time by 33 percent; this means faster responses and lower delays for latency-sensitive applications like web browsing, chat and gaming. Moreover, by not overreacting to packet loss, BBR provides 11 percent higher mean-time-between-rebuffers. These represent substantial improvements for all large user populations around the world, across both desktop and mobile users. https://cloudplatform.googleblog.com/2017/07/TCP-BBR-congestion-control-comes-to-GCP-your-Internet-just-got-faster.html

We typically avoid Google things aside from the Android operating system (quickly replaced by LineageOS or UBPorts).

In our experience Alphabet's flighty and impulsive treatment of its own projects tend to be long-winded alpha-level vaporware. They (Google) test grandiose software en masse sandwiched between thick slices of marketing hype only to abruptly EOL infrastructure (generally without providing an open source forkable release). Fortunately BBR is open sourced here and licensed under the Apache License 2.0.

Before you jump into the terminal shell you'll want to prep a before vs. after test so you can see just how faster your own server is after the BBR installation. The authors over at Cybercitiz.biz has an easy way that does not involve tracking network speeds with specially installed network monitoring tools.

Before you install BBR, upload an iso file to your server's public directory and download it using a url in a browser (or the wget command in the shell). Take note of the time it takes to download the file and how fast your server is able to deliver the data (either in MB's or KB's per second).

Then proceed below with the instructions*:

First, check your current linux kernel (you need 4.9+):

uname -r

Example response: 4.4.0-103-generic

Update your repositories and upgrade your kernel:

sudo apt update

sudo apt install --install-recommends linux-generic-hwe-16.04

 

Edit the of the following file:

sudo nano /etc/sysctl.conf

Add these three lines at the bottom of sysctl.conf:

# ENABLE TCP BBR CONGESTION CONTROL
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr

Ctrl + O, enter to save nano changes
Ctrl + X, enter to exit nano editor

Reboot your server to apply the sysctl.confi file changes:

sudo reboot

Check the changes:

sysctl net.core.default_qdisc

Response: net.core.default_qdisc = fq

sysctl net.ipv4.tcp_congestion_control

Response: net.ipv4.tcp_congestion_control = bbr

 

Now that you have installed and confirmed BBR, its time to rerun your wget and/or browser iso download test. Simply re-visit the same iso file you did before taking note of the time and how fast your server sends the data (either in MB's or KB's per second).

You can easily compare the two notations and with simple division determine what percentage your server networking speed increased due to the BBR's congestion rerouting.

*These instructions were created using information from both LinuxBabe.com and Cyberciti.biz on two seperate live Ubuntu 16.04 LTS servers running multiple websites. It was only through a combination of the two instructions we were able to successfully install and test the performance gains of BBR.

It takes a hood all that and a bag of Fritos to raise a G'server. Holla these digits at (559) 242-6647, send us an email, txt us or imnsho in the comments section below to get your dwerk on!

About the Writer
Chris Lessley
Author: Chris Lessley
A server admin, dev ops warrior and website designer since 2002, Chris is a lover of all things Linux and open-source! Each blog topic has been tested by fire in the real world and shared with the hope to help others. Need more help? Hire me! Chris' other interests include fine art and the humanities in the classical tradition and can be found writing for our friends over at gripfastart.works. If you like this content, kindly consider donating to keep this website free to all, without ads.

Comments powered by CComment

Member of The Internet Defense LeagueOpen Source Initiative