Bufferbloat and SQM

TL;DR

Do you sometimes have sluggish web browsing, stuttering video calls, and/or laggy online games despite having pretty fast broadband? You might not need an even faster connection - your network might be suffering from bufferbloat instead.

Run a test here to check.

If you are, consider:

  • enabling Smart Queue Management (SQM) on your router - if it supports it
  • flashing your router with software that supports SQM (not recommended for non-technical users)
  • upgrading your router to one that supports SQM
  • asking your Internet Service Provider (ISP) what they are doing to solve bufferbloat on their network.

In slightly longer form:

I really don’t understand why this problem isn’t talked about more widely, especially as solutions are available. I’ve tried to write down a simplified summary to help my own understanding - I’ve included links at the bottom if you want to read more.

Buffers

Buffers exist anywhere that a computer or device has to deal with a network (e.g. the internet). These buffers are used to smooth out spikes in load that can’t be handled in real time; as requests arrive they are put into a queue and processed from there as soon as possible afterwards. The buffer you most often will run into is the one in your router (but not the only one).

Most of these buffers are used naively, with a first-in-first-out system. They also try hard to ensure no packets are lost, so allow the buffer to keep growing even if it is already very big.

Getting bloated

When something is trying to transfer a lot of data at once (e.g. streaming a 4K video), the buffer(s) fill up. When some other application tries to transfer some data (e.g. a video call), its data gets caught up in that queue. This causes lag, video frames dropping, and audio breaking up.

This is known as bufferbloat.

You can run a simple test to see if your network is suffering from it here.

The good news

Bufferbloat is a solvable problem!

Routers (and other network devices) can implement something known as Smart Queue Management (SQM). There are a variety of SQM algorithms, but CAKE comes with sane defaults and should result in an instant performance improvement for most people in most cases.

In essence CAKE gives every application talking to it its own buffer instead of using one large one for everything. CAKE rotates between each buffer processing a handful of packets before moving on to the next one. This means that applications sending infrequent but latency sensitive packets (online gaming, video calls) no longer get stuck behind applications sending data in bulk (video streaming)!

The less-good news

There are not many consumer-friendly solutions for bufferbloat. Yet.

Most consumer routers do not have any SQM settings available on them. Those that do tend to be expensive. It is possible to install software that gives you SQM options (like OpenWRT) onto your router, but this is not recommended for average users.

Note that your router is not the only buffer that your data will pass through on its journey through the internet. Your ISP could have SQM set up (or not) on their systems, and that will affect how much bufferbloat you notice. You can ask them what they are doing to solve bufferbloat.

Further reading