Ten artykuł pokrótce opisuje, jak włączyć algorytm kontroli przeciążenia BBR na urządzeniach z systemem Windows oraz jakie problemy mogą wystąpić podczas korzystania z tej funkcji.

Wprowadzenie do BBR

BBR (Bottleneck Bandwidth and Round-trip propagation time) to nowszy algorytm kontroli przeciążenia TCP opracowany przez Google. Ma on na celu rozwiązanie problemu niskiego wykorzystania przepustowości i dużych opóźnień tradycyjnych algorytmów kontroli przeciążenia (takich jak Reno lub CUBIC) w niektórych warunkach sieciowych (szczególnie w sieciach o pewnym wskaźniku utraty pakietów i opóźnieniach).

Kluczowa idea

Kluczową ideą BBR jest niepoleganie już na utracie pakietów jako głównym sygnale przeciążenia sieci. Tradycyjne algorytmy kontroli przeciążenia zazwyczaj zmniejszają prędkość wysyłania tylko wtedy, gdy wykryją utratę pakietów, ale w sieciach z dużym buforem lub lekką losową utratą pakietów może to prowadzić do niewystarczającego wykorzystania dostępnej przepustowości lub wprowadzenia niepotrzebnych opóźnień (puchnięcie bufora).

BBR zamiast tego aktywnie mierzy dwa kluczowe parametry sieci:

  1. Przepustowość wąskiego gardła (Bottleneck Bandwidth, BtlBw): Górna granica prędkości transmisji danych w ścieżce sieciowej, czyli pojemność najwęższego ogniwa w ścieżce.
  2. Czas propagacji w obie strony (Round-trip Propagation Time, RTprop): Najkrótszy czas potrzebny na przesyłanie pakietu danych w obie strony w ścieżce sieciowej, z wyłączeniem czasu oczekiwania w buforach urządzeń pośrednich.

Mechanizm działania

BBR dynamicznie dostosowuje swoje zachowanie wysyłania poprzez okresowe wykrywanie tych dwóch parametrów:

  • Wykrywanie przepustowości wąskiego gardła: BBR wysyła dane przez pewien czas z prędkością nieco wyższą niż aktualnie szacowana przepustowość wąskiego gardła, aby sprawdzić, czy dostępna jest wyższa przepustowość.
  • Wykrywanie czasu propagacji w obie strony: BBR wysyła dane przez pewien czas z prędkością nieco niższą niż aktualnie szacowana przepustowość wąskiego gardła, aby opróżnić kolejki w ścieżce, a tym samym zmierzyć dokładniejszy RTprop.

W ten sposób BBR próbuje utrzymać ilość przesyłanych danych (inflight data) na poziomie nieco wyższym niż iloczyn przepustowości i opóźnienia (BDP = BtlBw * RTprop). Zapewnia to zarówno pełne wykorzystanie przepustowości wąskiego gardła, jak i uniknięcie zbyt długiego kolejkowania i wysokich opóźnień w sieci.

Główne zalety

  • Wysoka przepustowość: Szczególnie w długich, szerokopasmowych sieciach (Long Fat Networks) z pewną utratą pakietów i opóźnieniami, BBR zwykle uzyskuje wyższą przepustowość niż tradycyjne algorytmy.
  • Niskie opóźnienia: Poprzez aktywne sterowanie kolejkowaniem BBR może skutecznie zmniejszyć opóźnienia w sieci i uniknąć problemu puchnięcia bufora.
  • Niewrażliwość na utratę pakietów: Ponieważ nie polega głównie na utracie pakietów w celu określenia przeciążenia, BBR jest bardziej stabilny w sieciach z niewielką losową utratą pakietów.

Warunki włączenia BBR w systemie Windows

Konieczna jest obsługa systemu operacyjnego. Wymagana wersja to prawdopodobnie Windows 11 version 22H2 lub nowsza.

Uruchom Powershell jako administrator i wyślij następujące polecenie, aby dowiedzieć się, jakie algorytmy obsługuje system:

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

Może to dać wynik podobny do:

Default
NewReno
CTCP
DCTCP
LEDBAT
CUBIC
BBR2

