Back to articles
Technology Insight

Optimizing BBRv3 with FQ-CoDel Queue Management on Ubuntu Linux: A High-Performance Enterprise Guide

June 7, 2026

Introduction to Advanced Network Tuning

In the modern enterprise landscape, network performance is directly tied to business efficiency. As infrastructure transitions to high-bandwidth, high-latency cloud environments and global distributed architectures, traditional network optimization techniques often fall short. Standard congestion control mechanisms frequently suffer from bufferbloat—a phenomenon where excessive buffering in network switches and routers causes a significant spike in latency and jitter.

To mitigate these inefficiencies, network engineers are increasingly turning to a powerful synergistic combination: Google’s latest BBRv3 (Bottleneck Bandwidth and Round-trip propagation time) congestion control algorithm paired with the FQ-CoDel (Fair Queueing Controlled Delay) active queue management (AQM) discipline. This comprehensive technical guide walks through the architectural advantages of this combination and provides an actionable deployment strategy for Ubuntu Linux environments.

---

Understanding the Architecture: Why BBRv3 and FQ-CoDel?

The Evolution of BBRv3

Traditional loss-based congestion control algorithms, such as Cubic (the Linux default), interpret packet loss as an immediate signal of network congestion. While this approach worked well in earlier network paradigms, it causes severe performance degradation in modern networks with inherent packet loss (like wireless networks) or deeply buffered links. Cubic will prematurely slash its window size, leading to underutilized bandwidth.

BBR approaches congestion fundamentally differently. Instead of waiting for packet loss, it continuously models the network path by measuring two critical parameters:

  • RTprop: The minimum round-trip propagation time of the path.
  • BtlBw: The maximum bottleneck bandwidth available on the path.

By keeping the amount of data in flight bounded by the bandwidth-delay product (BDP), BBR maximizes throughput while minimizing queue formation. The latest iteration, BBRv3, introduces significant improvements over its predecessors, including enhanced coexistence with Cubic flows, reduced packet retransmission rates, and superior handling of shallow buffers.

The Role of FQ-CoDel

While BBRv3 manages congestion from the end-host perspective, the network interface card (NIC) requires a local scheduling mechanism to manage packets before they are transmitted onto the wire. This is where FQ-CoDel excels. FQ-CoDel combines fair queueing with an active queue management algorithm.

It separates traffic into multiple virtual queues based on IP flows. This ensures that heavy, bandwidth-hungry flows (like bulk file transfers) do not choke out light, latency-sensitive flows (like SSH sessions, DNS queries, or VoIP traffic). Simultaneously, the CoDel component monitors the dwell time of packets in each queue, dropping packets early if a queue stays full for too long, thereby forcing the sending application to throttle back before bufferbloat destabilizes the connection.

---

Prerequisites and Kernel Upgrades

BBRv3 is not yet mainlined in older LTS Linux kernels. To leverage BBRv3 on Ubuntu, you must deploy a kernel that includes the upstream BBRv3 patches, such as a modern XanMod kernel or a custom-compiled kernel based on the latest stable releases.

Prerequisite Check: Ensure your Ubuntu system is running a modern release (Ubuntu 22.04 LTS or 24.04 LTS) and that you have administrative root privileges via sudo.

Step 1: Installing a Compatible Kernel

For ease of maintenance, we recommend the XanMod kernel, which actively integrates the latest BBRv3 optimizations. Execute the following commands to add the repository and install the kernel:

sudo apt update && sudo apt install -y gnupg curl
curl -fSsL [https://dl.xanmod.org/archive.key](https://dl.xanmod.org/archive.key) | sudo gpg --dearmor -o /usr/share/keyrings/xanmod-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/xanmod-archive-keyring.gpg] [http://deb.xanmod.org](http://deb.xanmod.org) releases main" | sudo tee /etc/apt/sources.list.d/xanmod-kernel.list
sudo apt update && sudo apt install -y linux-xanmod-x64v3

Once the installation completes, reboot your system to initialize the new kernel:

sudo reboot

After the system restarts, verify the active kernel version using uname -r to confirm the successful migration to the optimization-ready kernel.

---

Step-by-Step Configuration of BBRv3 and FQ-CoDel

With a compatible kernel active, we can now configure the system parameters to enforce FQ-CoDel as the default queuing discipline (qdisc) and BBRv3 as the primary congestion control algorithm.

Step 2: Modifying Sysctl Configurations

Linux kernel parameters are managed via the sysctl interface. To make these changes permanent across reboots, append the configurations to the /etc/sysctl.conf file or a dedicated file within /etc/sysctl.d/.

Open the configuration file in a text editor:

sudo nano /etc/sysctl.d/99-network-optimization.conf

Insert the following configuration block, designed specifically for high-throughput enterprise environments:

# Enable FQ-CoDel as the default queuing discipline
net.core.default_qdisc = fq_codel

# Enable BBRv3 Congestion Control
net.ipv4.tcp_congestion_control = bbr

# Optimize memory allocations for TCP buffers (Values in Pages)
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216

# Enable TCP window scaling
net.ipv4.tcp_window_scaling = 1

# Enable selective acknowledgments (SACK)
net.ipv4.tcp_sack = 1

# Enable low latency mode for TCP
net.ipv4.tcp_low_latency = 1

Save the file and exit the editor. Apply the newly configured kernel parameters immediately without a reboot by running:

sudo sysctl --system
---

Verification and Benchmarking

To guarantee that the modifications are applied correctly and executing in the kernel space, perform the following validation steps.

Verifying the Active Congestion Control

Query the kernel to confirm BBRv3 is functioning as the active TCP congestion control algorithm:

sysctl net.ipv4.tcp_congestion_control

The expected output should clearly state: net.ipv4.tcp_congestion_control = bbr. (Note: Depending on the kernel packaging, it may display as bbr, but internally maps to the version 3 specification implemented by the kernel maintainer).

Verifying the Queuing Discipline

Check the active queueing discipline assigned to your network interfaces using the tc (traffic control) command:

tc -s qdisc show

Examine the output for your primary network interface (e.g., eth0 or enp3s0). You should observe qdisc fq_codel listed alongside performance statistics such as sent bytes, packet drops, and queue overruns.

Performance Evaluation with iPerf3

To accurately benchmark the performance gains, use iPerf3 to simulate network load between your optimized Ubuntu server and a remote endpoint. Install iPerf3 on both nodes:

sudo apt install -y iperf3

Run iPerf3 in server mode on the remote host (iperf3 -s), and execute the benchmark test from your optimized Ubuntu client with parallel streams to maximize throughput evaluation:

iperf3 -c [server_ip] -P 8 -t 30

Observe the throughput stability and monitor the system ping concurrently to watch for latency spikes. Under BBRv3 and FQ-CoDel, the round-trip time (RTT) should remain remarkably flat, even when the link is saturated to maximum capacity.

---

Conclusion and Best Practices

The combination of BBRv3 and FQ-CoDel on Ubuntu Linux represents a state-of-the-art optimization stack for enterprise networks. By shifting congestion management from reactionary packet-loss tracking to proactive bandwidth modeling, and pairing it with a fair queue scheduler, organizations can effectively eradicate bufferbloat. This translates to ultra-low latency, reduced packet retransmissions, and consistently high throughput for critical business operations.

As best practices, regularly monitor your interface statistics via tc -s qdisc to ensure packet drop rates remain within acceptable operational tolerances, and validate your configurations after any major kernel or OS upgrades.