В этой статье кратко описывается, как включить алгоритм управления перегрузкой BBR на устройствах Windows, а также текущие проблемы, которые могут возникнуть при использовании этой функции.
О BBR
BBR (Bottleneck Bandwidth and Round-trip propagation time) — это новый алгоритм управления перегрузкой TCP, разработанный компанией Google. Он предназначен для решения проблем, связанных с низкой эффективностью использования полосы пропускания и большими задержками традиционных алгоритмов управления перегрузкой (таких как Reno или CUBIC) в определенных сетевых условиях (особенно в сетях с определенным процентом потери пакетов и задержкой).
Основная идея
Основная идея BBR заключается в том, чтобы больше не полагаться на потерю пакетов в качестве основного сигнала для определения перегрузки сети. Традиционные алгоритмы управления перегрузкой обычно снижают скорость передачи только при обнаружении потери пакетов, но в сетях с большими буферами или незначительными случайными потерями пакетов это может привести к недостаточному использованию доступной полосы пропускания или к ненужным задержкам (раздувание буфера).
BBR вместо этого активно измеряет два ключевых параметра сети:
- Пропускная способность узкого места (Bottleneck Bandwidth, BtlBw): верхний предел скорости передачи данных в сетевом пути, то есть пропускная способность самого узкого звена в пути.
- Время кругового распространения (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, они снова работают — Исправьте ошибки BBR2 в Windows 11 - Microsoft Community , создано 8 мая 2025 г.
- Новая ошибка BBR2 24H2 — нестабильные соединения. Мой браузер Firefox случайным образом получает ошибку
NS_BINDING_ABORT
. Мой плагин разработки Visual Studio Code Remote зависает при подключении и выдает следующую ошибку:не удалось настроить сокет для динамической переадресации порта на удаленный порт =: время ожидания соединения с прокси-сервером истекло.
. Мое приложение Messenger (UWP) почти не работает (новые сообщения не отображаются). — Windows 11 24H2 and BBR2 : r/Windows11 - Прерывает локальное консольное подключение Hyper-V (начиная с Windows 11 23H2). Консоль будет отображать
Connecting to '[VM]'
в течение нескольких минут, а затем завершится с ошибкойVideo remoting was disconnected
и появится подсказкаНе удалось подключиться к виртуальной машине.
. — Как включить TCP BBR в Windows - Stack Overflow - v2rayN не может обновлять географические файлы, ядро или подключаться к прокси-серверу. — [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
Enable TCP BBR v2 on Linux & Windows 11 - Coxxs
Другие версии этой веб-страницы
У этой статьи есть версии на нескольких языках.
Если вы хотите оставить комментарий, посетите следующую веб-страницу:
Эти веб-страницы поддерживают только просмотр и не поддерживают публикацию комментариев или сообщений, но предоставляют больше языковых параметров и более короткое время загрузки:
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