BBR (Bottleneck Bandwidth and RTT) est un contrôle de gestion TCP disponible dans le noyau Linux depuis 2020.
Dans certains cas, BBR améliore le temps de réponse du serveur Linux.
Vous pouvez l’activer pour améliorer les performances du réseau Linux en modifiant le contrôle de la congestion TCP en BBR.
Dans ce tutoriel, je vous explique comment activer BBR dans Linux et tester les performances.
Table des matières
Qu’est-ce que BBR ?
C’est un algorithme de contrôle de congestion de pointe disponible dans le noyau Linux à partir de la version 4.9.
Il n’est en général pas activer par défaut dans la plupart des distributions Linux.
Il est maintenant par Google qui est un contributeur important du Kernel Linux.
BBR a considérablement augmenté le débit et la latence réduite pour les connexions sur les réseaux backbones internes de Google et les serveurs Web Google.com et YouTube. BBR ne nécessite que des modifications du côté expéditeur, pas dans le réseau ou le côté récepteur. Ainsi, il peut être déployé progressivement sur Internet d’aujourd’hui ou dans les centres de données.
- AWS annonce des performances de 22% après son déploiement : AWS blog: TCP BBR Congestion Control with Amazon CloudFront :
- BBR vs CUBIC: BBR improves performance by 21%
Quelques liens sur les algorithmes de congestions TCP :
Les prérequis sont :
- Un noyau Linux 4.9 minimum
- Compilé avec :
- CONFIG_TCP_CONG_BBR
- CONFIG_NET_SCH_FQ
Enfin reportez vous à cet article très intéressant : Experimenting with TCP Congestion control
Comment activer BBR sur Linux
Tout d’abord, vérifiez les algorithmes de contrôle de gestion réseau disponibles :
sysctl net.ipv4.tcp_available_congestion_control
Si BBR n’est pas disponible alors activez le module du noyau :
modprobe tcp_bbr
echo "tcp_bbr" > /etc/modules-load.d/bbr.conf
Ajoutez les lignes suivantes dans /etc/sysctl.conf :
net.ipv4.tcp_congestion_control = bbr
net.core.default_qdisc = fq
Puis utilisez sysctl pour recharger /etc/sysctl.conf :
sudo sysctl -p
net.ipv4.tcp_congestion_control = bbr
net.core.default_qdisc = fq
Enfin vérifiez que les modifications sont prises en compte :
sysctl net.ipv4.tcp_congestion_control
net.ipv4.tcp_congestion_control = bbr
A noter que vous pouvez utiliser l’option -w pour une inactivation directe :
sysctl -w net.ipv4.tcp_congestion_control = bbr
sysctl -w net.core.default_qdisc = fq
Comment tester les performances du réseau avec BBR
BBR TCP est le côté expéditeur uniquement, vous n’avez donc pas à vous inquiéter si le récepteur prend en charge BBR. Notez que BBR est beaucoup plus efficace lors de l’utilisation de FQ (file d’attente équitable) pour rythmer les paquets jusqu’à 90% du taux de ligne.
iperf3 est un utilitaire pour effectuer des tests de débit de réseau.
Vous pouvez utiliser l’option -C (ou –congestion) pour choisir l’algorithme de contrôle de la congestion.
Cela vous permet d’effectuer des tests sans modifier le système.
iperf3 -C bbr -c <hôte>
iperf3 -C cubic -c <hôte>
iperf3 -C reno -c <hôte>
Comparatif BBR vs Cubic vs Reno
Voici quelques tests de vitesse réseau avec des algorithmes de congestion différents.
La commande iperf utilisée est du type :
iperf3 -C cubic -c 192.168.10.1 -i 2 -t 30
De plus j’ai différencié les comparatifs entre la modification du kernel et l’utilisation de l’option -C d’iperf.
En effet, la modification du kernel implique aussi la modification du planificateur qdisc.
Algorithme de congestion TCP | Par modification du kernel Linux | Par l’option -C d’iperf | |
BBR | 59.9 MBytes 16.8 Mbits/sec | 57.3 MBytes 16.0 Mbits/sec | |
Cubic | 62.6 MBytes 17.5 Mbits/sec | 63.4 MBytes 17.7 Mbits/sec | |
Reno | 50.3 MBytes 14.1 Mbits/sec | 50.8 MBytes 14.2 Mbits/sec |
On ne voit pas clairement de différence, voire les résultats sont moins bons avec BBR.
Cela est confirmé par cet autre test où Cubic donne de meilleurs résultats que BBR.
Le même test mais via un VPN Wireguard :
Algorithme de congestion TCP | Par modification du kernel Linux | Par l’option -C d’iperf | |
BBR | 51.6 MBytes 14.4 Mbits/sec | 51.3 MBytes 14.3 Mbits/sec | |
Cubic | 49.8 MBytes 13.9 Mbits/sec | 50.7 MBytes 14.2 Mbits/sec | |
Reno | 50.7 MBytes 14.2 Mbits/sec | 50.3 MBytes 14.1 Mbits/sec |
Reno donne toujours de moins bon résultats. Ce n’est pas étonnant car l’algorithme est de 1986.
Cubic donne de meilleurs résultats en direct mais pas via un VPN Wireguard.
Quoiqu’il en soit, si on regarde sur le net, il est dit que BBR donne de meilleurs résultats.
Enfin à noter BBR v2 est aussi en test qui corrige des problèmes présents sur la première version.
Liens
- Mesurer le débit et lister les connexions réseaux
- Comment configurer une adresse IP sur Ubuntu
- Comment configurer le réseau sur Linux
- nmcli : configurer le réseau NetworkManager sur Linux (Debian, Ubuntu, …)
- /etc/network/interfaces : configurer le réseau sur Debian
- Comment changer la configuration des serveurs DNS sur Linux
- Comment changer la passerelle par défaut sur Linux
- Netstat sur Linux : utilisations et exemples
- Comment utiliser la commande ss sur Linux avec des exemples
- 15 commandes ifconfig pour configurer une interface réseau sous Linux
- 10 commandes “IP” utiles pour configurer les interfaces réseau sur Linux
- 6 outils pour tester la vitesse de la connexion internet sur Linux en ligne de commandes
- Nmap : exemples et utilisations
- TCPDump : capturer et analyser le trafic réseau sur Linux
- 25+ exemples de la commande Hping3
- iperf : tester la vitesse et bande passante entre deux hôtes
- Comment utiliser la commande traceroute sur Linux avec des exemples
- Comment utiliser wget avec 14 exemples
- 16 exemples de la commande CURL
- 6 commandes pour télécharger des fichiers en ligne de commandes sur Linux
- Les commandes Linux réseaux
- Unix socket : fonctionnement et utilisations
- Configurer un serveur DHCP sous Linux (isc-dhcp-server)
- Liste de toutes les commandes Linux