CoDel
# CoDel

| Beteilige dich an der Diskussion! | Dieser Artikel wurde wegen inhaltlicher Mängel auf der Qualitätssicherungsseite der Redaktion Informatik eingetragen. Dies geschieht, um die Qualität der Artikel aus dem Themengebiet Informatik auf ein akzeptables Niveau zu bringen. Hilf mit, die inhaltlichen Mängel dieses Artikels zu beseitigen, und beteilige dich an der Diskussion! (+) |
| - | - |

CoDel (ausgesprochen „koddel“) steht für controlled delay und bezeichnet einen Algorithmus zum Puffermanagement in Computernetzwerken. Designziel war die Vermeidung von Netzwerküberlastungen, welche durch den sogenannten Bufferbloat verursacht werden. Er wurde von Kathleen Nichols und Van Jacobson entwickelt und als RFC 8289 veröffentlicht.

Klassische passive Pufferverwaltungsalgorithmen, wie etwa FIFO, verwerfen eingehende Pakete, wenn der Puffer voll ist. CoDel hingegen wählt gezielt Pakete zum Verwerfen aus und löscht diese frühzeitig aus dem Puffer um die Latenz gering zu halten. Damit zählt CoDel zur Klasse der aktiven Pufferverwaltungsalgorithmen.

CoDel ist ab Version 3.5 im Linux-Kernel enthalten, wurde aber von manchen Projekten, wie z. B. OpenWrt, auch auf ältere Kernel portiert. Heute wird allerdings vorwiegend die Weiterentwicklung FQ-CoDel eingesetzt.

## Ziele

Wie beschrieben, wurde CoDel entwickelt, um dem Problem des Bufferbloats in Computernetzwerken zu begegnen. Es wird zwischen „guten“ Puffern und „schlechten“ Puffern unterschieden. Gute Puffer bezeichnen die genutzten Kapazitäten, welche sich durch Bursts aufbauen und anschließend zügig wieder abgebaut werden. Schlechte Puffer sind dauerhaft gefüllte Puffer, welche nicht wieder abgebaut werden, da die Eingangs- und Ausgangsrate der Pakete in etwa gleich ist. Dies sorgt für sogenannte stading queues und verursacht Latenz im Netzwerkverkehr. Das Designziel von CoDel war es, zwischen diesen beiden Arten von Puffern zu unterscheiden, und so in der Lage zu sein, beide unterschiedlich zu bearbeiten.

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

