Menu Fermer

Activer BBR sur Linux pour améliorer les performance du réseau

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.

Activer BBR sur Linux pour améliorer les performance du réseau

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.

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
Comment activer BBR sur Linux

Si BBR n’est pas disponible alors activez le module du noyau :

modprobe tcp_bbr
echo "tcp_bbr" > /etc/modules-load.d/bbr.conf
Comment activer BBR sur Linux

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
Comment activer BBR sur Linux

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>
Comment tester les performances du réseau avec BBR

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 TCPPar modification du kernel LinuxPar l’option -C d’iperf
BBR59.9 MBytes 16.8 Mbits/sec57.3 MBytes 16.0 Mbits/sec
Cubic62.6 MBytes 17.5 Mbits/sec63.4 MBytes 17.7 Mbits/sec
Reno50.3 MBytes 14.1 Mbits/sec50.8 MBytes 14.2 Mbits/sec
BBR VS Cubic VS Reno

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.

Comparatif BBR vs Cubic vs Reno

Le même test mais via un VPN Wireguard :

Algorithme de congestion TCPPar modification du kernel LinuxPar l’option -C d’iperf
BBR51.6 MBytes 14.4 Mbits/sec51.3 MBytes 14.3 Mbits/sec
Cubic49.8 MBytes 13.9 Mbits/sec50.7 MBytes 14.2 Mbits/sec
Reno50.7 MBytes 14.2 Mbits/sec50.3 MBytes 14.1 Mbits/sec
BBR VS Cubic VS Reno dans Wireguard

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.