Un accès à très haut débit de 1 Gbit/s peut subir des ralentissements majeurs de réactivité lors de transferts simultanés. Alors qu'un test ping isolé sur une liaison inactive affiche un temps d'aller-retour (RTT) de 15 millisecondes (ms), le lancement d'un téléchargement volumineux ou d'une sauvegarde cloud peut subitement faire grimper ce délai au-delà de 600 ms. Les communications vocales se hachent, les sessions interactives SSH se figent et les applications temps réel subissent des pertes de paquets.

Ce phénomène porte le nom de Bufferbloat (saturation des tampons mémoire) : une latence induite par une mise en mémoire tampon excessive et non gérée dans les équipements réseau. Lors de l'utilisation d'un tunnel chiffré, le problème s'amplifie. Un réseau privé virtuel (VPN) regroupe les flux d'applications hétérogènes au sein d'un flux UDP externe opaque, masquant la dynamique des paquets aux routeurs intermédiaires. Résoudre cette dégradation nécessite le déploiement de mécanismes modernes de gestion active des files d'attente (Active Queue Management, AQM) tels que FQ-CoDel (RFC 8290) et CAKE, tant sur les interfaces physiques que virtuelles.

+--------------------------------------------------------------------------+
|                   GOULOT D'ÉTRANGLEMENT DANS LE TUNNEL VPN               |
|                                                                          |
| [ Paquet VoIP (64 o) ] \                                                 |
| [ Paquet SSH (96 o)  ] ---> [ Interface virtuelle TUN ]                  |
| [ Flux vidéo 4K lourd ] /             |                                  |
|                                       v                                  |
|                 [ Flux UDP chiffré monolithique externe ]                |
|                                       |                                  |
|                                       v                                  |
|                  +-----------------------------------+                   |
|                  |    Tampon WAN FIFO surdimensionné |                   |
|                  | [Fichier][Fichier][Fichier][VoIP] |                   |
|                  +-----------------------------------+                   |
|                                       |                                  |
|             Le temps de séjour passe de 15 ms à 650 ms                   |
|             Les paquets interactifs restent bloqués                      |
+--------------------------------------------------------------------------+

Les mécanismes du Bufferbloat dans les réseaux de transport

Pendant des décennies, les équipementiers réseau ont considéré la perte de paquets comme un défaut matériel. Pour éviter d'abandonner des trames lors de pics d'activité, les concepteurs ont intégré de vastes tampons de mémoire vive dans les routeurs domestiques, modems câble et boîtiers fibre (ONT).

La plupart de ces mémoires fonctionnent selon le principe du premier entré, premier sorti avec rejet en fin de file (FIFO tail-drop). Sous faible charge, les paquets sont transmis instantanément. Cependant, les algorithmes classiques de contrôle de congestion TCP (comme Reno ou CUBIC) augmentent continuellement leur fenêtre de congestion (cwnd) jusqu'à ce qu'une perte de paquet soit constatée.

Face à un tampon FIFO de plusieurs mégaoctets, TCP ne détecte pas immédiatement la limite physique de la bande passante. Le protocole remplit l'intégralité du tampon intermédiaire. Des milliers de paquets s'accumulent et attendent des centaines de millisecondes avant d'être transmis sur le média physique. Bien que le débit paraisse maximal, le temps de séjour (sojourn time)—la durée passée par un paquet dans la file d'attente—explose de manière disproportionnée.

Le défi de l'encapsulation et du multiplexage sous VPN

L'établissement d'un tunnel VPN aggrave ces délais d'attente en raison de deux contraintes architecturales distinctes :

1. Le paradoxe de l'encapsulation externe

Les routeurs dotés de fonctionnalités basiques de qualité de service (QoS) inspectent les en-têtes de niveau 3 (IP) et 4 (TCP/UDP). Ils lisent les marquages DSCP, les numéros de ports et les protocoles afin d'isoler la voix interactive des téléchargements de fichiers.

Lorsque le trafic transite par un tunnel WireGuard (port UDP 51820) ou IPsec, l'en-tête IP externe ne contient que l'adresse IP locale du client et celle de la passerelle VPN. L'ensemble des flux internes—requêtes DNS, commandes de terminal, téléchargements web et voix WebRTC—se fond dans une charge utile chiffrée uniforme.

Pour le routeur domestique ou le réseau de l'opérateur, la connexion entière apparaît comme un flux UDP unique. L'équipement ne peut distinguer une requête DNS urgente de 80 octets d'un bloc vidéo de 8 Mo. Sous une file FIFO, les paquets légers restent piégés derrière les gros volumes de données, provoquant un blocage de tête de ligne (Head-of-Line blocking).

2. Le point aveugle des interfaces virtuelles locales

