Zum Inhalt springen

SQM und CAKE: Lag bei Download und Upload beseitigen

  • Sie entscheiden, ob „Lag bei Download/Upload“ auf Bufferbloat zurückgeht und nicht auf WLAN, ONT oder eine überlastete ISP-Leitung.
  • Sie installieren und konfigurieren sqm-scripts und CAKE unter OpenWrt 25.12.
  • Sie erfassen Latenz im Leerlauf und unter Last, Paketverlust und Durchsatz, statt sich auf „fühlt sich schneller an“ zu verlassen.
  • Sie wissen, wann SQM das falsche Werkzeug ist und wie Sie es schnell abschalten.
  • OpenWrt 25.12.6 mit apk; sqm-scripts 1.7.2; optional luci-app-sqm.
  • Der Router ist das NAT-Haupt-Gateway und der WAN-Verkehr läuft über ihn. Bei einem AP oder Bypass-Router sieht SQM den Hauptverkehr unter Umständen nicht.
  • CAKE kostet CPU-Leistung; prüfen Sie bei Gigabit-Anschlüssen die Auslastung eines einzelnen Kerns, bevor Sie Traffic Shaping hinzufügen.
  • Diese Seite ist E2 (teilweise): Installation sowie Anbinden und Stoppen von CAKE wurden getestet. Aussagen zu Durchsatz und Latenz erfordern ein echtes WAN und gehören zu E3.

Typische Anzeichen:

  • Der Ping im Leerlauf ist in Ordnung, die Latenz springt aber hoch, sobald ein Download/Upload startet; Spiele ruckeln, Anrufe stocken.
  • Wird Download/Upload begrenzt, sinkt die Latenz wieder.
  • Dasselbe passiert bei Geräten per Kabel und per WLAN, was auf die WAN-Warteschlange hindeutet.

Kein Bufferbloat:

  • Nur ein Raum bzw. ein Client im WLAN ist betroffen: Prüfen Sie Signal, Störungen und Roaming.
  • Hohe Latenz oder Paketverlust auch im Leerlauf: Prüfen Sie ONT, ISP und Leitung.
  • Die Router-CPU ist bereits ausgelastet; SQM kann es verschlimmern.
Parameter Bedeutung Häufiger Fehler
interface zu regelnde Schnittstelle, meist wan eth0/br-lan verwenden, sodass der Verkehr daran vorbeiläuft
download/upload geregelte Rate (kbit/s) die Tarifrate verwenden, sodass die Warteschlange voll bleibt
qdisc cake oder fq_codel SQM aktivieren, aber die Standard-Qdisc belassen
script piece_of_cake.qos / simplest.qos falsches Skript, Optionen greifen nicht
linklayer/overhead Overhead der Link-Schicht Ethernet-Werte bei PPPoE/VLAN übernehmen
CPU Rechenaufwand von CAKE Gigabit-CAKE auf einer CPU, die nicht mithalten kann

Beginnen Sie bei 85 %–95 % des gemessenen Durchsatzes und justieren Sie dann anhand der Latenz unter Last nach. Setzen Sie nicht „100-M-Tarif = 100000“.

Router-ShellWAN, CPU und aktuelle Qdisc notieren
Terminal-Fenster
ip -br link
ip -br addr
uci show network | grep -E "wan|device"
uci show sqm 2>/dev/null || echo "sqm not installed"
top -bn1 | head -15

Notieren Sie die logische WAN-Schnittstelle, das physische Gerät, die Tarif- bzw. gemessene Rate und das CPU-Modell. Behalten Sie den Zugriff per LuCI/SSH.

ErwartetSie wissen, welche Schnittstelle Sie ändern und ob SQM bereits aktiv ist.

Router-ShellBasiswert im Leerlauf erfassen
Terminal-Fenster
ping -c 20 1.1.1.1
ping -c 20 192.168.50.1

Verwenden Sie irtt/flent, falls verfügbar; andernfalls notieren Sie min/avg/max/mdev und den Paketverlust.

ErwartetLatenz und Paketverlust im Leerlauf sind für den Vergleich notiert.

Router-ShellSQM installieren
Terminal-Fenster
apk update
apk add sqm-scripts luci-app-sqm

luci-app-sqm allein installiert die Skripte nicht; prüfen Sie mit apk info -e sqm-scripts.

Erwartetsqm-scripts und die LuCI-App sind installiert.

LuCISQM in LuCI konfigurieren

Öffnen Sie Network → SQM QoS:

  1. Aktivieren Sie es.
  2. Wählen Sie wan (nicht br-lan).
  3. Setzen Sie Download/Upload auf 85 %–95 % des gemessenen Durchsatzes.
  4. Wählen Sie cake und piece_of_cake.qos.
  5. Wählen Sie die tatsächliche Link-Schicht (übernehmen Sie bei PPPoE/VLAN keine Ethernet-Werte).
  6. Speichern und anwenden.

Beginnen Sie vorsichtig; erhöhen Sie die Rate erst, wenn sich die Latenz verbessert hat.

ErwartetWAN verwendet cake/piece_of_cake und lässt sich aktivieren/deaktivieren.

