Zum Inhalt springen
L

Wikipedia · einfach zusammengefasst · Stand

CoDel

CoDel (ausgesprochen „koddel“) steht für controlled delay und bezeichnet einen Algorithmus zum Puffermanagement in Computernetzwerken.

Inhalt3 Abschnitte
  1. 1. Grundidee und Einordnung
  2. 2. Funktionsweise
  3. 3. Ziele

Grundidee und Einordnung

CoDel, ausgesprochen „koddel“, steht für controlled delay und bezeichnet einen Algorithmus zum Puffermanagement in Computernetzwerken. Er wurde entwickelt, um Netzwerküberlastungen zu vermeiden, die durch Bufferbloat entstehen. Bufferbloat bedeutet, dass zu große oder dauerhaft gefüllte Netzwerkpuffer die Verzögerung, also die Latenz, im Netzwerkverkehr erhöhen.

Der Algorithmus wurde von Kathleen Nichols und Van Jacobson entwickelt und als RFC 8289 veröffentlicht. CoDel ist ab Version 3.5 im Linux-Kernel enthalten; manche Projekte, zum Beispiel OpenWrt, portierten ihn auch auf ältere Kernel. Heute wird vor allem die Weiterentwicklung FQ-CoDel eingesetzt.

Funktionsweise

Klassische passive Pufferverwaltungsalgorithmen wie FIFO verwerfen eingehende Pakete erst dann, wenn der Puffer voll ist. FIFO bedeutet „First In, First Out“: Pakete werden in der Reihenfolge verarbeitet, in der sie angekommen sind.

CoDel arbeitet anders: Der Algorithmus wählt gezielt Pakete aus, die verworfen werden, und löscht sie frühzeitig aus dem Puffer. Dadurch soll die Latenz gering bleiben. Weil CoDel aktiv in die Pufferverwaltung eingreift, gehört er zur Klasse der aktiven Pufferverwaltungsalgorithmen.

Ziele

CoDel soll zwischen „guten“ und „schlechten“ Puffern unterscheiden. Gute Puffer sind genutzte Kapazitäten, die sich durch Bursts, also kurze Datenstöße, aufbauen und anschließend zügig wieder abgebaut werden. Schlechte Puffer sind dauerhaft gefüllte Puffer, die nicht wieder abgebaut werden, weil Eingangsrate und Ausgangsrate der Pakete ungefähr gleich sind.

Solche schlechten Puffer verursachen sogenannte „stading queues“ und erhöhen die Latenz im Netzwerkverkehr. Das Designziel von CoDel war, diese beiden Pufferarten zu unterscheiden und sie unterschiedlich zu behandeln.

Ein weiteres Ziel war, CoDel parameterlos zu halten. Es sollte also keine Einstellparameter für Nutzer oder Softwareentwickler geben. Dadurch sollten Implementierung und Nutzung des Verfahrens einfach und effizient möglich sein.

Weiterlesen