Tento článek stručně popisuje, jak povolit algoritmus řízení zahlcení BBR na zařízeních s Windows a jaké problémy to může způsobit.
Představení BBR
BBR (Bottleneck Bandwidth and Round-trip propagation time) je novější typ algoritmu řízení zahlcení TCP vyvinutý společností Google. Jeho cílem je vyřešit problém nízkého využití šířky pásma a vysoké latence tradičních algoritmů řízení zahlcení (jako je Reno nebo CUBIC) v určitých síťových podmínkách (zejména v sítích s určitou ztrátovostí paketů a latencí).
Základní myšlenka
Základní myšlenkou BBR je již se nespoléhat na ztrátu paketů jako na hlavní signál pro určení zahlcení sítě. Tradiční algoritmy řízení zahlcení obvykle snižují rychlost odesílání až po zjištění ztráty paketů, což však v sítích s velkou vyrovnávací pamětí nebo s mírnou náhodnou ztrátou paketů může vést k nedostatečnému využití dostupné šířky pásma nebo k zavedení zbytečného zpoždění (nafouknutí vyrovnávací paměti).
BBR naopak aktivně měří dva klíčové parametry sítě:
- Šířka pásma úzkého hrdla (Bottleneck Bandwidth, BtlBw): Horní hranice rychlosti přenosu dat v síťové cestě, tj. kapacita nejužšího místa v cestě.
- Doba zpětného šíření (Round-trip Propagation Time, RTprop): Nejmenší doba potřebná pro paket dat k cestě tam a zpět v síťové cestě, bez doby čekání ve vyrovnávací paměti v mezilehlých zařízeních.
Pracovní mechanismus
BBR dynamicky upravuje své chování při odesílání periodickým zjišťováním těchto dvou parametrů:
- Zjišťování šířky pásma úzkého hrdla: BBR bude po určitou dobu odesílat data rychlostí mírně vyšší, než je aktuálně odhadovaná šířka pásma úzkého hrdla, aby zjistil, zda je k dispozici vyšší šířka pásma.
- Zjišťování doby zpětného šíření: BBR bude po určitou dobu odesílat data rychlostí mírně nižší, než je aktuálně odhadovaná šířka pásma úzkého hrdla, aby se vyprázdnila fronta v cestě, a tím se změřil přesnější RTprop.
Tímto způsobem se BBR snaží udržet množství přenášených dat (inflight data) na úrovni mírně vyšší, než je součin šířky pásma a latence (BDP = BtlBw * RTprop). To zajišťuje plné využití šířky pásma úzkého hrdla a zároveň zabraňuje nadměrnému čekání ve frontě a vysoké latenci v síti.
Hlavní výhody
- Vysoká propustnost: Zejména v sítích LFN (Long Fat Networks) s určitou ztrátou paketů a latencí může BBR obvykle dosáhnout vyšší propustnosti než tradiční algoritmy.
- Nízká latence: Aktivním řízením čekání ve frontě může BBR efektivně snížit latenci sítě a zabránit problému nafouknutí vyrovnávací paměti.
- Nejsou citlivé na ztrátu paketů: Vzhledem k tomu, že se nespoléhá hlavně na ztrátu paketů pro určení zahlcení, BBR se chová stabilněji v sítích s malým množstvím náhodných ztrát paketů.
Požadavky pro povolení BBR ve Windows
Operační systém to musí podporovat. Verze musí být pravděpodobně Windows 11 version 22H2 a vyšší.
Spusťte Powershell jako správce a odešlete následující příkaz, abyste zjistili, které algoritmy systém podporuje:
[Enum]::GetNames([Microsoft.PowerShell.Cmdletization.GeneratedTypes.NetTCPSetting.CongestionProvider])
Může se zobrazit například:
Default
NewReno
CTCP
DCTCP
LEDBAT
CUBIC
BBR2
Tento seznam představuje názvy algoritmů řízení zahlcení, které systém dokáže rozpoznat a konfigurovat v nastavení TCP. Default
obvykle znamená, že systém rozhoduje o použití CUBIC nebo jiného algoritmu na základě konkrétní šablony nebo globálního nastavení.
Zkuste použít algoritmus řízení zahlcení BBR ve Windows
Zobrazte aktuálně nakonfigurovaný algoritmus řízení zahlcení:
Get-NetTCPSetting | Select SettingName, CongestionProvider
Výstup může vypadat takto:
SettingName CongestionProvider
----------- ------------------
Automatic
InternetCustom CUBIC
DatacenterCustom CUBIC
Compat NewReno
Datacenter CUBIC
Internet CUBIC
Zkuste povolit:
Set-NetTCPSetting -SettingName InternetCustom -CongestionProvider BBR2
Chyba:
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
Aktuální problémy s použitím algoritmu BBR ve Windows
V současné době, jak se dozvídáme z dotazů, není podpora BBR ve Windows dokonalá a má mnoho chyb (první dva materiály uvádějí, že povolení BBR naruší provoz TCP “localhost” (rozhraní loopback), což způsobí, že připojení uvnitř stejného stroje budou pomalá nebo nereagující), například:
- Poškodí Steam, protože Steamwebhelper již nelze spustit, a při použití Internet Download Manageru poškodí všechny háčky pro stahování, a když se přepnete zpět na CUBIC, budou opět fungovat —— Oprava chyb BBR2 ve Windows 11 - Microsoft Community , vytvořeno 8. května 2025
- Nová chyba BBR2 24H2 je nestabilní připojení. Můj prohlížeč Firefox náhodně obdrží chybu
NS_BINDING_ABORT
. Můj vývojový plugin Visual Studio Code Remote se zasekne při připojování s následující chybou:failed to set up socket for dynamic port forward to remote port =: proxy connection timed out.
. Moje aplikace Messenger (UWP) téměř havaruje (nové zprávy se nezobrazují). —— Windows 11 24H2 a BBR2 : r/Windows11 - Přeruší místní konzolové připojení Hyper-V (od Windows 11 23H2). Konzola bude zobrazovat
Connecting to '[VM]'
několik minut a poté selže s hláškouVideo remoting was disconnected
a vyskočí hláškaCould not connect to the virtual machine.
—— Jak povolit TCP BBR ve Windows - Stack Overflow - v2rayN nemůže aktualizovat geografické soubory, jádro nebo se připojit k proxy serveru. —— [Bug]: Algoritmus zahlcení BBR2 ve Windows způsobuje, že v2rayN přestane fungovat · 2dust/v2rayN
Proto jsem se rozhodl BBR dočasně nepovolovat. Pokud chcete zkusit povolit, můžete vyzkoušet příkaz:
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
Zde můžete také nahradit BBR2
za BBR
(BBR v1), můžete to otestovat a porovnat výsledky.
Poté zkontrolujte aktuálně nakonfigurovaný algoritmus řízení zahlcení, zda byl nakonfigurován na BBR2
:
Get-NetTCPSetting | Select SettingName, CongestionProvider
Ve Windows 11 23H2 / 24H2 může povolení BBR v2 způsobit nedostupnost místních připojení TCP (například způsobit, že adb nebude fungovat, Steam selže atd.) , v tomto okamžiku obnovte algoritmus řízení zahlcení na předchozí konfiguraci. Po obnovení není nutný restart, problém by měl být okamžitě vyřešen.
Tento článek není dokonalý, neváhejte zanechat zprávu nebo komentář a sdělte mi nejnovější informace.
Reference
Set-NetTCPSetting (NetTCPIP) | Microsoft Learn
Enable TCP BBR v2 on Linux & Windows 11 - Coxxs
Ostatní verze této webové stránky
Tento článek má několik jazykových verzí.
Pokud chcete zanechat komentář, navštivte následující webové stránky:
Tyto webové stránky podporují pouze prohlížení, nelze zanechat komentáře nebo zprávy, ale poskytují více jazykových možností a kratší dobu načítání:
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