Random early detection
# Random early detection

Random early detection (RED), auch bekannt als Random early discard oder Random early drop ist ein Algorithmus für einen Netzwerk-Scheduler zur Vermeidung von Staus (siehe Überlastvermeidungsalgorithmus).
Im herkömmlichen Taildrop-Algorithmus puffert ein Router oder eine andere Netzwerkkomponente so viele Pakete wie möglich und verwirft diejenigen, die nicht mehr in die Warteschlange passen. Wenn die Warteschlange voll ist, nennt man das Netzwerk überlastet. Der Taildrop-Algorithmus verteilt den Warteschlangenplatz nicht gerecht zwischen den Strömen der Netzwerkteilnehmer. Taildrop kann auch zur TCP Global Synchronization führen, wobei alle TCP-Verbindungen gleichzeitig warten und nach Ablauf ihrer Timeouts gleichzeitig wieder zu senden beginnen. Die Netzwerke sind dementsprechend entweder nicht optimal ausgelastet oder überlastet.
Hier kommt RED ins Spiel. Es beobachtet die mittlere Warteschlangenlänge und verwirft (oder markiert, wenn es in Verbindung mit ECN benutzt wird) Pakete anhand statistischer Wahrscheinlichkeiten. Wenn die Warteschlange fast leer ist, werden alle ankommenden Pakete akzeptiert. Beim Anwachsen der Warteschlange wächst auch die Wahrscheinlichkeit des Verwerfens ankommender Pakete. Wenn sie (annähernd – siehe maximale Obergrenze) voll ist, ist die Wahrscheinlichkeit des Verwerfens 1 und dementsprechend werden auch alle Pakete verworfen.
RED bietet eine größere Fairness als der Taildrop-Algorithmus. Je mehr ein Host kommuniziert, desto wahrscheinlicher ist es, dass seine Pakete verworfen werden. Early Detection trägt zur Vermeidung von TCP Global Synchronization bei.
RED nimmt keine Rücksicht auf Verkehrsklassen bei Quality of Service (QoS). Weighted RED (WRED) und Red In/Out (RIO) stellen Early Detection in Hinsicht auf QoS bereit.
RED stellt eine Möglichkeit dar, um Netzüberlastung zu vermeiden. RED-fähige Netzwerkkomponenten verwenden eine Portwarteschlange. Sind mehrere dieser Puffer pro Port verfügbar, kann WRED (Weighted Random Early Detection, gewichtete zufällige Früherkennung) verwendet werden. RED informiert Sender und Empfänger lediglich indirekt über den Stau, indem es einige zufällig ausgewählte Pakete (meist 1–2 %) aus der Warteschlange löscht, wenn diese einen gewissen Füllstand (z. B. 50 %) erreicht hat. Mit wachsender Länge des Puffers werden exponentiell mehr Pakete gelöscht, je stärker sich die durchschnittliche Warteschlangenlänge der 100 %-Marke nähert. Der durchschnittliche Füllstand wird üblicherweise über die Dauer von einer Sekunde berechnet. Durch das zufallsgesteuerte Vorgehen von RED kommt es automatisch zu einer fairen Aufteilung der Bandbreite.

## Andere Varianten

Weighted RED (WRED) kann verschiedene Wahrscheinlichkeiten für verschiedene Prioritäten und Warteschlangen vergeben.
Adaptive/Active RED (ARED) betrachtet die durchschnittliche Warteschlangenlänge und entscheidet daraufhin, wie aggressiv RED vorzugehen hat. Wenn die durchschnittliche Warteschlangenlänge um die Untergrenze variiert, dann ist das Early Detection Verfahren zu aggressiv. Wenn die durchschnittliche Warteschlangenlänge um die Obergrenze variiert, dann ist Early Detection zu konservativ. Der Algorithmus verändert die Wahrscheinlichkeit, indem er Bezug nimmt auf seine Fähigkeit, die Aggressivität des Verwerfens von Traffic zu "spüren".