Introduction to BBR#
BBR (Bottleneck Bandwidth and Round-trip propagation time) is a newer TCP congestion control algorithm developed by Google. It aims to address the issues of low bandwidth utilization and high latency that traditional congestion control algorithms (such as Reno or CUBIC) face under certain network conditions, especially in networks with some packet loss and delay.
Core Idea#
The core idea of BBR is to no longer rely on packet loss as the primary signal for judging network congestion. Traditional congestion control algorithms typically reduce the sending rate only upon detecting packet loss, but this can lead to underutilization of available bandwidth or introduce unnecessary delays (bufferbloat) in networks with large buffers or slight random packet loss.
Instead, BBR actively measures two key parameters of the network:
- Bottleneck Bandwidth (BtlBw): The upper limit of the data transmission rate in the network path, i.e., the capacity of the narrowest link in the path.
- Round-trip Propagation Time (RTprop): The shortest time required for a packet to travel to the destination and back in the network path, excluding the queuing time in intermediate device buffers.
Working Mechanism#
BBR dynamically adjusts its sending behavior by periodically probing these two parameters:
- Probing Bottleneck Bandwidth: BBR sends data at a rate slightly higher than the current estimated bottleneck bandwidth for a period to check if there is higher available bandwidth.
- Probing Round-trip Propagation Time: BBR sends data at a rate slightly lower than the current estimated bottleneck bandwidth for a period to drain the queue in the path, thus measuring a more accurate RTprop.
In this way, BBR attempts to maintain the amount of data in transit (inflight data) at a level slightly above the bandwidth-delay product (BDP = BtlBw * RTprop). This allows it to fully utilize the bandwidth of the bottleneck link while also avoiding excessive queuing and high latency in the network.
Main Advantages#
- High Throughput: Especially in long fat networks with some packet loss and delay, BBR typically achieves higher throughput than traditional algorithms.
- Low Latency: By actively controlling queuing, BBR can effectively reduce network latency and avoid bufferbloat issues.
- Insensitivity to Packet Loss: Since it does not primarily rely on packet loss to judge congestion, BBR performs more stably in networks with a small amount of random packet loss.
Conditions for Enabling BBR on Windows#
The operating system must support it. The version requirement may be Windows 11 version 22H2 or higher.
Run PowerShell as an administrator and send the following command to check the supported algorithms of the system:
[Enum]::GetNames([Microsoft.PowerShell.Cmdletization.GeneratedTypes.NetTCPSetting.CongestionProvider])
It may output something like:
Default
NewReno
CTCP
DCTCP
LEDBAT
CUBIC
BBR2
This list represents the names of congestion control algorithms that the system can recognize and configure in TCP settings. Default
usually means that the system decides to use CUBIC or other algorithms based on specific templates or global settings.
Attempting to Use BBR Congestion Control Algorithm on Windows#
Check the currently configured congestion control algorithms:
Get-NetTCPSetting | Select SettingName, CongestionProvider
The output may look like this:
SettingName CongestionProvider
----------- ------------------
Automatic
InternetCustom CUBIC
DatacenterCustom CUBIC
Compat NewReno
Datacenter CUBIC
Internet CUBIC
Try to enable:
Set-NetTCPSetting -SettingName InternetCustom -CongestionProvider BBR2
Error message:
Set-NetTCPSetting : Property CongestionProvider is read-only
At line:1 char:1
+ Set-NetTCPSetting -SettingName InternetCustom -CongestionProvider BBR ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (MSFT_NetTCPSett...ystemName = ""):ROOT/StandardCimv2/MSFT_NetTCPSetti
ng) [Set-NetTCPSetting], CimException
+ FullyQualifiedErrorId : Windows System Error 87,Set-NetTCPSetting
Current Issues with BBR Algorithm on Windows#
At this point, it is found that Windows's support for BBR is not yet complete, with many bugs (the first two sources mentioned that enabling BBR would disrupt "localhost" (loopback interface) TCP traffic, causing connections within the same machine to become slow or unresponsive), such as:
- It disrupts Steam, as Steamwebhelper can no longer start, and when using Internet Download Manager, it breaks all download hooks; when switched back to CUBIC, they work again — Fix BBR2 bugs on Windows 11 - Microsoft Community, created on May 8, 2025
- A new bug in BBR2 24H2 is unstable connections. My Firefox browser randomly receives
NS_BINDING_ABORT
errors. My Visual Studio Code Remote development plugin gets stuck when connecting and shows the following error:failed to set up socket for dynamic port forward to remote port =: proxy connection timed out.
My Messenger (UWP) app nearly crashes (new messages fail to display). — Windows 11 24H2 and BBR2 : r/Windows11 - It interrupts local console connections in Hyper-V (since Windows 11 23H2). The console shows
Connecting to '[VM]'
for several minutes, then fails and displaysVideo remoting was disconnected
, along with a prompt sayingCould not connect to the virtual machine.
— How to enable TCP BBR on Windows - Stack Overflow - v2rayN cannot update geographic files, core, or connect to proxy servers. — [Bug]: BBR2 congestion algorithm on Windows causes v2rayN to stop working · 2dust/v2rayN
Therefore, it has been decided to temporarily not enable BBR. If you want to try enabling it, you can use the following commands:
netsh int tcp set supplemental template=Internet congestionprovider=BBR2
netsh int tcp set supplemental template=InternetCustom congestionprovider=BBR2
netsh int tcp set supplemental template=Datacenter congestionprovider=BBR2
netsh int tcp set supplemental template=DatacenterCustom congestionprovider=BBR2
netsh int tcp set supplemental template=Compat congestionprovider=BBR2
Here, you can also replace BBR2
with BBR
(BBR v1) to test and compare the effects.
Then check the currently configured congestion control algorithms to see if it has been set to BBR2
:
Get-NetTCPSetting | Select SettingName, CongestionProvider
On Windows 11 23H2 / 24H2, enabling BBR v2 may cause local TCP connections to become unavailable (e.g., causing adb to fail, Steam to break, etc.). In this case, please revert the congestion control algorithm to the previous configuration. After reverting, no restart is needed, and the issue should be resolved immediately.
This article is not yet complete, and comments or feedback are welcome to inform me of the latest information.
References#
Set-NetTCPSetting (NetTCPIP) | Microsoft Learn
Enable TCP BBR v2 on Linux & Windows 11 - Coxxs
Other Versions of This Page#
This article is available in multiple languages.
If you would like to leave a comment, please visit the following pages:
These pages are for browsing only and do not support comments or messages, but they provide more language options and load faster:
ZH EN ZH-TW JA RU KO CS ES AR FR PT DE TR IT NL SV DA FI PL UK HE RO HU EL HR TH HI BN ID SW VI NO