Windows 11(22H2 or Later)启用全新BBRv2拥塞控制算法

sakuraikaede 发布于 2025-07-23 最后更新于 2025-07-24 400 次阅读 无~ 未分类


前言

在Windows 11 22H2时,Microsoft引入了BBRv2拥塞控制算法。从10.0.22621版本开始,Windows Server 2025也支持此功能。旧版的Windows无法启用此功能,强行启用会导致异常。


什么是BBR ?

BBR (Bottleneck Bandwidth and Round-trip propagation time)是Google 在2016 年发布的一套拥塞控制算法。传统控制算法如CUBIC,Reno等,基于丢包率进行链路可用带宽的测量,如链路发生波动(即使此时传输速度还没有达到链路的上限),上述传统的拥塞控制算法也会主动降低传输速度,这导致了比较严重的链路带宽浪费,且不适用于国际方向线路(比如通常中国运营商的国际出口会出现较大波动和丢包等不稳定情况,也会导致这些传统拥塞控制算法的工作性能受到影响。

而BBR并不依赖丢包率进行链路带宽的测量,BBR 的主要目标是通过精确估计网络的瓶颈带宽和往返时间(RTT) 来动态地调整TCP 的发送速率,从而实现更高效的网络利用率。

以下是BBR的一些技术特征:

  • 带宽探测: BBR 通过定期发送数据包来测量网络的带宽,而不是依赖于丢包来判断网络拥塞。
  • RTT 估算: BBR 同时测量数据包的往返时间,这有助于更准确地调整发送速率,避免网络拥塞。
  • 拥塞窗口管理: BBR 根据带宽和RTT 的估算值动态地调整拥塞窗口,以优化吞吐量和延迟。
  • 不依赖丢包: BBR 不仅仅依赖于丢包来判断网络拥塞,而是通过带宽和RTT 的估算来做出决策,这使得它在存在丢包的网络环境中表现更好。

BBR还有以下两种工作模式:

  • ProbeBW: 寻找网络的最大带宽。
  • ProbeRTT: 减少往返时间,降低延迟。

如何启用BBRv2 ?

Windows上启用BBRv2需要通过Powershell进行操作,BBRv2在Windows上简称为BBR2。

查看系统当前的拥塞控制算法

在 PowerShell 窗口中输入以下命令,查看当前的拥塞控制算法:

Get-NetTCPSetting | Select SettingName, CongestionProvider

系统会返回如下的信息:

证明当前Windows使用CUBIC作为默认的拥塞控制算法。

修改Windows默认的拥塞控制算法为 BBRv2:

为了确保 BBRv2 生效,你需要将所有常用的 TCP 设置模板都修改为使用BBR2。

在 PowerShell 中逐行输入以下命令:

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=InternetCustom congestionprovider=BBR2
netsh int tcp set supplemental template=DatacenterCustom congestionprovider=BBR2

再次使用如下命令,可查看默认拥塞控制算法信息是否已变更为BBR2:

Get-NetTCPSetting | Select SettingName, CongestionProvider

还原Windows默认拥塞控制算法设置

在 PowerShell 中逐行输入以下命令:

netsh int tcp set supplemental template=Internet congestionprovider=CUBIC
netsh int tcp set supplemental template=Datacenter congestionprovider=CUBIC
netsh int tcp set supplemental template=Compat congestionprovider=NewReno 
netsh int tcp set supplemental template=InternetCustom congestionprovider=CUBIC
netsh int tcp set supplemental template=DatacenterCustom congestionprovider=CUBIC

再次使用如下命令,可查看默认拥塞控制算法信息是否已还原为CUBIC和Reno:

Get-NetTCPSetting | Select SettingName, CongestionProvider
此作者没有提供个人介绍。
最后更新于 2025-07-24