Ta lista reprezentuje nazwy algorytmów kontroli przeciążenia, które system może rozpoznawać i konfigurować w ustawieniach TCP. Default zazwyczaj oznacza, że system decyduje o użyciu CUBIC lub innego algorytmu na podstawie określonego szablonu lub ustawień globalnych.

Próba użycia algorytmu kontroli przeciążenia BBR w systemie Windows

Wyświetl aktualnie skonfigurowany algorytm kontroli przeciążenia:

Get-NetTCPSetting | Select SettingName, CongestionProvider

Wynik może wyglądać następująco:

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

Spróbuj włączyć:

Set-NetTCPSetting -SettingName InternetCustom -CongestionProvider BBR2

Błąd:

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

Obecne problemy z używaniem algorytmu BBR w systemie Windows

W tej chwili, z informacji wynika, że obsługa BBR w systemie Windows nie jest jeszcze dopracowana i zawiera wiele błędów (dwa pierwsze źródła wspominają, że włączenie BBR powoduje uszkodzenie ruchu TCP “localhost” (interfejs pętli zwrotnej), co powoduje spowolnienie lub brak odpowiedzi połączeń w obrębie jednego komputera), takie jak:

  • Powoduje uszkodzenie Steam, ponieważ Steamwebhelper nie może się już uruchomić, a podczas korzystania z Internet Download Manager, powoduje uszkodzenie wszystkich zaczepów pobierania, które ponownie działają po zmianie z powrotem na CUBIC —— Fix BBR2 bugs on Windows 11 - Microsoft Community , utworzone 8 maja 2025 r.
  • Nowy błąd BBR2 24H2 to niestabilne połączenie. Moja przeglądarka Firefox losowo otrzymuje błąd NS_BINDING_ABORT. Moje wtyczki programistyczne Visual Studio Code Remote zawieszają się podczas łączenia i wyświetlają następujący błąd: failed to set up socket for dynamic port forward to remote port =: proxy connection timed out. Aplikacja Messenger (UWP) prawie się zawiesza (nowe wiadomości nie są wyświetlane). —— Windows 11 24H2 and BBR2 : r/Windows11
  • Przerywa połączenie z lokalną konsolą Hyper-V (od Windows 11 23H2). Konsola wyświetla Connecting to '[VM]' przez kilka minut, a następnie kończy się niepowodzeniem z komunikatem Video remoting was disconnected i pojawia się komunikat Could not connect to the virtual machine. —— Jak włączyć TCP BBR w systemie Windows - Stack Overflow
  • v2rayN nie może zaktualizować plików geograficznych, rdzenia ani połączyć się z serwerem proxy. —— [Bug]: Algorytm przeciążenia BBR2 w systemie Windows powoduje zaprzestanie działania v2rayN · 2dust/v2rayN

Dlatego zdecydowano się tymczasowo nie włączać BBR. Jeśli chcesz spróbować włączyć, możesz wypróbować następujące polecenia:

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

Można również zamienić BBR2 na BBR (BBR v1), aby przetestować i porównać wyniki.

Następnie sprawdź, czy aktualnie skonfigurowany algorytm kontroli przeciążenia jest ustawiony na BBR2:

Get-NetTCPSetting | Select SettingName, CongestionProvider

W systemach Windows 11 23H2 / 24H2 włączenie BBR v2 może spowodować niedostępność lokalnych połączeń TCP (np. powodując brak możliwości korzystania z adb, awarię Steam itp.) W takim przypadku przywróć poprzednią konfigurację algorytmu kontroli przeciążenia. Po przywróceniu nie trzeba restartować komputera, problem powinien zostać rozwiązany natychmiast.

Ten artykuł nie jest jeszcze kompletny, zapraszam do komentowania i informowania mnie o najnowszych informacjach.

Referencje

Set-NetTCPSetting (NetTCPIP) | Microsoft Learn

Enable TCP BBR v2 on Linux & Windows 11 - Coxxs

https://github.com/google/bbr

Inne wersje tej strony

Ten artykuł jest dostępny w wielu wersjach językowych.

Jeśli chcesz opublikować komentarz, odwiedź następujące strony:

ZH EN ZH-TW JA

Te strony obsługują tylko przeglądanie, nie można na nich publikować komentarzy ani wiadomości, ale oferują więcej opcji językowych i krótszy czas ładowania:

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