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:

  1. Pullonkaulakaista (Bottleneck Bandwidth, BtlBw): Verkkopolun tiedonsiirtonopeuden yläraja, eli polun kapeimman kohdan kapasiteetti.
  2. 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:

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

https://github.com/google/bbr

Muut versiot tästä verkkosivusta

Tästä artikkelista on useita kieliversioita.

Jos haluat jättää kommentin, käy seuraavilla verkkosivuilla:

ZH EN ZH-TW JA

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