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 [ ]) 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
Netzwerk-Scheduler-Algorithmen
Im Laufe der Zeit wurden etliche Netzwerk-Scheduler-Algorithmen (engl. Queueing Discipline [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.
] oder Queueing Algorithm) entwickelt. Man kann ganz grob zwischenEtliche Netzwerk-Scheduler-Algorithmen sind als Linux-Kernel-Module[1] realisiert und sind frei verfügbar:
- CBQ (Class-Based Queueing) discipline
- CHOKe (CHOose and Keep for responsive flows, CHOose and Kill for unresponsive flows) ist eine RED-Variante
- CoDel (Controlled Delay) und Fair/Flow Queue CoDel
- DRR (Deficit Round Robin) und DWRR
- HSFC (Hierarchical Fair Service Curve)
- NETEM Network emulator
- HTB (Hierarchy Token Bucket)
- QFQ (Quick Fair Queueing) Scheduler
- RED (Random early detection) sowie ARED, GRED, RRED und WRED
- SFB (Stochastic Fair Blue) sowie Resilient SFB
- SFQ (Stochastic Fairness Queueing)
- TBF (Token Bucket Filter)
- TEQL (Trivial Link Equalizer)
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.
- Active Queue Management (AQM), Deutsch etwa aktive Warteschlangenverwaltung,
- Network Traffic Control: quasi ein Überbegriff, denn in der Tat soll der Netzwerkverkehr kontrolliert werden
- Traffic-Shaping: eine Form von AQM, die verfügbare Bandbreite wird künstlich aufgeteilt und jeweils begrenzt
- Link Sharing: wenn sich zwei oder mehr Parteien eine Leitung teilen, bietet es sich ein auf dem gemeinsamen Router den Netzwerk-Scheduler entsprechend einzurichten
- Traffic Prioritizing: eine Form von AQM, die Warteschlange wird verwaltet, indem ausgesuchte Datenpakete priorisiert werden
- TCP Turbo: ein Schlagwort, das hervorheben soll, dass durch entsprechendes AQM, eine Verlangsamung der TCP-Downloadrate verhindert wird
- Bandwidth Management: Verwaltung der verfügbaren Bandbreite
Siehe auch
- Vermeidung von Netzwerküberlastung
- Traffic-Shaping
- Type of Service (TOS)
- Warteschlange (Datenstruktur)
Referenzen
- ↑ Linux Kernel Source Code: Netzwerk-Scheduler. 26. Dezember 2012, abgerufen am 26. Dezember 2012.