Router-ShellEntsprechung per CLI (zuerst den Abschnittsnamen prüfen)
Terminal-Fenster
uci show sqm

Der Abschnitt heißt möglicherweise nicht @queue[0]; verwenden Sie den tatsächlichen Namen. Beispiel:

Terminal-Fenster
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 restart

Diese Zahlen sind Beispiele und nicht die Parameter Ihrer Leitung; prüfen Sie linklayer/overhead.

Erwartetuci show sqm zeigt die von Ihnen geänderte Warteschlange.

Router-ShellPrüfen, ob die Qdisc angebunden ist
Terminal-Fenster
tc -s qdisc show dev wan
tc -s qdisc show | grep -E "cake|fq_codel|ifb"
logread -e sqm | tail -30

Sehen Sie nur noqueue/pfifo_fast, ist SQM nicht aktiv; prüfen Sie die Schnittstelle und die Logs von /etc/init.d/sqm.

Erwartetcake/fq_codel erscheint auf wan und das Log ist sauber.

ComputerLatenz unter Download/Upload messen

Lassen Sie einen Ping laufen, während Sie in einem zweiten Terminal die Leitung auslasten:

Terminal-Fenster
# terminal A
ping -i 0.2 1.1.1.1
# terminal B: use a trusted speed/download tool to saturate the line

Notieren Sie:

  • min/avg/max/mdev im Leerlauf und unter Last;
  • Paketverlust;
  • ob der Durchsatz deutlich gesunken ist;
  • ob ein CPU-Kern des Routers ausgelastet ist.

Ohne diese Daten schreiben Sie nicht „SQM hat die Latenz gesenkt“.

ErwartetSie haben Daten vorher/nachher statt eines Gefühls.

Terminal-Fenster
logread -e sqm | tail -50
tc -s qdisc show dev wan
uci show sqm

Häufige Ursachen: falsche Schnittstelle, fehlendes sqm-scripts, nicht unterstützte Kombination aus Qdisc und Skript, tc-Fehler. Deaktivieren Sie SQM und stellen Sie den vorherigen Zustand wieder her, bevor Sie mit der Fehlersuche beginnen.

  • Rate zu niedrig eingestellt: Erhöhen Sie sie schrittweise ausgehend vom gemessenen Wert.
  • CAKE ist für eine schwache CPU zu aufwendig: Verwenden Sie fq_codel oder eine niedrigere Rate.
  • Falscher Link-Overhead: Korrigieren Sie ihn für PPPoE/VLAN.
  • Deaktivieren Sie SQM und prüfen Sie, ob der Durchsatz zurückkehrt.
  • Der Verkehr umgeht den Router (AP/Bypass/Switch).
  • Der Engpass liegt im WLAN oder in einer überlasteten ISP-Leitung.
  • Nur der Download wird geregelt; der Upload ist weiterhin überlastet.
  • Sie haben die Latenz im Leerlauf gemessen, nicht unter Last.
Terminal-Fenster
uci set sqm.@queue[0].enabled='0'
uci commit sqm
/etc/init.d/sqm restart

Oder stellen Sie die vorherige Sicherung von /etc/config/sqm wieder her.

  • Umgebung: OpenWrt 25.12.6 x86-VM 200; WAN eth1 DHCP 192.168.50.158/24; sqm-scripts 1.7.2-r1, luci-app-sqm.
  • Konfiguration: eth1, Download 100000 Kbps, Upload 20000 Kbps, piece_of_cake.qos, cake.
  • Start: SQM: ... started on eth1 successfully; tc -s qdisc show dev eth1 zeigte qdisc cake ... bandwidth 20Mbit.
  • Stopp: SQM: Stopping SQM on eth1; die Qdisc kehrte zu fq_codel zurück.
  • Verwenden Sie diese VM-Werte nicht, um geringere Latenz oder ein besseres Nutzungserlebnis zu behaupten; es gab keine reale Leitung und keinen Vergleich von Latenz unter Last oder Durchsatz.
  • Nicht getestet: Bufferbloat vorher/nachher an einem realen Breitbandanschluss, Auslastung eines einzelnen CPU-Kerns, PPPoE/VLAN-Overhead, WLAN als Engpass.
  • Recipe: tests/recipes/sqm-25.12.md.
  • Dies ist E2 (teilweise): Installation, Anbinden und Stoppen von CAKE sowie Wiederherstellung wurden getestet; die Leistung an einer realen Leitung bleibt E3.
  • Eine VM belegt nur Befehle und das Anbinden der Qdisc; sie kann keinen Heim-Breitbandanschluss abbilden. Verwenden Sie VM-Werte nicht, um „funktioniert“ zu behaupten.
  • Erfassen Sie in einer realen Umgebung Leitung/CPU/Qdisc, Latenz im Leerlauf und unter Last sowie den Durchsatz, bevor Sie entscheiden, SQM beizubehalten.

Quellen

Router.Homes

Unabhängige OpenWrt-Notizen. Jede Seite nennt Firmware, Gerät, Paketmanager und den Rückweg.

Symbole: Solar by 480 Design, CC BY 4.0