Ця стаття коротко описує, як увімкнути алгоритм контролю перевантаження BBR на пристроях Windows, а також можливі проблеми, які можуть виникнути при використанні цієї функції.

Ознайомлення з BBR

BBR (Bottleneck Bandwidth and Round-trip propagation time) — це новітній алгоритм контролю перевантаження TCP, розроблений Google. Він призначений для вирішення проблем, пов’язаних з низькою утилізацією пропускної здатності та великою затримкою традиційних алгоритмів контролю перевантаження (таких як Reno або CUBIC) в певних мережевих умовах (особливо в мережах з певною втратою пакетів і затримкою).

Основна ідея

Основна ідея BBR полягає в тому, щоб більше не покладатися на втрату пакетів як на основний сигнал для визначення перевантаження мережі. Традиційні алгоритми контролю перевантаження зазвичай знижують швидкість передачі лише при виявленні втрати пакетів, але в мережах з великими буферами або незначною випадковою втратою пакетів це може призвести до неможливості повної утилізації доступної пропускної здатності або до введення непотрібної затримки (роздування буфера).

BBR натомість активно вимірює два ключові параметри мережі:

  1. Пропускна здатність вузького місця (Bottleneck Bandwidth, BtlBw): верхня межа швидкості передачі даних у мережевому шляху, тобто пропускна здатність найвужчої ланки в шляху.
  2. Час кругової затримки (Round-trip Propagation Time, RTprop): мінімальний час, необхідний пакету даних для здійснення кругової подорожі в мережевому шляху, не враховуючи час очікування в буферах проміжних пристроїв.

Механізм роботи

BBR періодично досліджує ці два параметри для динамічного регулювання своєї поведінки передачі:

  • Дослідження пропускної здатності вузького місця: BBR протягом певного періоду часу передає дані зі швидкістю, трохи вищою за поточну оцінену пропускну здатність вузького місця, щоб дослідити, чи є вища доступна пропускна здатність.
  • Дослідження часу кругової затримки: BBR протягом певного періоду часу передає дані зі швидкістю, трохи нижчою за поточну оцінену пропускну здатність вузького місця, щоб очистити черги в шляху, тим самим вимірюючи більш точний RTprop.

Таким чином, BBR намагається підтримувати обсяг даних, що передаються (inflight data), на рівні трохи вище, ніж добуток пропускної здатності та затримки (BDP = BtlBw * RTprop). Це дозволяє повністю використовувати пропускну здатність вузького місця, і уникати надмірних черг і високої затримки в мережі.

Основні переваги

  • Висока пропускна здатність: особливо в мережах Long Fat Networks з певною втратою пакетів і затримкою, BBR зазвичай може отримати вищу пропускну здатність, ніж традиційні алгоритми.
  • Низька затримка: активно контролюючи черги, BBR може ефективно зменшити затримку мережі та уникнути проблем роздування буфера.
  • Нечутливість до втрати пакетів: оскільки BBR не покладається в основному на втрату пакетів для визначення перевантаження, він більш стабільний в мережах з невеликою випадковою втратою пакетів.

Умови для увімкнення BBR в Windows

Необхідна підтримка операційної системи. Версія має бути Windows 11 version 22H2 або вище.

Запустіть Powershell від імені адміністратора та надішліть таку команду, щоб дізнатися, які алгоритми підтримує система:

[Enum]::GetNames([Microsoft.PowerShell.Cmdletization.GeneratedTypes.NetTCPSetting.CongestionProvider])

Вона може вивести щось на зразок:

Default
NewReno
CTCP
DCTCP
LEDBAT
CUBIC
BBR2

Цей список представляє назви алгоритмів контролю перевантаження, які система може розпізнати та налаштувати в налаштуваннях TCP. Default зазвичай означає, що система використовує CUBIC або інший алгоритм на основі певного шаблону або глобальних налаштувань.

Спроба використання алгоритму контролю перевантаження BBR в Windows

Перегляньте поточний налаштований алгоритм контролю перевантаження:

Get-NetTCPSetting | Select SettingName, CongestionProvider

Вивід може виглядати наступним чином:

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

Спробуйте увімкнути:

Set-NetTCPSetting -SettingName InternetCustom -CongestionProvider BBR2

Помилка:

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

Поточні проблеми з використанням алгоритму BBR в Windows

На даний момент, як стало відомо, підтримка BBR у Windows ще не досконала і має багато помилок (перші два матеріали згадують, що ввімкнення BBR порушить TCP-трафік “localhost” (інтерфейс зворотного зв’язку), що призведе до уповільнення або відсутності відповіді підключень всередині однієї машини), наприклад:

  • Це зруйнує Steam, оскільки Steamwebhelper більше не зможе запуститися, і коли використовується Internet Download Manager, він порушить усі хуки завантаження, коли його буде змінено назад на CUBIC, вони знову запрацюють —— Fix BBR2 bugs on Windows 11 - Microsoft Community , створено 8 травня 2025 року
  • Нова помилка BBR2 24H2 — нестабільне з’єднання. Мій браузер Firefox випадково отримує помилку NS_BINDING_ABORT. Мій плагін віддаленої розробки Visual Studio Code зависає під час підключення з такою помилкою: failed to set up socket for dynamic port forward to remote port =: proxy connection timed out. . Мій додаток Messenger (UWP) майже виходить з ладу (нові повідомлення не відображаються). —— Windows 11 24H2 and BBR2 : r/Windows11
  • Це порушить підключення локальної консолі Hyper-V (починаючи з Windows 11 23H2). Консоль відображатиме Connecting to '[VM]' протягом кількох хвилин, а потім зазнає невдачі з Video remoting was disconnected і спливаючим вікном Could not connect to the virtual machine. —— Як увімкнути TCP BBR у Windows - Stack Overflow
  • v2rayN не може оновити файли geo, ядро або підключитися до проксі-сервера. —— [Bug]: Алгоритм перевантаження BBR2 у Windows спричиняє припинення роботи v2rayN · 2dust/v2rayN

Тому вирішено тимчасово не вмикати BBR. Якщо ви хочете спробувати ввімкнути його, ви можете спробувати команду:

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

Тут також можна замінити BBR2 на BBR (BBR v1), ви можете протестувати та порівняти ефекти.

Потім перевірте поточний налаштований алгоритм контролю перевантаження, чи налаштовано його на BBR2:

Get-NetTCPSetting | Select SettingName, CongestionProvider

У Windows 11 23H2 / 24H2 увімкнення BBR v2 може призвести до недоступності локальних TCP-з’єднань (наприклад, призвести до неможливості використання adb, збою Steam тощо.), у цьому випадку відновіть попередні налаштування алгоритму контролю перевантаження. Після відновлення перезавантаження не потрібне, проблема повинна бути вирішена негайно.

Ця стаття ще не досконала, будь ласка, залиште коментар або відгук, щоб повідомити мені останню інформацію.

Посилання

Set-NetTCPSetting (NetTCPIP) | Microsoft Learn

Увімкніть TCP BBR v2 на Linux і Windows 11 - Coxxs

https://github.com/google/bbr

Інші версії цієї веб-сторінки

Ця стаття має кілька мовних версій.

Якщо ви хочете залишити коментар, відвідайте наступну веб-сторінку:

ZH EN ZH-TW JA

Ці веб-сторінки підтримують лише перегляд, але не підтримують коментарі чи повідомлення, але надають більше мовних опцій і мають менший час завантаження:

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