Les systèmes d'exploitation traitent les données à travers des couches d'abstraction successives. Lorsqu'une application transmet des données via un VPN, les paquets cheminent depuis le socket vers l'interface virtuelle (tun0 ou wg0), traversent la pile réseau du noyau, subissent le chiffrement et sont remis à l'interface physique (eth0 ou wlan0).

Si la discipline de file d'attente est mal configurée sur l'interface virtuelle ou sur la carte réseau physique, la saturation s'installe directement au sein du noyau local avant même que le paquet n'atteigne le câble réseau.

CoDel : Maîtriser le délai grâce au temps de séjour

Pour éliminer le Bufferbloat sans infliger de pertes inutiles, les chercheurs Kathleen Nichols et Van Jacobson ont mis au point l'algorithme CoDel (Controlled Delay, RFC 8289).

Les premières approches AQM, telles que RED (Random Early Detection), tentaient d'ajuster les tampons en mesurant la longueur moyenne de la file. RED nécessitait un étalonnage mathématique complexe en fonction du débit et de la latence, ce qui provoquait souvent des rejets prématurés sur les liaisons rapides.

+-------------------------------------------------------------------------+
|                  DYNAMIQUE DU TEMPS DE SÉJOUR SOUS CODEL                |
|                                                                         |
|  Arrivée du paquet ----> [ Enregistrement de l'horodatage : t_enq ]     |
|                                      |                                  |
|                                      v                                  |
|                             [ File d'attente ]                          |
|                                      |                                  |
|                                      v                                  |
|  Sortie du paquet  ----> [ Temps de séjour = t_deq - t_enq ]            |
|                                      |                                  |
|           +--------------------------+--------------------------+       |
|           |                                                     |       |
|  Séjour < Cible (5 ms)                                 Séjour > Cible   |
|           |                                                     |       |
|    [ Paquet transmis ]                     Le minuteur surveille l'état |
|                                            au-delà de l'intervalle      |
|                                                         |               |
|                                                         v               |
|                                                [ Mode rejet Dropping ]  |
|                                                Rejet au rythme de :     |
|                                                1 / sqrt(count)          |
+-------------------------------------------------------------------------+

CoDel substitue à la taille de la file une mesure temporelle directe :

  1. Bonne file et mauvaise file : Une montée temporaire du tampon qui s'évacue rapidement constitue une « bonne file » et n'est pas pénalisée. Une file constamment encombrée sur une durée prolongée constitue une « mauvaise file » qui dégrade artificiellement la réactivité.
  2. Paramètres Target et Interval : CoDel définit deux références : la cible target (5 ms par défaut) et la période d'évaluation interval (100 ms, représentative d'un cycle RTT standard).
  3. Automate de rejet : À la sortie d'un paquet, CoDel évalue son temps de séjour. Si la valeur minimale observée demeure supérieure à 5 ms durant tout l'intervalle de 100 ms, l'algorithme passe en état d'abandon (dropping state). Il rejette le paquet (ou le marque via ECN) selon une progression mathématique inverse de la racine carrée :

$$\Delta t = \frac{\text{interval}}{\sqrt{\text{count}}}$$

Ce mécanisme incite TCP à réduire sa fenêtre d'émission jusqu'à ce que la latence de file repasse sous la barre des 5 ms. Dès que la congestion disparaît, CoDel quitte instantanément l'état d'abandon.

Comparaison FQ-CoDel et CAKE : La gestion avancée par flux

L'application de CoDel sur une file FIFO simple laisse subsister le risque qu'un flux volumineux monopolise l'accès. La véritable avancée réside dans la combinaison de CoDel avec la mise en file par flux (Flow Queuing).

FQ-CoDel (RFC 8290)

FQ-CoDel ventile les paquets entrants dans 1024 sous-files distinctes grâce au hachage du quintuplet réseau (IP source, IP destination, protocole, port source, port destination).

L'ordonnanceur Deficit Round Robin (DRR++) assure deux fonctions :

  • Priorité aux flux légers : Les sous-files peu chargées (échanges SSH, voix sur IP, jeux en ligne) sont servies en priorité sans attendre les téléchargements lourds.
  • Isolement des congestions : Lorsqu'un transfert massif remplit sa sous-file, l'action de CoDel ne s'applique qu'à cette file spécifique. Les flux interactifs voisins continuent de transiter sans aucune latence additionnelle.

CAKE (Common Applications Kept Enhanced)

Successeur direct de FQ-CoDel, l'algorithme CAKE réunit la régulation de bande passante, un hachage robuste contre les collisions et la compensation des surcoûts de trame au sein d'un composant optimisé du noyau Linux.

Caractéristique FQ-CoDel (RFC 8290) CAKE (AQM nouvelle génération)
Gestion des collisions Table de hachage simple Hachage associatif à 8 voies
Contrôle de débit Nécessite un module htb externe Régulateur de débit intégré précis
Surcoûts de trame Calcul manuel nécessaire Prise en charge native Ethernet, ATM, PPPoE
Isolation des hôtes Uniquement par flux Double isolation : équité par hôte et par flux
Classes DiffServ Ensemble de files unique 4 classes hiérarchisées (Bulk, Best Effort, Video, Voice)

Le mode de double isolation de CAKE protège les réseaux partagés : même si une machine du réseau local ouvre 200 téléchargements simultanés, CAKE équilibre d'abord les débits entre les appareils avant d'arbitrer les flux individuels.

Propagation des notifications ECN à travers le tunnel

La perte d'un paquet force TCP à effectuer des retransmissions, ce qui ralentit les transferts. La notification explicite de congestion (ECN, RFC 3168 et RFC 6040) permet d'avertir les émetteurs sans rejeter de données.

ECN utilise 2 bits dans l'en-tête IP : 00 (non compatible), 10 (compatible ECT(0)), 01 (compatible ECT(1)) et 11 (congestion subie, CE).

Lorsqu'un ordonnanceur détecte une file en phase d'engorgement, si le paquet possède un drapeau ECT, le routeur remplace sa valeur par CE (11) au lieu de le supprimer. Le récepteur lit cette indication et en informe l'émetteur via les acquittements TCP ACK, ce qui amène ce dernier à modérer son débit sans interruption.

Conformément à la RFC 6040, les passerelles VPN doivent respecter la transmission des signaux ECN :

  • Lors de l'encapsulation, le marquage ECN interne est copié dans l'en-tête IP externe du tunnel.
  • Lors de la décapsulation, si l'en-tête externe porte la valeur CE, le routeur applique l'état CE à l'en-tête interne avant de le transmettre au système.

Configuration pratique d'AQM sur les tunnels VPN

Pour éliminer le Bufferbloat sous Linux, il convient d'associer un ordonnanceur adapté aux interfaces physiques et aux cartes virtuelles.

Étape 1 : Mesurer l'élévation de latence sous charge

Évaluez la variation du temps de réponse entre la liaison au repos et la liaison saturée :

# Mesure de base du ping vers la passerelle VPN
ping -c 20 10.8.0.1

# Surveillance en continu pendant un test de débit maximal
ping 10.8.0.1 | while read pong; do echo "$(date +%T.%N) $pong"; done

Étape 2 : Activer CAKE sur l'interface du tunnel

Configurez l'ordonnanceur CAKE directement sur l'interface WireGuard :

# Vérification de la discipline en place sur wg0
tc qdisc show dev wg0

# Remplacement de la règle par CAKE avec DiffServ et filtrage ACK
sudo tc qdisc replace dev wg0 root cake bandwidth 150mbit diffserv4 ack-filter

L'option ack-filter de CAKE supprime les acquittements TCP ACK redondants sur les liaisons asymétriques, libérant ainsi la voie montante.

Étape 3 : Ajuster les paramètres réseau du noyau Linux

Ajoutez les directives d'optimisation dans le fichier /etc/sysctl.conf :

# Définir FQ-CoDel comme ordonnanceur par défaut du système
net.core.default_qdisc = fq_codel

# Activer l'algorithme moderne de contrôle de congestion BBR
net.ipv4.tcp_congestion_control = bbr

# Limiter l'inflation des tampons de sockets TCP
net.ipv4.tcp_rmem = 4096 87380 6291456
net.ipv4.tcp_wmem = 4096 65536 6291456
net.core.netdev_max_backlog = 5000

Activez immédiatement les modifications :

sudo sysctl -p

L'architecture de latence maîtrisée dans VPNRice

Dans l'infrastructure VPNRice, la régulation des files d'attente est intégrée au cœur du protocole RiceGuard.

En organisant la séparation des flux au niveau 3 avant toute encapsulation cryptographique, RiceGuard achemine les paquets prioritaires (requêtes DNS, flux audio, données de jeu) dans des circuits de traitement isolés. Avec la transmission transparente des signaux ECN selon la norme RFC 6040 et l'accélération matérielle ChaCha20-Poly1305, la connexion maintient une latence stable sous les 20 ms, même en cas de transferts massifs simultanés.

La gestion active des files d'attente résout durablement les problèmes de latence réseau en substituant aux tampons passifs une organisation intelligente par flux. L'association de FQ-CoDel ou de CAKE garantit une réactivité optimale et des échanges chiffrés fiables. Conservez une connexion stable et réactive avec Télécharger VPNRice.