Cet article présente brièvement comment activer l’algorithme de contrôle de congestion BBR sur les appareils Windows, ainsi que les problèmes que l’utilisation de cette fonctionnalité peut entraîner actuellement.

Présentation de BBR

BBR (Bottleneck Bandwidth and Round-trip propagation time) est un type plus récent d’algorithme de contrôle de congestion TCP développé par Google. Il vise à résoudre les problèmes de faible utilisation de la bande passante et de latence élevée des algorithmes de contrôle de congestion traditionnels (tels que Reno ou CUBIC) dans certaines conditions de réseau (en particulier dans les réseaux avec un certain taux de perte de paquets et de latence).

Idée centrale

L’idée centrale de BBR est de ne plus dépendre de la perte de paquets comme principal signal de congestion du réseau. Les algorithmes de contrôle de congestion traditionnels réduisent généralement le taux d’envoi lorsqu’ils détectent une perte de paquets, mais cela peut entraîner une incapacité à utiliser pleinement la bande passante disponible ou introduire des latences inutiles (gonflement de la mémoire tampon) dans les réseaux avec des mémoires tampons plus grandes ou des pertes de paquets aléatoires légères.

BBR se tourne vers la mesure active de deux paramètres clés du réseau :

  1. Bande passante du goulet d’étranglement (Bottleneck Bandwidth, BtlBw) : La limite supérieure du taux de transfert de données dans le chemin réseau, c’est-à-dire la capacité du maillon le plus étroit du chemin.
  2. Temps de propagation aller-retour (Round-trip Propagation Time, RTprop) : Le temps minimum requis pour qu’un paquet de données effectue un aller-retour dans le chemin réseau, sans inclure le temps d’attente dans les mémoires tampons des équipements intermédiaires.

Mécanisme de fonctionnement

BBR ajuste dynamiquement son comportement d’envoi en sondant périodiquement ces deux paramètres :

  • Sondage de la bande passante du goulet d’étranglement : BBR envoie des données pendant un certain temps à un débit légèrement supérieur à la bande passante du goulet d’étranglement estimée actuelle, afin de déterminer s’il existe une bande passante disponible plus élevée.
  • Sondage du temps de propagation aller-retour : BBR envoie des données pendant un certain temps à un débit légèrement inférieur à la bande passante du goulet d’étranglement estimée actuelle, afin de vider les files d’attente dans le chemin et de mesurer ainsi un RTprop plus précis.

De cette façon, BBR tente de maintenir la quantité de données en transit (inflight data) à un niveau légèrement supérieur au produit bande passante-délai (BDP = BtlBw * RTprop). Cela permet à la fois de tirer pleinement parti de la bande passante de la liaison en goulet d’étranglement et d’éviter de provoquer une mise en file d’attente excessive et une latence élevée dans le réseau.

Principaux avantages

  • Débit élevé : En particulier dans les réseaux longs et gras (Long Fat Networks) avec un certain taux de perte de paquets et de latence, BBR peut généralement obtenir un débit plus élevé que les algorithmes traditionnels.
  • Faible latence : En contrôlant activement la mise en file d’attente, BBR peut réduire efficacement la latence du réseau et éviter les problèmes de gonflement de la mémoire tampon.
  • Insensible à la perte de paquets : Comme il ne dépend pas principalement de la perte de paquets pour déterminer la congestion, BBR est plus stable dans les réseaux avec une petite quantité de perte de paquets aléatoire.

Conditions d’activation de BBR sous Windows

Le système d’exploitation doit être compatible. La version requise est probablement Windows 11 version 22H2 ou supérieure.

Exécutez Powershell en tant qu’administrateur et envoyez la commande suivante pour connaître les algorithmes pris en charge par le système :

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

Il peut afficher quelque chose comme ceci :

Default
NewReno
CTCP
DCTCP
LEDBAT
CUBIC
BBR2

