Windows 11 22H2 开启 TCP BBR v2 拥塞控制算法
Windows 11 22H2 已经支持 TCP BBR v2 拥塞控制。本文就是阐述协,怎么如何从 Windows 系统默认的 Cubic 拥塞控制切换到 BBR v2 拥塞控制。
查看目前的拥塞控制算法
在 Powershell 中(开始菜单里搜Powershell即可)输入 Get-NetTCPSetting | Select SettingName, CongestionProvider
命令来查看当前使用的 TCP 拥塞控制
默认状态下看到的结果应该类似这样。
PS C:\Users\admin> Get-NetTCPSetting | Select SettingName, CongestionProvider
SettingName CongestionProvider
----------- ------------------
Automatic
InternetCustom CUBIC
DatacenterCustom CUBIC
Compat NewReno
Datacenter CUBIC
Internet CUBIC
从 CUBIC 切换到 BBR v2
在 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=DatacenterCustom CongestionProvider=bbr2
netsh int tcp set supplemental Template=InternetCustom CongestionProvider=bbr2
然后再使用 Get-NetTCPSetting | Select SettingName, CongestionProvider
命令来查看当前使用的 TCP 拥塞控制
从BBR v2 恢复到原有的 CUBIC
在 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=DatacenterCustom CongestionProvider=cubic
netsh int tcp set supplemental Template=InternetCustom CongestionProvider=cubic
然后再使用 Get-NetTCPSetting | Select SettingName, CongestionProvider
命令来查看当前使用的 TCP 拥塞控制
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在无线网链接下速度恶化的问题,所以开不开得根据自己的链路做测试。
Kevin.MX
2024-03-05 14:43
高速局域网(e.g. 2.5GbE)内 SMB 共享的情况下不建议开启。
开启 BBR2 之后,2.5GbE 网络下会出现字面意思上的“TCP Slow start” 问题。
对端 iperf3 -s,本地 iperf3 -c,单线程的情况下,需要大概 30s 才能跑满 2.5GbE。SMB 试了一下,也一样。
恢复 cubic/newreno 之后,局域网内速度恢复正常。iperf3 拉起来瞬间就是 2.5Gbps。
ccuoi
2023-05-05 17:21
可以在win2019中使用吗
去年夏天
2023-05-09 10:45
2019还不能用,倒是有本地反代后再处理的偏门办法
ccuoi
2023-05-05 16:53
windows 2019能否使用这个bbr2?
anon
2023-04-30 19:14
实测似乎反而会造成国内游戏延迟飙升,对外网访问感觉也没有任何加速——最好的优化果然还是不优化
去年夏天
2023-05-05 14:53
是,改成BBRv2主要是还是对持续性的TCP上传有一些好处(比如BT做种等基于P2P的分享,win下搭建web网页等)
ccuoi
2023-05-05 15:00
如果是windows的国外服务器,开启这个会不会有提升
去年夏天
2023-05-05 15:13
如果你的国外服务器是用来提供经由TCP给国内用户传输内容的服务话,有提升。
比如博客,下载站,论坛,视频站等。