SQM et CAKE : éliminer la latence pendant les téléchargements et les envois
Résultat
Section intitulée « Résultat »- Déterminez si la « latence pendant un téléchargement ou un envoi » est du bufferbloat, et non un problème de Wi-Fi, d’ONT ou de congestion chez le FAI.
- Installez et configurez
sqm-scriptset CAKE sur OpenWrt 25.12. - Relevez la latence au repos et en charge, les pertes et le débit, au lieu d’affirmer que « ça semble plus rapide ».
- Sachez quand SQM n’est pas le bon outil et comment le désactiver rapidement.
Environnement concerné
Section intitulée « Environnement concerné »- OpenWrt 25.12.6 avec
apk;sqm-scripts 1.7.2;luci-app-sqmen option. - Le routeur est la passerelle NAT principale et le trafic WAN le traverse. Sur un point d’accès ou un routeur en contournement, SQM peut ne pas voir le trafic principal.
- CAKE consomme du CPU ; sur les lignes gigabit, vérifiez l’utilisation d’un seul cœur avant d’ajouter une limitation de débit.
- Cette page est en E2 partiel : l’installation ainsi que l’attachement et l’arrêt de CAKE ont été testés. Les affirmations sur le débit et la latence exigent un vrai WAN et relèvent du niveau E3.
Est-ce du bufferbloat ?
Section intitulée « Est-ce du bufferbloat ? »Signes typiques :
- Le ping au repos est correct, mais la latence explose dès qu’un téléchargement ou un envoi démarre ; les jeux saccadent, les appels hachent.
- Limiter le débit descendant ou montant fait retomber la latence.
- Le problème est identique sur les clients filaires et Wi-Fi, ce qui désigne la file d’attente du WAN.
Ce n’est pas du bufferbloat :
- Un seul local ou un seul client Wi-Fi pose problème : vérifiez le signal, les interférences et l’itinérance.
- Latence ou pertes élevées même au repos : vérifiez l’ONT, le FAI et la ligne.
- Le CPU du routeur est déjà saturé ; SQM peut aggraver la situation.
Paramètres clés
Section intitulée « Paramètres clés »| Paramètre | Signification | Erreur courante |
|---|---|---|
interface |
interface à limiter, généralement wan |
utiliser eth0/br-lan, de sorte que le trafic contourne la limitation |
download/upload |
débit limité (kbit/s) | utiliser le débit annoncé de l’abonnement, ce qui laisse la file pleine |
qdisc |
cake ou fq_codel |
activer SQM mais laisser le qdisc par défaut |
script |
piece_of_cake.qos / simplest.qos |
mauvais script, les options ne s’appliquent pas |
linklayer/overhead |
surcharge de la couche liaison | copier les valeurs Ethernet sur PPPoE/VLAN |
| CPU | coût de calcul de CAKE | CAKE en gigabit sur un CPU qui ne suit pas |
Commencez à 85 %–95 % du débit mesuré, puis ajustez d’après la latence en charge. N’écrivez pas « abonnement 100M = 100000 ».
Avant toute modification
Section intitulée « Avant toute modification »ip -br linkip -br addruci show network | grep -E "wan|device"uci show sqm 2>/dev/null || echo "sqm not installed"top -bn1 | head -15Notez l’interface logique WAN, le périphérique physique, le débit de l’abonnement ou mesuré et le modèle de CPU. Conservez l’accès LuCI/SSH.
AttenduVous savez quelle interface vous modifiez et si SQM est déjà actif.
ping -c 20 1.1.1.1ping -c 20 192.168.50.1Utilisez irtt/flent s’ils sont disponibles ; sinon, relevez min/moy/max/mdev et les pertes.
AttenduLa latence et les pertes au repos sont enregistrées pour comparaison.
Étapes minimales
Section intitulée « Étapes minimales »apk updateapk add sqm-scripts luci-app-sqmluci-app-sqm seul n’installe pas les scripts ; vérifiez avec apk info -e sqm-scripts.
Attendusqm-scripts et l'application LuCI sont installés.
Ouvrez Réseau → SQM QoS :
- Activez-le.
- Sélectionnez
wan(et nonbr-lan). - Réglez le débit descendant et montant à 85 %–95 % du débit mesuré.
- Choisissez
cakeetpiece_of_cake.qos. - Sélectionnez la vraie couche liaison (ne copiez pas les valeurs Ethernet sur PPPoE/VLAN).
- Enregistrez et appliquez.
Commencez prudemment ; n’augmentez le débit qu’une fois la latence améliorée.
AttenduLe WAN utilise cake/piece_of_cake et peut être activé ou désactivé.
uci show sqmLa section peut ne pas s’appeler @queue[0] ; utilisez son vrai nom. Exemple :
uci set sqm.@queue[0].enabled='1'uci set sqm.@queue[0].interface='wan'uci set sqm.@queue[0].download='90000'uci set sqm.@queue[0].upload='18000'uci set sqm.@queue[0].qdisc='cake'uci set sqm.@queue[0].script='piece_of_cake.qos'uci set sqm.@queue[0].linklayer='ethernet'uci set sqm.@queue[0].overhead='0'uci commit sqm/etc/init.d/sqm restartCes valeurs sont des exemples, pas les paramètres de votre ligne ; vérifiez linklayer/overhead.
Attenduuci show sqm affiche la file que vous avez modifiée.
tc -s qdisc show dev wantc -s qdisc show | grep -E "cake|fq_codel|ifb"logread -e sqm | tail -30Si vous ne voyez que noqueue/pfifo_fast, SQM n’est pas actif ; vérifiez l’interface et les journaux de /etc/init.d/sqm.
Attenducake/fq_codel apparaît sur wan et le journal est propre.
Vérification en charge
Section intitulée « Vérification en charge »Gardez un ping actif pendant qu’un autre terminal sature la ligne :
# terminal Aping -i 0.2 1.1.1.1
# terminal B: use a trusted speed/download tool to saturate the lineRelevez :
- min/moy/max/mdev au repos et en charge ;
- les pertes ;
- si le débit a nettement baissé ;
- si un cœur du CPU du routeur est saturé.
Sans ces données, n’écrivez pas « SQM a réduit la latence ».
AttenduVous disposez de données avant/après, pas d'une impression.
Cas d’échec et récupération
Section intitulée « Cas d’échec et récupération »SQM ne démarre pas / aucun qdisc
Section intitulée « SQM ne démarre pas / aucun qdisc »logread -e sqm | tail -50tc -s qdisc show dev wanuci show sqmCauses courantes : mauvaise interface, sqm-scripts absent, combinaison qdisc/script non prise en charge, erreurs de tc. Désactivez SQM et rétablissez l’état précédent avant de poursuivre le diagnostic.
Le débit s’effondre / le CPU sature
Section intitulée « Le débit s’effondre / le CPU sature »- Débit réglé trop bas : relevez-le par paliers à partir de la valeur mesurée.
- CAKE trop coûteux sur un CPU faible : utilisez
fq_codelou un débit plus bas. - Mauvaise surcharge de liaison : corrigez-la pour PPPoE/VLAN.
- Désactivez SQM et confirmez que le débit revient.
Aucun effet
Section intitulée « Aucun effet »- Le trafic contourne le routeur (point d’accès, contournement, switch).
- Le goulot d’étranglement est le Wi-Fi ou la congestion chez le FAI.
- Seul le sens descendant est limité ; le sens montant reste congestionné.
- Vous avez mesuré la latence au repos, pas en charge.
Désactivation rapide
Section intitulée « Désactivation rapide »uci set sqm.@queue[0].enabled='0'uci commit sqm/etc/init.d/sqm restartOu restaurez la sauvegarde précédente de /etc/config/sqm.
Essai de laboratoire E2 (2026-10-20)
Section intitulée « Essai de laboratoire E2 (2026-10-20) »- Environnement : OpenWrt 25.12.6 VM x86 200 ; WAN
eth1en DHCP192.168.50.158/24;sqm-scripts 1.7.2-r1,luci-app-sqm. - Configuration :
eth1, download100000 Kbps, upload20000 Kbps,piece_of_cake.qos,cake. - Démarrage :
SQM: ... started on eth1 successfully;tc -s qdisc show dev eth1affichaitqdisc cake ... bandwidth 20Mbit. - Arrêt :
SQM: Stopping SQM on eth1; le qdisc est revenu àfq_codel. - N’utilisez pas ces valeurs de VM pour affirmer une latence plus faible ou une meilleure expérience ; il n’y a ni vraie ligne, ni latence en charge, ni comparaison de débit.
- Non testé : bufferbloat réel sur une ligne haut débit avant/après, utilisation d’un seul cœur du CPU, surcharge PPPoE/VLAN, goulot d’étranglement Wi-Fi.
- Recette :
tests/recipes/sqm-25.12.md.
Statut E2 et sources
Section intitulée « Statut E2 et sources »- Il s’agit d’un E2 partiel : l’installation, l’attachement et l’arrêt de CAKE ainsi que la récupération ont été testés ; les performances sur une ligne réelle restent du ressort de E3.
- Une VM prouve seulement les commandes et l’attachement du qdisc ; elle ne peut pas représenter une connexion domestique. N’utilisez pas les valeurs de la VM pour affirmer que « ça fonctionne ».
- Dans un environnement réel, relevez la ligne, le CPU et le qdisc, la latence au repos et en charge ainsi que le débit avant de décider de conserver SQM.
Sources
Notes indépendantes sur OpenWrt. Chaque page précise le firmware, l’appareil, le gestionnaire de paquets et le retour arrière.
Icônes : Solar by 480 Design, CC BY 4.0