This article briefly introduces how to enable the BBR congestion control algorithm on Windows devices, and the potential problems of using this feature currently.
BBR Introduction
BBR (Bottleneck Bandwidth and Round-trip propagation time) is a newer TCP congestion control algorithm developed by Google. It aims to solve the problems of low bandwidth utilization and high latency of traditional congestion control algorithms (such as Reno or CUBIC) under certain network conditions (especially in networks with a certain packet loss rate and latency).
Core Idea
The core idea of BBR is to no longer rely on packet loss as the main signal to determine network congestion. Traditional congestion control algorithms usually reduce the sending rate only when packet loss is detected. However, in networks with large buffers or slight random packet loss, this may lead to failure to fully utilize the available bandwidth, or introduce unnecessary delays (buffer bloat).
BBR instead actively measures two key parameters of the network:
- Bottleneck Bandwidth (BtlBw): The upper limit of the data transfer rate in the network path, that is, the capacity of the narrowest link in the path.
- Round-trip Propagation Time (RTprop): The shortest time required for a data packet to travel back and forth in the network path, excluding queuing time in intermediate device buffers.
Working Mechanism
BBR dynamically adjusts its sending behavior by periodically probing these two parameters:
- Probing Bottleneck Bandwidth: BBR will send data at a rate slightly higher than the currently estimated bottleneck bandwidth for a period of time to probe whether there is higher available bandwidth.
- Probing Round-trip Propagation Time: BBR will send data at a rate slightly lower than the currently estimated bottleneck bandwidth for a period of time to empty the queue in the path, so as to measure a more accurate RTprop.
In this way, BBR tries to maintain the amount of data being transmitted (inflight data) at a level slightly higher than the bandwidth-delay product (BDP = BtlBw * RTprop). This can fully utilize the bandwidth of the bottleneck link and avoid excessive queuing and high latency in the network.
Main Advantages
- High Throughput: Especially in long-fat networks (LFNs) with a certain packet loss and latency, BBR usually achieves higher throughput than traditional algorithms.
- Low Latency: By actively controlling queuing, BBR can effectively reduce network latency and avoid buffer bloat problems.
- Not Sensitive to Packet Loss: Since it does not mainly rely on packet loss to determine congestion, BBR performs more stably in networks with a small amount of random packet loss.
Conditions for Enabling BBR on Windows
Operating system support is required. The version requirement may be Windows 11 version 22H2 and above.
Run Powershell as an administrator and send the following command to understand the algorithms supported by 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 congestion control algorithm names that the system can recognize and configure in TCP settings. Default
usually means that the system decides to use CUBIC or other algorithms according to a specific template or global settings.
Trying to Use the BBR Congestion Control Algorithm on Windows
View the currently configured congestion control algorithm:
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:
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 Problems with Using the BBR Algorithm on Windows
At this time, it is learned that Windows’s BBR support is not perfect and has many bugs (the first two materials mention that enabling BBR will break “localhost” (loopback interface) TCP traffic, causing connections within the same machine to become slow or unresponsive), such as:
- Will break Steam, because Steamwebhelper can no longer start, and when using Internet Download Manager, it breaks all download hooks, and when changed back to CUBIC, they work again —— Fix BBR2 bugs on Windows 11 - Microsoft Community , created on May 8, 2025
- The new bug of BBR2 24H2 is unstable connection. My Firefox browser randomly gets
NS_BINDING_ABORT
errors. My Visual Studio Code Remote development plugin gets stuck when connecting and gives the following error:failed to set up socket for dynamic port forward to remote port =: proxy connection timed out.
. My Messenger (UWP) app almost crashes (new messages cannot be displayed). —— Windows 11 24H2 and BBR2 : r/Windows11 - Will interrupt Hyper-V’s local console connection (since Windows 11 23H2). The console will display
Connecting to '[VM]'
for a few minutes, then fail withVideo remoting was disconnected
and pop up the promptCould not connect to the virtual machine.
—— How to enable TCP BBR on Windows - Stack Overflow - v2rayN cannot update geographic files, core or connect to the proxy server. —— [Bug]: BBR2 congestion algorithm in Windows causes v2rayN to stop working · 2dust/v2rayN
Therefore, it was decided not to enable BBR for the time being. If you want to try to enable it, you can try the command:
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 whether the currently configured congestion control algorithm has been configured as BBR2
:
Get-NetTCPSetting | Select SettingName, CongestionProvider
On Windows 11 23H2 / 24H2, enabling BBR v2 may cause local TCP connections to be unavailable (for example, causing adb to be unusable, Steam to fail, etc.), at this time, please restore the congestion control algorithm to the previous configuration. No restart is required after recovery, and the problem should be resolved immediately.
This article is not perfect, please leave a message or comment to inform me of the latest information.
Reference
Set-NetTCPSetting (NetTCPIP) | Microsoft Learn
Enable TCP BBR v2 on Linux & Windows 11 - Coxxs
Other Versions of This Webpage
This article has versions in multiple languages.
If you would like to leave a comment, please visit the following webpages:
These webpages only support browsing and do not support commenting or leaving messages, but provide more language options and have shorter loading times:
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