Windows 上的TCP BBRv2

本文最后更新于 2024年4月5日 早上

简介

Windows 11 22H2 现已支持 TCP BBR 拥塞控制。

从10.0.22621版本开始,而尚未发布的Windows Server 2025也会支持此功能。

什么是BBR:https://songxwn.com/TCP_BBR/

开启和验证

查看当前TCP拥塞控制(Powershell 界面)

1
2
3
4
5
6
7
8
9
10
11
12

PS C:\Users\admin> Get-NetTCPSetting | Select SettingName, CongestionProvider

SettingName CongestionProvider
----------- ------------------
Automatic
InternetCustom CUBIC
DatacenterCustom CUBIC
Compat NewReno
Datacenter CUBIC
Internet CUBIC

修改为BBRv2 (使用Powershell 管理员权限)

1
2
3
4
5
6
7

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

验证

1
2
3
4
5
6
7
8
9
10
11
12

PS C:\Users\admin> Get-NetTCPSetting | Select SettingName, CongestionProvider

SettingName CongestionProvider
----------- ------------------
Automatic
InternetCustom BBR2
DatacenterCustom BBR2
Compat BBR2
Datacenter BBR2
Internet BBR2

切换为默认拥塞控制

1
2
3
4
5
6
7
8

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=DatacenterCustom CongestionProvider=cubic
netsh int tcp set supplemental Template=InternetCustom CongestionProvider=cubic


BBR v2好在那里?真的适合我吗?

最好的优化就是不优化,现实中80%以上的网络场景都是不需要优化的,为了不到20%的场景进行全局优化得不偿失,网络问题的关键不是如何全局优化,而是识别出那不到20%的部分并优化。

国内这个网络都懂的,如果你晚上想访问国外的网站,除非你或者网站有钞能力可以使用电信 CN2 联通A网等精品网络,电信163与移动CMI晚高峰出口丢包10%~30%是非常常见的情况,即使是相对用户较少比较富裕的联通169网络,出口处一般也有3%左右的丢包。

BBR(Bottleneck Bandwidth and Round-trip propagation time,BBR)是谷歌在2016年开发的一种新型的TCP 拥塞控制算法。在此以前,互联网主要使用基于丢包的拥塞控制策略,只依靠丢失数据包的迹象作为减缓发送速率的信号。这样做的的效果还是不错的,但随着全球化互联网的迅速普及,我们所使用的网络已经发生了巨大的变化。我们在本地拥有了越来越大的带宽,而现在的互联网质量也越来越好。BBR 尝试通过使用全新的拥塞控制来解决这个问题,它使用基于延迟而不是丢包作为决定发送速率的主要因素。

使用 BBR ,可以获得显著的网络吞吐量的提升和延迟的降低。吞吐量的改善在远距离路径上尤为明显,比如跨洋的文件或者大数据的传输,尤其是在有轻微丢包的网络条件下。延迟的改善主要体现在最后一公里的路径上,而这一路径经常受到缓冲膨胀(Bufferbloat)的影响。所谓“缓冲膨胀”指的网络设备或者系统不必要地设计了过大的缓冲区。当网络链路拥塞时,就会发生缓冲膨胀,从而导致数据包在这些超大缓冲区中长时间排队。在先进先出队列系统中,过大的缓冲区会导致更长的队列和更高的延迟,并且不会提高网络吞吐量。由于 BBR 并不会试图填满缓冲区,所以在避免缓冲区膨胀方面往往会有更好的表现。

BBR2 相比 BBR 更”公平”,同链路下 BBR 会抢占大量 CUBIC 的带宽给自己用,而 BBR2 ,在有延迟和丢包的情况下,它的速度会慢于 BBR ,有时比默认的 CUBIC 还慢,BBR2还解决了BBR在无线网链接下速度恶化的问题,所以开不开得根据自己的链路做测试。

参考来源

https://www.mbrjun.cn/archives/479/

https://www.tjsky.net/tutorial/680


Windows 上的TCP BBRv2
https://songxwn.com/Windows-BBRv2/
作者
Song
发布于
2023年12月12日
更新于
2024年4月5日
许可协议