Netzwerk-Scheduler

Ein Netzwerk-Scheduler (vgl. englisch scheduling bzw. Zeitablaufsteuerung) oder auch Paket-Scheduler ist eine Arbitrationslogik, die die Reihenfolge von Datenpaketen in einem Puffer der Art einer Warteschlange (engl. Queue [kju]) regelt. Für die verschiedenen Betriebssysteme bzw. Kernel sind verschiedene Netzwerk-Scheduler verfügbar, für die dann mehr oder weniger Implementationen von vorhandenen Netzwerk-Scheduling-Algorithmen verfügbar sind.

Implementationen

Für den Linux-Kernel ist zurzeit ein Netzwerk-Scheduler verfügbar, dieser ist integraler Teil des Linux-Netzwerk-Stacks, arbeitet auf Schicht 2 des OSI-Modells, also mit Ethernet Frames und verwaltet die Ein- und Ausgangspuffer sämtlicher Netzwerkkarten. Mit ifconfig oder ip lässt sich die Puffergröße txqueuelen (deutsch: Sendewarteschlangenlänge) /rxqueuelen in Anzahl an Ethernet frames (unabhängig ihrer Größe) für jedes Gerät einstellen. Der Netzwerk-Scheduler verwaltet nicht den Ringpuffer oder irgendwelche anderen Puffer.

Ein weiterer Netzwerk-Scheduler befindet sich in der Planungsphase und ist Teil von Netfilter.

Funktionsweise

Der jeweils geladene Netzwerk-Scheduler-Algorithmus und die eingestellten Parameter bestimmen auf welche Art und Weise der Netzwerk-Scheduler den Warteschlangenpuffer verwaltet.

Illustration

FIFO Datenstruktur

Netzwerk-Scheduler-Algorithmen

Im Laufe der Zeit wurden etliche Netzwerk-Scheduler-Algorithmen (engl. Queueing Discipline [kjuing disiplin] oder Queueing Algorithm) entwickelt. Man kann ganz grob zwischen Leaky-Bucket-Algorithmen und Token-Bucket-Algorithmen unterscheiden, anhand der Einstellmöglichkeiten zwischen klassenbasierten und klassenlosen Algorithmen. Des Weiteren kann man verschiedene Algorithmen zur selben Art zählen, so sind z. B. CHOKe, ARED, GRED and WRED alles RED-Varianten.

Etliche Netzwerk-Scheduler-Algorithmen sind als Linux-Kernel-Module realisiert und sind frei verfügbar:

Schlagwörter

Obwohl die Aufgabe des Netzwerk-Schedulers an sich sehr einfach zu verstehen ist, wurden im Laufe der Zeit sehr viele Schlagwörter zu dem Thema erfunden.

Siehe auch

Einzelnachweise

  1. ↑ Linux Kernel Source Code: Netzwerk-Scheduler. 26. Dezember 2012, archiviert vom Original am 16. August 2012; abgerufen am 26. Dezember 2012.