Denne artikel introducerer kort, hvordan man aktiverer BBR-overbelastningskontrolalgoritmen på Windows-enheder, samt de potentielle problemer ved at bruge denne funktion i øjeblikket.

BBR Introduktion

BBR (Bottleneck Bandwidth and Round-trip propagation time) er en nyere type TCP overbelastningskontrolalgoritme udviklet af Google. Den er designet til at løse problemet med lav båndbreddeudnyttelse og høj latenstid, som traditionelle overbelastningskontrolalgoritmer (såsom Reno eller CUBIC) har under visse netværksforhold (især i netværk med en vis grad af pakketab og forsinkelse).

Kerneidé

Kerneideen i BBR er ikke længere at stole på pakketab som det primære signal til at vurdere netværksoverbelastning. Traditionelle overbelastningskontrolalgoritmer reducerer normalt sendehastigheden, når de registrerer pakketab, men i netværk med store buffere eller let tilfældigt pakketab kan dette føre til, at den tilgængelige båndbredde ikke udnyttes fuldt ud, eller at unødvendige forsinkelser introduceres (bufferudvidelse).

BBR måler i stedet aktivt to vigtige netværksparametre:

  1. Flaskehalsbåndbredde (Bottleneck Bandwidth, BtlBw): Den øvre grænse for dataoverførselshastigheden i netværksstien, dvs. kapaciteten af det smalleste led i stien.
  2. Rundtursudbredelsestid (Round-trip Propagation Time, RTprop): Den korteste tid, det tager for en datapakke at rejse frem og tilbage i netværksstien, eksklusive køtid i mellemliggende enheds buffere.

Arbejdsmekanisme

BBR justerer dynamisk sin sendeopførsel ved periodisk at detektere disse to parametre:

  • Detektion af flaskehalsbåndbredde: BBR sender data i en periode med en hastighed, der er lidt højere end den aktuelle estimerede flaskehalsbåndbredde, for at detektere, om der er højere tilgængelig båndbredde.
  • Detektion af rundtursudbredelsestid: BBR sender data i en periode med en hastighed, der er lidt lavere end den aktuelle estimerede flaskehalsbåndbredde, for at tømme køen i stien og derved måle en mere nøjagtig RTprop.

På denne måde forsøger BBR at opretholde den mængde data, der overføres (inflight data), på et niveau, der er lidt højere end båndbredde-forsinkelsesproduktet (BDP = BtlBw * RTprop). Dette udnytter fuldt ud båndbredden på flaskehalslinket og undgår for lange køer og høje latenstider i netværket.

Hovedfordele

  • Høj gennemstrømning: Især i lange, fede netværk (Long Fat Networks) med en vis grad af pakketab og forsinkelse, kan BBR normalt opnå en højere gennemstrømning end traditionelle algoritmer.
  • Lav latenstid: Ved aktivt at kontrollere køer kan BBR effektivt reducere netværksforsinkelser og undgå problemer med bufferudvidelse.
  • Ikke følsom over for pakketab: Da BBR ikke primært er afhængig af pakketab for at vurdere overbelastning, er BBR mere stabil i netværk med en lille mængde tilfældigt pakketab.

Windows-krav for at aktivere BBR

Operativsystemet skal understøtte det. Versionskravet er muligvis Windows 11 version 22H2 eller nyere.

Kør Powershell som administrator, og send følgende kommando for at finde ud af de algoritmer, systemet understøtter:

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

Det kan udskrive noget lignende:

Default
NewReno
CTCP
DCTCP
LEDBAT
CUBIC
BBR2

Denne liste repræsenterer de overbelastningskontrolalgoritmenavne, som systemet kan genkende og konfigurere i TCP-indstillingerne. Default betyder normalt, at systemet bruger CUBIC eller en anden algoritme i henhold til en bestemt skabelon eller globale indstillinger.

Windows-forsøg på at bruge BBR-overbelastningskontrolalgoritmen

Se den aktuelt konfigurerede overbelastningskontrolalgoritme:

Get-NetTCPSetting | Select SettingName, CongestionProvider

Output kan se sådan ud:

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

Forsøg at aktivere:

Set-NetTCPSetting -SettingName InternetCustom -CongestionProvider BBR2

Fejl:

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

Aktuelle problemer med Windows ved brug af BBR-algoritmen

På nuværende tidspunkt har undersøgelser vist, at Windows’ understøttelse af BBR ikke er perfekt, og der er mange fejl (de to første materialer nævner, at aktivering af BBR vil ødelægge “localhost” (loopback interface) TCP-trafik, hvilket får forbindelser inden for den samme maskine til at blive langsomme eller ikke-responsive), f.eks.:

Derfor er det besluttet midlertidigt ikke at aktivere BBR. Hvis du vil prøve at aktivere det, kan du prøve kommandoen:

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

Her kan du også erstatte BBR2 med BBR (BBR v1) for at teste og sammenligne effekterne.

Kontroller derefter den aktuelt konfigurerede overbelastningskontrolalgoritme for at se, om den allerede er konfigureret som BBR2:

Get-NetTCPSetting | Select SettingName, CongestionProvider

På Windows 11 23H2 / 24H2 kan aktivering af BBR v2 gøre lokale TCP-forbindelser utilgængelige (f.eks. medføre, at adb ikke kan bruges, Steam fejler osv.) , så skal du gendanne overbelastningskontrolalgoritmen til den tidligere konfiguration. Efter gendannelse er der ikke behov for genstart, og problemet bør løses med det samme.

Denne artikel er ikke perfekt, velkommen til at efterlade kommentarer eller kommentarer for at informere mig om de seneste oplysninger.

Reference

Set-NetTCPSetting (NetTCPIP) | Microsoft Learn

Enable TCP BBR v2 on Linux & Windows 11 - Coxxs

https://github.com/google/bbr

Andre versioner af denne webside

Denne artikel findes i flere sprogversioner.

Hvis du vil sende en kommentar, skal du besøge følgende webside:

ZH EN ZH-TW JA

Disse websider understøtter kun browsing, kan ikke kommenteres eller efterlade beskeder, men giver flere sprogmuligheder og kortere indlæsningstider:

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