Showing posts with label TCP. Show all posts
Showing posts with label TCP. Show all posts

How to enable TCP BBR2 network congestion control on Windows 11

 Generally, when we use the Linux series operating system, we will install Google's BBR network congestion control software. BBR v2 version can now be enabled on Windows 11.

BBRv2 is a model-based congestion control algorithm designed for reduced queuing, low loss, and (bounded) Reno/CUBIC coexistence. Maintains a model network path using measurements of bandwidth and RTT, and (if occurring) packet loss and/or DCTCP/L4S style ECN signaling.

BBR2 is more "fair" than BBR. In the case of delay and packet loss, its speed will be much slower than BBR, and sometimes slower than the default CUBIC, so you have to test it according to your own link. It can only be regarded as something that is better than nothing.

Windows Server now uses the CUBIC congestion control algorithm by default, which is currently the most commonly used congestion control algorithm.

This article directory

  • 1. Related Links
  • 2. Operation steps
    • 2.1. Windows 11
    • 2.2. Linux
  • 3. Restore settings

Related Links

Google BBR GitHub: https://github.com/google/bbr

Introduction to TCP BBR v2 Alpha/Preview

Steps

Windows 11

The requirement Windows 11is 22h2version and above.

1. Open powershell and right-click to run with administrator privileges

netsh int tcp set supplemental Template=Internet CongestionProvider=bbr2
netsh int tcp set supplemental Template=Datacenter CongestionProvider=bbr2
netsh int tcp set supplemental Template=Compat CongestionProvider=bbr2
netsh int tcp set supplemental Template=DatacenterCustom CongestionProvider=bbr2
netsh int tcp set supplemental Template=InternetCustom CongestionProvider=bbr2

2. Verify whether it is successfully opened

Get-NetTCPSetting | Select SettingName, CongestionProvider
Picture[1]-How to enable TCP BBR2 network congestion control on Windows 11-Ritz Miscellaneous

Linux

View the current congestion control algorithm

sysctl net.ipv4.tcp_congestion_control

If the output is sysctl net.ipv4.tcp_congestion_controlsomething like that, it means our current algorithm is CUBIC and we edited /etc/sysctl.confto change it to BBR.

net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr

save and apply

sysctl -p

Checking again we will see

net.ipv4.tcp_congestion_control = bbr

The above shows that net.ipv4.tcpit can actually be used in IPv6.

restore settings

Sometimes unexpected problems may occur after opening.

We can enter the following command in powershell to restore.

netsh int tcp set supplemental template=internet congestionprovider=CUBIC
netsh int tcp set supplemental template=internetcustom congestionprovider=CUBIC
netsh int tcp set supplemental template=Datacenter congestionprovider=CUBIC
netsh int tcp set supplemental template=Datacentercustom congestionprovider=CUBIC