CoDel – Controlled Delay

Abkürzung: CoDel

CoDel (Controlled Delay) ist ein Verfahren zur aktiven Warteschlangensteuerung, das die Verweildauer von Paketen in der Warteschlange begrenzt. Es kommt ohne Abstimmung auf die Leitungsrate aus — der Grund, warum es sich gegenüber älteren Verfahren durchgesetzt hat.

Die Idee hinter CoDel

Ältere Verfahren beobachteten die Länge der Warteschlange. Diese Größe hat aber keine feste Bedeutung: Hundert Pakete in der Schlange sind bei 1 Gbit/s ein flüchtiger Zustand und bei 1 Mbit/s eine Wartezeit von über einer Sekunde. Jede Einstellung musste deshalb auf den jeweiligen Einsatzort abgestimmt werden, und in der Praxis wurde das selten korrekt implementiert.

CoDel misst stattdessen die Zeit, die jedes Paket tatsächlich in der Schlange verbringt. Diese Größe bedeutet überall dasselbe, und der Zielwert lässt sich fest vorgeben.

Wie CoDel arbeitet

Beim Entnehmen eines Pakets wird berechnet, wie lange es gewartet hat. Daraus ergibt sich:

Bleibt die Verweildauer unter dem Zielwert, geschieht nichts. Die voreingestellten 5 Millisekunden sind kurz genug, dass Echtzeitanwendungen nichts merken.

Liegt sie über dem Zielwert, und zwar durchgehend über ein bestimmtes Zeitfenster, beginnt CoDel, einzelne Pakete zu verwerfen. Das voreingestellte Fenster von 100 Millisekunden orientiert sich an der Zeit, die eine typische Verbindung braucht, um auf ein Signal zu reagieren.

Bessert sich die Lage nicht, verwirft es in immer kürzeren Abständen, bis die Schlange sich leert.

Die Unterscheidung zwischen einer vorübergehenden und einer stehenden Warteschlange ist der Kern des Verfahrens. Eine kurze Spitze soll gerade nicht bestraft werden — dafür sind Zwischenspeicher da. Erst eine Schlange, die dauerhaft voll ist, ist das Problem.

FQ-CoDel

In der Praxis tritt CoDel fast immer in Verbindung mit einer fairen Aufteilung auf. Diese Kombination heißt Fair Queuing Controlled Delay (FQ-CoDel) und ist das, was in Linux und in Router-Betriebssystemen voreingestellt ist.

Der Verkehr wird dabei anhand von Absender, Empfänger und Ports in Teilschlangen oder Sub-Queues sortiert, jede davon mit eigener CoDel-Steuerung. Die Entnahme wechselt reihum zwischen ihnen, wobei neu hinzukommende Ströme bevorzugt bedient werden.

Daraus ergibt sich ein Verhalten, das ohne jede Konfiguration bemerkenswert gut passt: Ein Download mit dauerhaft vielen Paketen bekommt seine Schlange, eine Sprachverbindung mit wenigen kleinen Paketen kommt praktisch ohne Wartezeit durch — und eine Namensauflösung oder ein Seitenaufruf, die gerade erst beginnen, werden vorgezogen.

Messung Delay für Upload und Download
Beispiel einer Messung mit LibreQoS in einem Hotel-WLAN

Das ersetzt in den meisten Heim- und Kleinbüronetzen eine von Hand gepflegte Priorisierung vollständig.

Grenzen von CoDel

Es wirkt nur an der Engstelle. Wo keine Schlange entsteht, gibt es nichts zu steuern. Bei Heimanschlüssen liegt die Engstelle meist außerhalb des eigenen Geräts, weshalb zusätzlich eine Ratenbegrenzung nötig ist.

Die Aufteilung lässt sich umgehen. Wer viele parallele Verbindungen aufbaut, bekommt entsprechend viele Teilschlangen und damit mehr Anteil. Für gewöhnliche Anwendungen spielt das keine Rolle, für Programme, die bewusst Dutzende Verbindungen öffnen, schon.

Bei sehr niedrigen Raten wird es eng. Unterschreitet die Rate wenige hundert Kilobit je Sekunde, dauert allein das Senden eines einzelnen großen Pakets länger als der Zielwert. Dann helfen nur kleinere Pakete oder eine Zerlegung.

Einordnung

CoDel entstand 2012 als Antwort auf Bufferbloat, dessen Ursache wenige Jahre zuvor benannt worden war. Die Entwicklung ging von denselben Personen aus, die schon an den Überlastverfahren von TCP beteiligt waren.

Wesentlich daran beteiligt war Dave Täht (1965–2025): Er trieb das Projekt bufferbloat.net voran, war Mitautor der Norm zu FQ-CoDel und sorgte über das Testsystem CeroWrt dafür, dass die Verfahren ihren Weg in OpenWrt und den Linux-Kern fanden.

Heute ist FQ-CoDel in Linux voreingestellt und damit in einem Großteil der Server, Router und eingebetteten Geräte aktiv, ohne dass jemand etwas einstellen musste. Für Heimanschlüsse ist CAKE verbreiteter, weil es Ratenbegrenzung und Rahmenausgleich mitbringt.

Abgrenzung

AQM ist der Oberbegriff für Verfahren dieser Art. CoDel ist eines davon.

CAKE baut auf denselben Gedanken auf und fasst zusätzliche Funktionen in einem Baustein zusammen.

PIE verfolgt dasselbe Ziel über eine Schätzung statt über eine Messung und ist in der Kabelnorm vorgeschrieben.

Bufferbloat ist das Problem, für dessen Lösung CoDel entwickelt wurde.

Quellen

  • Nichols, Jacobson: Controlling Queue Delay, ACM Queue

Erstellt: