TCP BBR - Exploring TCP congestion control

Photo by Kalen Emsley on Unsplash

BBR

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

Why is BBR better?

Photo by Zakaria Zayane on Unsplash

let’s take BBR for a spin!

tc qdisc replace dev enp0s20f0 root netem latency 70ms
root@compute-000:~# ping 147.75.69.253
PING 147.75.69.253 (147.75.69.253) 56(84) bytes of data.
64 bytes from 147.75.69.253: icmp_seq=1 ttl=61 time=140 ms
64 bytes from 147.75.69.253: icmp_seq=2 ttl=61 time=140 ms
64 bytes from 147.75.69.253: icmp_seq=3 ttl=61 time=140 ms
sysctl -w net.ipv4.tcp_congestion_control=cubic
sysctl -w net.ipv4.tcp_congestion_control=bbr

The effect of packet loss on throughput

tc qdisc replace dev enp0s20f0 root netem loss 1.5% latency 70ms
Throughput Test results with various congestion control algorithms

TCP socket statistics

root@compute-000:~# ss -tniState          Recv-Q            Send-Q                                 Local Address:Port                                  Peer Address:PortESTAB 0 9172816 [::ffff:147.75.71.47]:5201 [::ffff:147.75.69.253]:37482
bbr wscale:8,8 rto:344 rtt:141.401/0.073 ato:40 mss:1448 pmtu:1500 rcvmss:536 advmss:1448 cwnd:3502 ssthresh:4368 bytes_acked:149233776 bytes_received:37 segs_out:110460 segs_in:4312 data_segs_out:110459 data_segs_in:1 bbr:(bw:354.1Mbps,mrtt:140,pacing_gain:1,cwnd_gain:2) send 286.9Mbps lastsnd:8 lastrcv:11008 pacing_rate 366.8Mbps delivery_rate 133.9Mbps busy:11008ms rwnd_limited:4828ms(43.9%) unacked:4345 retrans:7/3030 lost:7 sacked:1197 reordering:300 rcv_space:28960 rcv_ssthresh:28960 notsent:2881360 minrtt:140

When to use BBR

Downsides of BBR

--

--

--

Dutch Network geek based in Vancouver Canada. http://twitter.com/atoonk/

Love podcasts or audiobooks? Learn on the go with our new app.

Recommended from Medium

How to Display Opening Hours for Restaurants — P1 — Using Meta Box + Gutenberg

How to Display Opening Hours for Restaurants — P1 — Using Meta Box + Gutenberg

My Foray into the World of Open Source

Design System Release Cadence

Protect the Treasure Chests!

Using Kotlin in a Serverless Architecture with AWS Lambda — Part 3: Designing and Implementing a…

Image Processing In Python Using openCV

The Best 10 Web Hosting Services for Small and Big Businesses

Your multiple web’s Server

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Andree Toonk

Andree Toonk

Dutch Network geek based in Vancouver Canada. http://twitter.com/atoonk/

More from Medium

Dns-prefetch & Preconnect: 7 Tips, Tricks and Pitfalls

Big 4 story library full of shelves with books on them.

Sharing Static Data Within Spend

An overview of message brokers

A Hitchhiker’s Guide to Spinnaker Plugins