Questo articolo introduce brevemente come abilitare l’algoritmo di controllo della congestione BBR sui dispositivi Windows e i possibili problemi derivanti dall’utilizzo di questa funzione.
Introduzione a BBR
BBR (Bottleneck Bandwidth and Round-trip propagation time) è un algoritmo di controllo della congestione TCP di nuova generazione sviluppato da Google. È progettato per risolvere i problemi di bassa utilizzazione della larghezza di banda e latenza elevata degli algoritmi di controllo della congestione tradizionali (come Reno o CUBIC) in determinate condizioni di rete (in particolare nelle reti con un certo tasso di perdita di pacchetti e latenza).
Idea centrale
L’idea centrale di BBR è quella di non fare più affidamento sulla perdita di pacchetti come segnale principale per valutare la congestione della rete. Gli algoritmi di controllo della congestione tradizionali di solito riducono la velocità di trasmissione solo quando viene rilevata la perdita di pacchetti, ma questo, nelle reti con buffer di grandi dimensioni o con una leggera perdita di pacchetti casuale, può portare a un’insufficiente utilizzazione della larghezza di banda disponibile o all’introduzione di ritardi non necessari (gonfiaggio del buffer).
BBR invece misura attivamente due parametri chiave della rete:
- Larghezza di banda del collo di bottiglia (Bottleneck Bandwidth, BtlBw): il limite superiore della velocità di trasmissione dei dati nel percorso di rete, ovvero la capacità del collegamento più stretto nel percorso.
- Tempo di propagazione di andata e ritorno (Round-trip Propagation Time, RTprop): il tempo minimo necessario per un pacchetto di dati per fare andata e ritorno nel percorso di rete, escluso il tempo di accodamento nei buffer dei dispositivi intermedi.
Meccanismo di funzionamento
BBR regola dinamicamente il suo comportamento di trasmissione sondando periodicamente questi due parametri:
- Sondaggio della larghezza di banda del collo di bottiglia: BBR invierà dati per un certo periodo di tempo a una velocità leggermente superiore alla larghezza di banda del collo di bottiglia stimata corrente, per sondare se è disponibile una larghezza di banda maggiore.
- Sondaggio del tempo di propagazione di andata e ritorno: BBR invierà dati per un certo periodo di tempo a una velocità leggermente inferiore alla larghezza di banda del collo di bottiglia stimata corrente, per svuotare le code nel percorso e misurare un RTprop più accurato.
In questo modo, BBR cerca di mantenere la quantità di dati in transito (inflight data) a un livello leggermente superiore al prodotto della larghezza di banda e del ritardo (BDP = BtlBw * RTprop). Ciò consente sia di sfruttare appieno la larghezza di banda del collegamento del collo di bottiglia, sia di evitare di causare accodamenti eccessivi e alta latenza nella rete.
Vantaggi principali
- Elevato throughput: soprattutto nelle reti lunghe e grasse (Long Fat Networks) con un certo tasso di perdita e latenza, BBR di solito può ottenere un throughput più elevato rispetto agli algoritmi tradizionali.
- Bassa latenza: controllando attivamente l’accodamento, BBR può ridurre efficacemente la latenza della rete ed evitare problemi di gonfiaggio del buffer.
- Insensibilità alla perdita di pacchetti: poiché non si basa principalmente sulla perdita di pacchetti per valutare la congestione, BBR è più stabile nelle reti con una piccola quantità di perdita di pacchetti casuale.
Condizioni per abilitare BBR su Windows
Il sistema operativo deve supportarlo. Il requisito di versione potrebbe essere Windows 11 versione 22H2 o successive.
Esegui Powershell come amministratore e invia il seguente comando per conoscere gli algoritmi supportati dal sistema:
[Enum]::GetNames([Microsoft.PowerShell.Cmdletization.GeneratedTypes.NetTCPSetting.CongestionProvider])
Potrebbe restituire qualcosa di simile a:
Default
NewReno
CTCP
DCTCP
LEDBAT
CUBIC
BBR2
Questo elenco rappresenta i nomi degli algoritmi di controllo della congestione che il sistema può riconoscere e configurare nelle impostazioni TCP. Default
di solito significa che il sistema decide di utilizzare CUBIC o altri algoritmi in base a un modello specifico o a impostazioni globali.
Tentativo di utilizzare l’algoritmo di controllo della congestione BBR su Windows
Visualizza l’algoritmo di controllo della congestione attualmente configurato:
Get-NetTCPSetting | Select SettingName, CongestionProvider
L’output potrebbe essere simile al seguente:
SettingName CongestionProvider
----------- ------------------
Automatic
InternetCustom CUBIC
DatacenterCustom CUBIC
Compat NewReno
Datacenter CUBIC
Internet CUBIC
Prova ad abilitare:
Set-NetTCPSetting -SettingName InternetCustom -CongestionProvider BBR2
Errore:
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
Problemi attuali con l’utilizzo dell’algoritmo BBR su Windows
Al momento, dalle informazioni disponibili, il supporto BBR di Windows non è ancora perfetto e presenta molti bug (le prime due fonti menzionano che l’abilitazione di BBR danneggia il traffico TCP “localhost” (interfaccia di loopback), causando connessioni lente o non rispondenti all’interno della stessa macchina), come ad esempio:
- Danneggia Steam, perché Steamwebhelper non può più essere avviato e, quando si utilizza Internet Download Manager, danneggia tutti gli hook di download, che riprendono a funzionare quando si ripristina CUBIC —— Fix BBR2 bugs on Windows 11 - Microsoft Community , creato l'8 maggio 2025
- Il nuovo bug di BBR2 24H2 è la connessione instabile. Il mio browser Firefox riceve casualmente errori
NS_BINDING_ABORT
. Il mio plugin di sviluppo remoto di Visual Studio Code si blocca durante la connessione e visualizza il seguente errore:failed to set up socket for dynamic port forward to remote port =: proxy connection timed out.
La mia app Messenger (UWP) si blocca quasi (i nuovi messaggi non vengono visualizzati). —— Windows 11 24H2 and BBR2 : r/Windows11 - Interrompe la connessione alla console locale di Hyper-V (a partire da Windows 11 23H2). La console visualizzerà
Connecting to '[VM]'
per alcuni minuti, quindi fallirà conVideo remoting was disconnected
e verrà visualizzato un messaggioCould not connect to the virtual machine.
—— How to enable TCP BBR on Windows - Stack Overflow - v2rayN non può aggiornare i file geografici, il core o connettersi al server proxy. —— [Bug]: Windows 中的 BBR2 拥塞算法导致 v2rayN 停止工作 · 2dust/v2rayN
Pertanto, si è deciso di non abilitare BBR per ora. Se desideri provare ad abilitare, puoi provare il comando:
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
Qui puoi anche sostituire BBR2
con BBR
(BBR v1), puoi testare e confrontare gli effetti.
Quindi controlla se l’algoritmo di controllo della congestione attualmente configurato è stato configurato come BBR2
:
Get-NetTCPSetting | Select SettingName, CongestionProvider
Su Windows 11 23H2 / 24H2, l’abilitazione di BBR v2 potrebbe rendere inutilizzabili le connessioni TCP locali (ad esempio, causando il mancato funzionamento di adb, Steam, ecc.), in questo caso, ripristina la configurazione precedente dell’algoritmo di controllo della congestione. Non è necessario riavviare dopo il ripristino, il problema dovrebbe essere risolto immediatamente.
Questo articolo non è ancora perfetto, sentiti libero di lasciare un messaggio o un commento per farmi sapere le ultime informazioni.
Riferimenti
Set-NetTCPSetting (NetTCPIP) | Microsoft Learn
Enable TCP BBR v2 on Linux & Windows 11 - Coxxs
Altre versioni di questa pagina web
Questo articolo è disponibile in diverse lingue.
Se desideri lasciare un commento, visita la seguente pagina web:
Queste pagine web supportano solo la navigazione, non è possibile lasciare commenti o messaggi, ma offrono più opzioni linguistiche e tempi di caricamento più brevi:
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