Cette liste représente les noms des algorithmes de contrôle de congestion que le système peut reconnaître et configurer dans les paramètres TCP. Default signifie généralement que le système décide d’utiliser CUBIC ou un autre algorithme en fonction d’un modèle spécifique ou de paramètres globaux.

Essayer d’utiliser l’algorithme de contrôle de congestion BBR sous Windows

Afficher l’algorithme de contrôle de congestion configuré actuellement :

Get-NetTCPSetting | Select SettingName, CongestionProvider

La sortie peut ressembler à ceci :

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

Essayer d’activer :

Set-NetTCPSetting -SettingName InternetCustom -CongestionProvider BBR2

Erreur :

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

Problèmes actuels liés à l’utilisation de l’algorithme BBR sous Windows

À l’heure actuelle, les recherches montrent que la prise en charge de BBR sous Windows est encore imparfaite et qu’il existe de nombreux bogues (les deux premières sources mentionnent que l’activation de BBR perturbe le trafic TCP “localhost” (interface de bouclage), ce qui ralentit ou rend inactives les connexions au sein de la même machine), par exemple :

  • Cela casse Steam, car Steamwebhelper ne peut plus démarrer, et lorsque vous utilisez Internet Download Manager, cela casse tous les hooks de téléchargement, et lorsqu’il est repassé à CUBIC, ils recommencent à fonctionner —— Fix BBR2 bugs on Windows 11 - Microsoft Community , créé le 8 mai 2025
  • Le nouveau bogue de BBR2 24H2 est l’instabilité de la connexion. Mon navigateur Firefox reçoit aléatoirement des erreurs NS_BINDING_ABORT. Mon plugin de développement distant Visual Studio Code se bloque lors de la connexion et affiche l’erreur suivante : failed to set up socket for dynamic port forward to remote port =: proxy connection timed out. . Mon application Messenger (UWP) plante presque (les nouveaux messages ne peuvent pas être affichés). —— Windows 11 24H2 and BBR2 : r/Windows11
  • Interrompt les connexions à la console locale de Hyper-V (depuis Windows 11 23H2). La console affichera Connecting to '[VM]' pendant quelques minutes, puis échouera avec Video remoting was disconnected et affichera l’invite Could not connect to the virtual machine. —— Comment activer TCP BBR sur Windows - Stack Overflow
  • v2rayN ne peut pas mettre à jour les fichiers géographiques, le cœur ou se connecter aux serveurs proxy. —— [Bug]: L’algorithme de congestion BBR2 dans Windows empêche v2rayN de fonctionner · 2dust/v2rayN

Par conséquent, il a été décidé de ne pas activer BBR pour le moment. Si vous souhaitez essayer de l’activer, vous pouvez essayer la commande :

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

Ici, vous pouvez également remplacer BBR2 par BBR (BBR v1), vous pouvez tester et comparer les effets.

Ensuite, vérifiez si l’algorithme de contrôle de congestion configuré actuel a été configuré sur BBR2 :

Get-NetTCPSetting | Select SettingName, CongestionProvider

Sur Windows 11 23H2 / 24H2, l’activation de BBR v2 peut rendre les connexions TCP locales inutilisables (par exemple, en empêchant adb de fonctionner, en faisant échouer Steam, etc.) , veuillez restaurer l’algorithme de contrôle de congestion à sa configuration précédente. Après la restauration, il n’est pas nécessaire de redémarrer et le problème devrait être résolu immédiatement.

Cet article n’est pas parfait, n’hésitez pas à laisser des commentaires ou des remarques pour me faire part des dernières informations.

Références

Set-NetTCPSetting (NetTCPIP) | Microsoft Learn

Enable TCP BBR v2 on Linux & Windows 11 - Coxxs

https://github.com/google/bbr

Autres versions de cette page web

Cet article existe en plusieurs langues.

Si vous souhaitez laisser un commentaire, veuillez visiter la page suivante :

ZH EN ZH-TW JA

Ces pages web ne prennent en charge que la navigation, pas la publication de commentaires ou de messages, mais offrent plus d’options linguistiques et des temps de chargement plus courts :

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