Tämä artikkeli esittelee lyhyesti, kuinka BBR-ruuhkienhallinta-algoritmi otetaan käyttöön Windows-laitteissa; sekä nykyisen käytön mahdolliset ongelmat.
BBR Johdanto
BBR (Bottleneck Bandwidth and Round-trip propagation time) on Googlen kehittämä uudempi TCP ruuhkienhallinta-algoritmi. Sen tarkoituksena on ratkaista perinteisten ruuhkienhallinta-algoritmien (kuten Reno tai CUBIC) ongelmat, jotka liittyvät alhaiseen kaistanleveyden hyödyntämiseen ja suuriin viiveisiin tietyissä verkkoympäristöissä (erityisesti verkoissa, joissa on tietty määrä pakettihäviöitä ja viiveitä).
Ydinajatus
BBR:n ydinajatus on olla enää luottamatta pakettihäviöihin pääasiallisena signaalina verkon ruuhkautumisesta. Perinteiset ruuhkienhallinta-algoritmit yleensä alentavat lähetysnopeutta vasta, kun ne havaitsevat pakettihäviöitä, mutta tämä voi johtaa siihen, että käytettävissä olevaa kaistanleveyttä ei voida hyödyntää täysimääräisesti tai aiheuttaa tarpeettomia viiveitä (puskurin paisuminen) verkoissa, joissa on suuri puskuri tai lievää satunnaista pakettihäviötä.
BBR sen sijaan mittaa aktiivisesti verkon kaksi avainparametria:
- Pullonkaulakaista (Bottleneck Bandwidth, BtlBw): Verkkopolun tiedonsiirtonopeuden yläraja, eli polun kapeimman kohdan kapasiteetti.
- Edestakainen etenemisaika (Round-trip Propagation Time, RTprop): Lyhin aika, joka datapaketilla kuluu kulkea verkkopolun edestakaisin, lukuun ottamatta odotusaikaa välilaitteiden puskureissa.
Toimintamekanismi
BBR säätää dynaamisesti lähetyskäyttäytymistään mittaamalla näitä kahta parametria säännöllisesti:
- Pullonkaulakaistan havaitseminen: BBR lähettää dataa jonkin aikaa hieman suuremmalla nopeudella kuin nykyinen arvioitu pullonkaulakaista, jotta voidaan havaita, onko käytettävissä enemmän kaistaa.
- Edestakaisen etenemisajan havaitseminen: BBR lähettää dataa jonkin aikaa hieman pienemmällä nopeudella kuin nykyinen arvioitu pullonkaulakaista, jotta polun jonot tyhjennetään ja voidaan mitata tarkempi RTprop.
Tällä tavalla BBR pyrkii pitämään siirrettävän datamäärän (inflight data) hieman korkeammalla tasolla kuin kaistanleveys-viive-tulo (BDP = BtlBw * RTprop). Näin voidaan sekä hyödyntää täysimääräisesti pullonkaulalinkin kaistanleveys että välttää liian pitkät jonot ja suuret viiveet verkossa.
Tärkeimmät edut
- Suuri läpäisykyky: Erityisesti verkoissa, joissa on tietty määrä pakettihäviöitä ja viiveitä (Long Fat Networks), BBR saavuttaa yleensä suuremman läpäisykyvyn kuin perinteiset algoritmit.
- Matala viive: Aktiivisen jonojen hallinnan avulla BBR voi tehokkaasti vähentää verkon viivettä ja välttää puskurin paisumisongelmia.
- Ei herkkä pakettihäviöille: Koska BBR ei pääasiassa luota pakettihäviöihin ruuhkautumisen havaitsemisessa, se toimii vakaammin verkoissa, joissa on vähän satunnaisia pakettihäviöitä.
Windowsin BBR:n käyttöönoton edellytykset
Käyttöjärjestelmän on tuettava sitä. Versiovaatimus voi olla Windows 11 version 22H2 tai uudempi.
Suorita Powershell järjestelmänvalvojana ja lähetä seuraava komento saadaksesi tietoa järjestelmän tukemista algoritmeista:
[Enum]::GetNames([Microsoft.PowerShell.Cmdletization.GeneratedTypes.NetTCPSetting.CongestionProvider])
Se voi tulostaa jotain seuraavaa:
Default
NewReno
CTCP
DCTCP
LEDBAT
CUBIC
BBR2
Tämä luettelo edustaa ruuhkienhallinta-algoritmien nimiä, jotka järjestelmä voi tunnistaa ja määrittää TCP-asetuksissa. Default
tarkoittaa yleensä, että järjestelmä päättää käyttää CUBICia tai muuta algoritmia tietyn mallin tai globaalin asetuksen perusteella.
Windowsin BBR-ruuhkienhallinta-algoritmin kokeileminen
Tarkista nykyinen ruuhkienhallinta-algoritmin määritys:
Get-NetTCPSetting | Select SettingName, CongestionProvider
Tuloste voi olla seuraava:
SettingName CongestionProvider
----------- ------------------
Automatic
InternetCustom CUBIC
DatacenterCustom CUBIC
Compat NewReno
Datacenter CUBIC
Internet CUBIC
Yritä ottaa käyttöön:
Set-NetTCPSetting -SettingName InternetCustom -CongestionProvider BBR2
Virhe:
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
Nykyisen Windowsin BBR-algoritmin ongelmat
Tällä hetkellä tiedustelujen perusteella Windowsin BBR-tuki on vielä puutteellista ja siinä on monia bugeja (kahdessa ensimmäisessä materiaalissa mainitaan, että BBR:n käyttöönotto rikkoo “localhost”-liikenteen (silmukkaliitäntä), mikä johtaa hidastuneisiin tai vastaamattomiin yhteyksiin saman koneen sisällä), kuten:
- Rikkoutuu Steamin, koska Steamwebhelper ei voi enää käynnistyä, ja kun käytetään Internet Download Manageria, se rikkoo kaikki latauskoukut, kun vaihdetaan takaisin CUBICiin, ne toimivat jälleen —— Fix BBR2 bugs on Windows 11 - Microsoft Community , luotu 8. toukokuuta 2025
- BBR2 24H2:n uusi bugi on epävakaa yhteys. Firefox-selaimeni saa satunnaisesti
NS_BINDING_ABORT
-virheen. Visual Studio Code Remote -kehityspluginini jumittuu yhdistettäessä ja näyttää seuraavan virheen:failed to set up socket for dynamic port forward to remote port =: proxy connection timed out.
. Messenger (UWP) -sovellukseni melkein kaatuu (uusia viestejä ei voi näyttää). —— Windows 11 24H2 and BBR2 : r/Windows11 - Keskeyttää Hyper-V:n paikalliset konsoliyhteydet (Windows 11 23H2:sta lähtien). Konsoli näyttää
Connecting to '[VM]'
muutaman minuutin ajan ja epäonnistuu sitten näyttäenVideo remoting was disconnected
ponnahdusikkunallaCould not connect to the virtual machine.
—— Kuinka TCP BBR otetaan käyttöön Windowsissa - Stack Overflow - v2rayN ei voi päivittää maantieteellisiä tiedostoja, ydintä tai muodostaa yhteyttä välityspalvelimeen. —— [Bug]: Windowsin BBR2-ruuhkienhallinta-algoritmi aiheuttaa v2rayN:n toimimattomuuden · 2dust/v2rayN
Siksi päätettiin olla ottamatta BBR:ää käyttöön toistaiseksi. Jos haluat kokeilla käyttöönottoa, voit kokeilla komentoa:
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
Tässä voidaan myös korvata BBR2
BBR
:llä (BBR v1), voit testata sitä ja verrata tuloksia.
Tarkista sitten nykyinen ruuhkienhallinta-algoritmin määritys, onko se määritetty BBR2
:ksi:
Get-NetTCPSetting | Select SettingName, CongestionProvider
Windows 11 23H2 / 24H2:ssa BBR v2:n käyttöönotto voi aiheuttaa paikallisten TCP-yhteyksien toimimattomuuden (esim. adb ei toimi, Steam epäonnistuu jne.) , tällöin palauta ruuhkienhallinta-algoritmi aiempaan määritykseen. Palautuksen jälkeen uudelleenkäynnistystä ei tarvita, ongelman pitäisi ratketa välittömästi.
Tämä artikkeli on vielä puutteellinen, tervetuloa jättämään viesti tai kommentti, jotta saan tietää uusimmat tiedot.
Viitteet
Set-NetTCPSetting (NetTCPIP) | Microsoft Learn
Enable TCP BBR v2 on Linux & Windows 11 - Coxxs
Muut versiot tästä verkkosivusta
Tästä artikkelista on useita kieliversioita.
Jos haluat jättää kommentin, käy seuraavilla verkkosivuilla:
Nämä verkkosivut tukevat vain selaamista, kommenttien jättäminen ei ole mahdollista, mutta ne tarjoavat enemmän kielivaihtoehtoja ja latautuvat nopeammin:
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