Netzwerkplaner - Network scheduler

Pakete, die in einer FIFO- Datenstruktur (first in, first out) in eine Warteschlange gestellt werden.

Ein Netzwerk-Scheduler , auch Paket-Scheduler , Warteschlangen-Disziplin ( qdisc ) oder Warteschlangen-Algorithmus genannt , ist ein Arbiter auf einem Knoten in einem Paketvermittlungs- Kommunikationsnetzwerk. Er verwaltet die Folge von Netzwerkpaketen in Sende- und Empfangswarteschlangen der Protokollstapel und Netzwerkschnittstellen - Controller . Für die verschiedenen Betriebssysteme stehen mehrere Netzwerk-Scheduler zur Verfügung , die viele der bestehenden Netzwerk- Scheduling-Algorithmen implementieren .

Die Netzwerk-Scheduler-Logik entscheidet, welches Netzwerkpaket als nächstes weitergeleitet wird. Der Netzwerk-Scheduler ist mit einem Warteschlangensystem verbunden, das die Netzwerkpakete vorübergehend speichert, bis sie übertragen werden. Systeme können eine einzelne oder mehrere Warteschlangen aufweisen, wobei in diesem Fall jede die Pakete eines Flusses , einer Klassifizierung oder Priorität enthalten kann.

In einigen Fällen ist es möglicherweise nicht möglich, alle Übertragungen innerhalb der Beschränkungen des Systems zu planen. In diesen Fällen ist der Netzwerk-Scheduler dafür verantwortlich, zu entscheiden, welcher Verkehr weitergeleitet und was verworfen wird .

Terminologie und Verantwortlichkeiten

Ein Netzwerk-Scheduler kann die Verantwortung für die Implementierung spezifischer Initiativen zur Steuerung des Netzwerkverkehrs tragen . Network Traffic Control ist ein Überbegriff für alle Maßnahmen zur Reduzierung von Staus, Latenzzeiten und Paketverlusten. Insbesondere aktive Warteschlangenverwaltung (AQM) ist der selektive Abwurf der Warteschlange Netzwerkpakete mit dem größeren Ziel der Verhinderung übermäßige Netzwerküberlastung zu erreichen. Der Scheduler muss auswählen, welche Pakete verworfen werden sollen. Traffic Shaping glättet die Bandbreitenanforderungen von Verkehrsflüssen, indem Übertragungspakete verzögert werden, wenn sie in Bursts in die Warteschlange gestellt werden. Der Scheduler bestimmt das Timing für die übertragenen Pakete. Quality of Service (QoS) ist die Priorisierung des Verkehrs basierend auf der Dienstklasse ( Differenzierte Dienste ) oder der reservierten Verbindung ( Integrierte Dienste ).

Algorithmen

Im Laufe der Zeit haben sich viele Disziplinen des Network Queuing entwickelt. Jede von diesen stellt spezifische Neuanordnung oder Fallenlassen von Netzwerkpaketen innerhalb verschiedenen Sende- oder Empfangspuffer . Queuing-Disziplinen werden häufig als Versuche verwendet, verschiedene Netzwerkbedingungen zu kompensieren, wie z. B. die Reduzierung der Latenz für bestimmte Klassen von Netzwerkpaketen, und werden im Allgemeinen als Teil von QoS-Maßnahmen verwendet.

Beispiele für Algorithmen, die für die Verwaltung des Netzwerkverkehrs geeignet sind, umfassen:

Einige der oben genannten wurden als Linux-Kernel-Module implementiert und sind frei verfügbar .

Bufferbloat

Bufferbloat ist ein Phänomen in paketvermittelten Netzwerken, bei dem eine übermäßige Pufferung von Paketen eine hohe Latenz und Variation der Paketverzögerung verursacht . Bufferbloat kann von einem Netzwerk-Scheduler adressiert werden, der Pakete strategisch verwirft, um einen unnötig hohen Pufferungsrückstand zu vermeiden. Beispiele sind CoDel und Random Early Detection .

Implementierungen

Linux Kernel

Der Paket-Scheduler des Linux-Kernels ist zusammen mit netfilter , nftables und Berkeley Packet Filter Teil des Netzwerk-Stack .

Der Paket-Scheduler des Linux-Kernels ist ein integraler Bestandteil des Netzwerk-Stack des Linux-Kernels und verwaltet die Sende- und Empfangs- Ringpuffer aller NICs, indem er beispielsweise auf der Schicht 2 des OSI-Modells arbeitet und Ethernet-Frames verarbeitet .

Der Paket-Scheduler wird mit dem Dienstprogramm namens tc(kurz für "Traffic Control") konfiguriert . Als Standardwarteschlangendisziplin verwendet der Paketplaner eine FIFO-Implementierung namens pfifo_fast , obwohl systemd seit seiner Version 217 die Standardwarteschlangendisziplin in fq_codel ändert .

Mit den Dienstprogrammen ifconfigund ipkönnen Systemadministratoren die Puffergrößen txqueuelenund rxqueuelenfür jedes Gerät unabhängig von deren Größe separat in Bezug auf die Anzahl der Ethernet-Frames konfigurieren . Der Netzwerkstack des Linux-Kernels enthält mehrere andere Puffer, die nicht vom Netzwerk-Scheduler verwaltet werden.

Berkeley Packet Filter- Filter können an die Klassifikatoren des Paket-Schedulers angehängt werden. Die eBPF- Funktionalität, die 2015 mit der Version 4.1 des Linux-Kernels eingeführt wurde, erweitert die klassischen programmierbaren BPF-Klassifikatoren auf eBPF. Diese können mit dem LLVM eBPF-Backend kompiliert und mit dem tcDienstprogramm in einen laufenden Kernel geladen werden .

BSD und OpenBSD

ALTQ ist die Implementierung eines Netzwerk-Schedulers für BSDs . Ab OpenBSD Version 5.5 wurde ALTQ durch den HFSC-Scheduler ersetzt.

Siehe auch

Anmerkungen

Verweise