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:
- 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.
- 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 komunikatemVideo remoting was disconnected
i pojawia się komunikatCould 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
Inne wersje tej strony
Ten artykuł jest dostępny w wielu wersjach językowych.
Jeśli chcesz opublikować komentarz, odwiedź następujące strony:
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