Configure BBR to Improve the Throughput of HK CN2 Servers

You want to improve throughput on your Hong Kong CN2 servers. BBR acceleration offers a modern solution that helps you achieve higher speeds and lower latency. On Linux servers, bbr congestion control uses bandwidth and delay estimates instead of packet loss, which gives you better performance with large bandwidth-delay products. Many users in Asia-Pacific data centers report these benefits:
Significant goodput improvements compared to traditional algorithms like Cubic
Up to 115% increase in goodput at high latency and bandwidth
Stable results under heavy loads
You ensure a smooth and persistent setup when you follow best practices during configuration.
Key Takeaways
BBR acceleration improves network throughput and reduces latency by estimating bandwidth and round-trip time instead of relying on packet loss.
Ensure your Linux kernel version is 4.9 or higher to enable BBR. Upgrade the kernel if necessary using tools like ELRepo for CentOS.
Set the default queue discipline to ‘fq’ and the TCP congestion control to ‘bbr’ using sysctl commands for optimal performance.
Make BBR settings persistent by saving configurations in ‘/etc/sysctl.d/99-bbr.conf’ and ensuring the BBR module loads at boot.
Test network performance with tools like iperf3 and ping before and after enabling BBR to measure improvements in throughput and latency.
BBR Congestion Control Overview
What Is BBR Congestion Control
You use bbr to improve your server’s network performance. This congestion control algorithm works differently from traditional methods like CUBIC or Reno. Instead of relying on packet loss, bbr congestion control estimates the bottleneck bandwidth and round-trip propagation time. It builds a model of the network by measuring available bandwidth and minimum round-trip time (RTT). You benefit from this approach because bbr dynamically adjusts the pacing rate and congestion window, which helps you achieve optimal throughput and lower latency.
Note: bbr acceleration uses two main parameters—pacing rate and congestion window (CWND)—to manage how much data your server sends. This method reduces congestion and keeps your queue sizes small.
You can see several key features in tcp bbr that contribute to improved throughput:
Bandwidth estimation measures available bandwidth by analyzing packet delivery rates.
RTT estimation maintains minimum and base RTT to adjust pacing rates, reducing latency.
Bottleneck detection identifies the bottleneck link using probing and RTT feedback.
Congestion window management adjusts the forwarding rate based on pacing gain and probing.
Low latency operation keeps queue sizes minimal, further reducing latency.
Why Use BBR Acceleration on Hong Kong CN2 Servers
Hong Kong CN2 servers face unique network challenges. You often see local traffic reach speeds up to 1Gbps, but international bandwidth is restricted to 20Mbps. Routing detours are common, and only China Mobile offers direct return routing. These issues increase latency and limit throughput.
You address these challenges with bbr acceleration. By using the current congestion control algorithm, you optimize your server’s performance for both local and international users. BBR helps you overcome bottlenecks and reduce delays. You also improve your qdisc settings, which further enhances your network efficiency. When you deploy bbr, you make your Hong Kong CN2 server more reliable and responsive.
Linux Prerequisites for BBR Acceleration
Kernel Version Requirements
You must check your linux kernel version before you enable BBR. The congestion control algorithm requires kernel 4.9 or higher. Most modern distributions, such as centos 7, centos 8, centos Stream, AlmaLinux, and Rocky Linux, support this requirement. You can use the following command to verify your kernel version:
uname -r
If your kernel version is below 4.9, you need to upgrade. Centos users often update their kernel using the ELRepo repository. AlmaLinux and Rocky Linux provide newer kernels by default. You should always back up your data before you upgrade the kernel. The linux kernel version determines if you can use BBR as your congestion control algorithm.
Tip: You can check compatibility by reading your distribution’s documentation. Centos, AlmaLinux, and Rocky Linux have guides for kernel upgrades.
Preparing Your Linux Server
You must prepare your linux server for BBR acceleration. First, update your system packages. Use the following command on centos:
sudo yum update -y
Next, verify that your kernel supports the fair queueing packet scheduler. This scheduler improves packet handling and works well with BBR. You can check the available schedulers with:
sysctl net.core.default_qdisc
You should set the default queue discipline to fq for optimal results. Use sysctl to apply this setting:
sysctl -w net.core.default_qdisc=fq
You must also configure sysctl to use BBR as the congestion control algorithm. Set the tcp congestion control to bbr:
sysctl -w net.ipv4.tcp_congestion_control=bbr
You should add these sysctl settings to your /etc/sysctl.conf file. This step ensures that BBR remains active after you reboot your linux server. You must check your packet handling and verify that your server uses the correct scheduler and congestion control algorithm.
Note: Always test your network after you change sysctl settings. You can use ping or iperf3 to check packet loss and latency.
Configure BBR Acceleration Step-by-Step
Check Linux Kernel Version
You must check your kernel version before you start bbr acceleration. The kernel determines if your server supports the congestion control algorithm. You can use simple commands to find your current kernel version:
Run
uname -rto display the kernel version.After a system restart, run
uname -ragain to confirm the latest kernel is active.
If your kernel version is greater than 4.9, you can proceed. If not, you need to upgrade. On CentOS, you follow these steps:
Import the ELRepo GPG key and install the repository:
sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org sudo rpm -Uvh https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpmInstall the latest mainline kernel:
sudo yum --enablerepo=elrepo-kernel install kernel-ml -ySet the new kernel as the default boot entry:
sudo grub2-set-default 0Regenerate the GRUB configuration:
sudo grub2-mkconfig -o /boot/grub2/grub.cfgReboot your server:
sudo rebootAfter reboot, verify the kernel version:
uname -r
You must see a version number greater than 4.9. This step ensures your server is ready for bbr acceleration.
Enable BBR Acceleration
You enable bbr acceleration by setting the correct sysctl parameters. These parameters control how your server handles network traffic. You need to edit your sysctl configuration file. Open /etc/sysctl.conf or create a new file at /etc/sysctl.d/99-bbr.conf. Add the following lines:
Parameter | Value |
|---|---|
net.core.default_qdisc | fq |
net.ipv4.tcp_congestion_control | bbr |
You save the file and apply the configuration:
sudo sysctl --system
You can also use sudo sysctl -p to refresh the settings. These changes activate bbr and set the fair queue discipline for your network. You optimize your server for better throughput and lower latency.
Tip: You can load the bbr module manually with
sudo modprobe tcp_bbr. Runlsmod | grep bbrto check if the module is loaded.
Make BBR Persistent
You must make your bbr configuration persistent. This step ensures bbr acceleration remains active after every reboot. You create a dedicated file under /etc/sysctl.d/ instead of appending lines to /etc/sysctl.conf. This method keeps your configuration easy to manage and avoids duplicate entries.
Create
/etc/sysctl.d/99-bbr.confwith the following content:net.core.default_qdisc=fq net.ipv4.tcp_congestion_control=bbrEnsure the bbr module loads at boot by creating
/etc/modules-load.d/bbr.conf:tcp_bbrIf the module loading file is missing, run:
echo 'tcp_bbr' | sudo tee /etc/modules-load.d/bbr.conf
You apply the new sysctl settings:
sudo sysctl --system
Note: Using a dedicated sysctl file helps you audit, reapply, or remove bbr acceleration easily. This approach works well across different Linux distributions.
Verify BBR Activation
You must verify that bbr is active on your server. You use several commands to check the congestion control algorithm and queue discipline. You also confirm that bbr manages your network connections.
Command | Purpose |
|---|---|
| Check the active congestion control algorithm |
| Confirm the queue discipline is set to Fair Queue |
`lsmod | grep bbr` |
`ss -ti | grep -i bbr` |
You expect the following output:
Command | Expected Output |
|---|---|
sysctl net.ipv4.tcp_congestion_control | net.ipv4.tcp_congestion_control = bbr |
lsmod | grep bbr |
ss -tin | Look for |
Callout: If you see
bbrlisted in the congestion control output and the module loaded, your server uses bbr acceleration. You can now enjoy improved network throughput and lower latency.
You complete these steps to configure bbr acceleration on your Hong Kong CN2 server. You ensure persistent and reliable performance by following these best practices.
Benchmark and Optimize Throughput
Test Performance with iperf3, ping, curl
You need to measure the impact of bbr on your server’s performance. Start by using tools like iperf3, ping, and curl. These tools help you check network throughput, latency, and packet loss before and after enabling bbr.
Use
iperf3to test throughput between your Hong Kong CN2 server and a remote client. Runiperf3 -son the server andiperf3 -c <server_ip>on the client.Use
pingto measure round-trip time and packet loss. Runping <destination_ip>and observe the average latency and any lost packets.Use
curl -o /dev/null -s -w "%{time_total}\n" <url>to test download speed and total transfer time.
Tip: Run these tests multiple times to get consistent results. You can compare the numbers before and after enabling bbr to see network speed improvements and lower latency.
Adjust Network Settings for Optimal Results
You can further boost performance by tuning your network settings for bbr. Follow these steps to achieve enhanced throughput, especially on high-latency international routes:
Calculate the bandwidth-delay product (BDP). Measure RTT with
pingand multiply by your bandwidth. For example, a 100 Mbps link with 80ms RTT gives a BDP of 1 MB. Set buffer sizes to at least twice the BDP for headroom.Apply WAN-optimized TCP settings. Increase socket buffers by setting
net.core.rmem_maxandnet.core.wmem_maxto large values. Enable window scaling withnet.ipv4.tcp_window_scaling = 1.Disable slow start after idle by setting
net.ipv4.tcp_slow_start_after_idle = 0. This prevents performance drops after idle periods.Tune keepalive settings to detect dead connections faster. Set
net.ipv4.tcp_keepalive_time = 300,net.ipv4.tcp_keepalive_intvl = 30, andnet.ipv4.tcp_keepalive_probes = 10.Test WAN performance by simulating latency with
tc qdiscand comparing throughput between CUBIC and bbr usingiperf3.
You will often see bbr deliver 2-5× better throughput than CUBIC on lossy WAN links. This happens because bbr maintains high performance even when packet loss and latency are present. These settings help you achieve network throughput gains and lower packet loss, making your server ideal for international users.
Note: Adjusting TCP window size and prioritizing HTTP/2 traffic can also lead to enhanced throughput and improved performance for web applications.
Troubleshooting and Automation
Common Issues with BBR on Linux
You may encounter several issues when you enable BBR on your Linux server. Understanding these problems helps you fix them quickly and maintain optimal performance. Here are the most common issues and their solutions:
Wrong queue discipline (qdisc)
You must set the queue discipline tofqfor BBR to work correctly. If you use another discipline, BBR may not deliver the expected throughput. Run this command to set the correct queue discipline:sudo sysctl -w net.core.default_qdisc=fqTip: Always check your queue discipline after making changes. Use
sysctl net.core.default_qdiscto verify.Buffer limits too low
You need to increase TCP buffer sizes if you want higher throughput. Low buffer limits restrict BBR’s ability to optimize data flow. Adjust the buffer sizes by editing your sysctl settings:sudo sysctl -w net.core.rmem_max=16777216 sudo sysctl -w net.core.wmem_max=16777216Callout: Larger buffers help BBR handle more data and reduce packet loss.
Network bottleneck elsewhere
You should check your physical network for bottlenecks. BBR improves TCP performance, but it cannot fix hardware or infrastructure limitations. Test your cables, switches, and upstream bandwidth to ensure nothing blocks your server’s traffic.
Issue | Solution |
|---|---|
Wrong queue discipline | Set |
Buffer limits too low | Increase TCP buffer sizes |
Network bottleneck elsewhere | Check hardware and network infrastructure |
Automate BBR Configuration
You can automate BBR configuration to save time and reduce errors. Automation ensures your settings remain consistent after reboots or system updates. Create a script that applies all necessary sysctl parameters and loads the BBR module.
Here is a simple Bash script you can use:
#!/bin/bash
sudo sysctl -w net.core.default_qdisc=fq
sudo sysctl -w net.ipv4.tcp_congestion_control=bbr
sudo sysctl -w net.core.rmem_max=16777216
sudo sysctl -w net.core.wmem_max=16777216
sudo modprobe tcp_bbr
Note: Place this script in
/usr/local/bin/and schedule it withcronor add the settings to/etc/sysctl.d/99-bbr.conffor persistent configuration.
You can also use configuration management tools like Ansible or Puppet. These tools help you deploy BBR settings across multiple servers with ease. Automation keeps your network optimized and reduces manual work.
You gain faster and more reliable network performance when you enable BBR acceleration on your Hong Kong CN2 server. To keep your setup optimal, follow these best practices:
Increase network buffer sizes and enable TCP window scaling.
Apply changes with
sudo sysctl -pfor immediate effect.Test BBR with your actual workloads and monitor results.
Update your Linux system regularly for compatibility.
You should always monitor performance and troubleshoot issues to maintain the best results.
FAQ
Can you enable BBR on any Linux distribution?
You can enable BBR on most modern Linux distributions if your kernel version is 4.9 or higher. Check compatibility using uname -r. Upgrade your kernel if needed.
Does BBR improve performance for all network types?
BBR works best on high-latency and high-bandwidth connections. You may not see much improvement on local networks with low latency.
Tip: Test your network before and after enabling BBR to measure the difference.
How do you check if BBR is active?
Run this command to verify:
sysctl net.ipv4.tcp_congestion_control
You should see bbr as the output. This confirms BBR is active.
Will BBR settings persist after reboot?
You ensure persistence by adding BBR settings to /etc/sysctl.d/99-bbr.conf. This file loads automatically after each reboot.
Setting | File Location |
|---|---|
BBR configuration |
|
Can you automate BBR setup across multiple servers?
You can use scripts or tools like Ansible to automate BBR configuration. This saves time and keeps your settings consistent.
Note: Automation helps you avoid manual errors and speeds up deployment.

