Netzwerkplaner

A Netzwerkplaner, auch genannt Paketplaner, Warteschlangendisziplin (Qdisc) oder Warteschlangenalgorithmus, ist ein Schiedsrichter auf einen Knoten in einem Paketschaltung Kommunikationsnetzwerk. Es verwaltet die Abfolge von Netzwerkpakete im Sende und Empfangen Warteschlangen des Protokollstapel und Netzwerkschnittstellencontroller. Es sind mehrere Netzwerkplaner für die verschiedenen verfügbaren Betriebssysteme, die viele der vorhandenen Netzwerke implementieren Planungsalgorithmen.
Die Netzwerkplanerlogik entscheidet, welches Netzwerkpaket als nächstes weiterleitet. Der Netzwerkplaner ist einem Warteschlangensystem zugeordnet und speichert die Netzwerkpakete vorübergehend, bis sie übertragen werden. Systeme können eine einzelne oder mehrere Warteschlangen haben. In diesem Fall können jeweils die Pakete von einem enthält fließen, Einstufungoder Priorität.
In einigen Fällen ist es möglicherweise nicht möglich, alle Übertragungen innerhalb der Einschränkungen des Systems zu planen. In diesen Fällen ist der Netzwerkplaner für die Entscheidung verantwortlich fallen gelassen.
Terminologie und Verantwortlichkeiten
Ein Netzwerkplaner hat möglicherweise Verantwortung bei der Implementierung von Spezifisch Netzwerkverkehrskontrolle Initiativen. Die Netzwerkverkehrskontrolle ist ein Dachbegriff für alle Maßnahmen zur Reduzierung Netzüberlastung, Latenz und Paketverlust. Speziell, Aktive Warteschlangenverwaltung (AQM) ist das selektive Abwurf von Netzwerkpaketen in der Warteschlange, um das größere Ziel zu erreichen, übermäßige Netzwerkstaus zu verhindern. Der Scheduler muss auswählen, welche Pakete fallen sollen. Verkehrsformung Glättet die Bandbreitenanforderungen der Verkehrsströme, indem sie Getriebepakete verzögern, wenn sie in Bursts in der Warteschlange sind. Der Scheduler entscheidet das Timing für die übertragenen Pakete. Servicequalität (QoS) ist die Priorisierung des Datenverkehrs basierend auf der Serviceklasse (Differenzierte Dienste) oder reservierte Verbindung (Integrierte Dienstleistungen).
Algorithmen
Im Laufe der Zeit wurden viele Netzwerk -Warteschlangendisziplinen entwickelt. Jedes von diesen bietet eine spezifische Neuordnung oder Löschen von Netzwerkpaketen innerhalb verschiedener Übertragung oder Empfangen Puffer.[1] Warteschlangendisziplinen werden üblicherweise als Versuche verwendet, verschiedene Netzwerkbedingungen zu kompensieren, z. B. die Reduzierung der Latenz für bestimmte Klassen von Netzwerkpaketen und werden im Allgemeinen als Teil von QoS -Maßnahmen verwendet.[2][3][4]
Beispiele für Algorithmen, die für die Verwaltung von Netzwerkverkehr geeignet sind, sind:
- AVQ (adaptive virtuelle Warteschlange)[5]
- CBQ (Klassenbasierte Warteschlange) Disziplin
- Choke (wählen und für reaktionsschnelle Ströme halten, wählen und töten für nicht reagierende Flüsse) ist eine Variante von Rot
- Codel (kontrollierte Verzögerung) und FQ-Codel (Durchflusswarteschlangencodel)
- Kuchen (gemeinsame Anwendungen erweitert), implementiert im Linux -Kernel[6]
- Kreditbasierte faire Warteschlangen
- DRR (Defizit Round Robin) und DWRR, Implementierung, z.B. Geschrieben von Patrick McHardy für die Linux Kernel[7] und veröffentlicht unter dem GNU Allgemeine öffentliche Lizenz.
- FAQ (Favorqueue)[8]
- FQ-Pie (Flow-Warteschlange Proportional Integral Controller erweitert)
- GCRA (generischer Zellrate -Algorithmus)
- HFF (Schwerhitter-Filter)[9]
- HFSC (Hierarchische Fair-Service-Kurve)
- HTB (Hierarchischer Token -Eimer)[10]
- QFQ (schnelle faire Warteschlange)[11]
- Fq (faire Warteschlange) und WFQ (Gewichtete faire Warteschlange)
- FIFO (als Erster rein, als erster raus)
- PKT_Sch: FQ: Fair Queue Paket Scheduler [12]
- Netem -Netzwerk -Emulator[13]
- Kuchen (Proportional Integral Controller erweitert)[14]
- ROT (zufällige frühe Erkennung))
- Ared (Fortgeschrittene zufällige frühe Erkennung)
- Gred (verallgemeinerte zufällige frühe Erkennung)
- Rred (robuste zufällige frühe Erkennung)
- Gedreht (gewichtete zufällige frühe Erkennung)
- RR (Round-Robin) und wrr (Gewichteter Runde Robin)
- SFB (Stochastische Messe Blau) sowie RSFB (widerstandsfähiger SFB)
- Sfq (Stochastische Fairness -Warteschlange)[15]
- TBF (Token -Eimer -Filter)[16]
- TEQL (Trivial Link Equalizer)
Einige der oben genannten wurden implementiert als Linux -Kernel -Module[17] und sind kostenlos erhältlich.
Pufferbloat
Pufferbloat ist ein Phänomen in Paketnetzwerken, in denen Überschuss Pufferung von Paketen verursacht hoch Latenz und Paketverzögerungsvariation. Bufferbloat kann von einem Netzwerkplaner angesprochen werden, der Pakete strategisch verwaltet, um einen unnötig hohen Pufferstehlhaben zu vermeiden. Beispiele beinhalten Codel, Fq-codel und Zufällige frühe Erkennung.
Implementierungen
Linux Kernel

Der Linux -Kernel -Paketplaner ist ein wesentlicher Bestandteil des Netzwerkstacks des Linux -Kernels und verwaltet den Sende und Empfang Ringpuffer von allen NICs durch Arbeit an der Schicht 2 des OSI -Modell und Handling Ethernet -Rahmen, zum Beispiel.
Der Paketplaner wird mit dem genannten Dienstprogramm konfiguriert TC
(kurz für "Verkehrskontrolle"). Als Standard -Warteschlangendisziplin verwendet der Paketplaner eine FIFO -Implementierung auf dem Namen Pfifo_fast,[18] obwohl systemd Da seine Version 217 die Standard -Warteschlangendisziplin an ändert fq_codel
.[19]
Das Ifconfig
und IP
Dienstprogramme ermöglichen Systemadministratoren, die Puffergrößen zu konfigurieren Txqueuelen
und rxqueuelen
Für jedes Gerät separat in Bezug auf die Anzahl der Ethernet -Frames unabhängig von ihrer Größe. Der Netzwerkstapel des Linux -Kernels enthält mehrere andere Puffer, die vom Netzwerkplaner nicht verwaltet werden.[a]
Berkeley Paketfilter Filter können an die Klassifizierer des Paketplaners beigefügt werden. Das ebpf Die von Version 4.1 des Linux -Kernel im Jahr 2015 eingeführte Funktionen erweitert die klassischen bpF -programmierbaren Klassifizierer auf EBPF.[20] Diese können mit dem kompiliert werden Llvm EBPF -Backend und in einen laufenden Kernel mit dem geladen TC
Dienstprogramm.[21]
BSD und OpenBSD
Altq ist die Implementierung eines Netzwerkplaners für BSDS. Ab OpenBSD wurde Version 5.5 ALTQ durch den HFSC -Scheduler ersetzt.
Siehe auch
Anmerkungen
- ^ Die Gesamtgröße aller Puffer war der Punkt der Kritik durch die Pufferbloat Projekt, das eine Teillösung mit Codel lieferte, die in erster Linie getestet wurde in OpenWrt.
Verweise
- ^ "Verkehrskontrolle Howto: Klassenlose Warteschlangendisziplinen (Qdiscs)". tldp.org. Abgerufen 24. November, 2013.
- ^ "Verkehrskontrolle Howto: Komponenten der Linux -Verkehrskontrolle". tldp.org. Abgerufen 24. November, 2013.
- ^ "Verkehrskontrolle Howto: Traditionelle Elemente der Verkehrskontrolle". tldp.org. Abgerufen 24. November, 2013.
- ^ "Warteschlangendisziplinen: Reihenfolge der Paketübertragung und fallen lassen" (PDF). Tau.ac.il. 25. Oktober 2006. Abgerufen 18. März, 2014.
- ^ "Abstrakt". 2002. Citeseerx 10.1.1.108.4477.
{{}}
: Journal zitieren erfordert|journal=
(Hilfe) - ^ "Lass sie Kuchen laufen lassen". Lwn.net.
- ^ "DRR Linux -Kernel -Netzwerk -Scheduler -Modul". kernel.org. Abgerufen 2013-09-07.
- ^ "FavorQueue: Eine parameterlose aktive Warteschlange -Verwaltung zur Verbesserung der TCP -Verkehrsleistung" (PDF).
- ^ "Heavy-Hitter-Filter Qdisc". kernel.org.
- ^ "HTB Linux -Kernel -Netzwerk -Scheduler -Modul". kernel.org. Abgerufen 2013-09-07.
- ^ "QFQ Linux -Kernel -Netzwerk -Scheduler -Modul". kernel.org. Abgerufen 2013-09-07.
- ^ "Fair Queue Paket Scheduler für Linux Kernel 3.12".
- ^ "Netzwerk -Emulator Linux Kernel -Netzwerk -Scheduler -Modul". kernel.org. Abgerufen 2013-09-07.
- ^ "Proportional Integral Controller Enhanced (PIE)". kernel.org.
- ^ "SFQ Linux -Kernel -Netzwerk -Scheduler -Modul". kernel.org. Abgerufen 2013-09-07.
- ^ "TBF Linux -Kernel -Netzwerk -Scheduler -Modul". kernel.org. Abgerufen 2013-09-07.
- ^ "Der Linux -Kernel -Netzwerkplaner". kernel.org. 2012-12-26. Abgerufen 2013-09-07.
- ^ "Linux Advanced Routing und Verkehrskontrolle Howto, Abschnitt 9.2.1. Pfifo_fast". lartc.org. 2012-05-19. Abgerufen 2014-09-19.
- ^ "Systemd System und Service Manager: Nachrichtendatei". freedesktop.org. 2015-05-22. Abgerufen 2015-06-09.
- ^ "Linux -Kernel 4.1, Abschnitt 11. Networking". kernelnewbies.org. 2015-06-21.
- ^ "BPF- und XDP -Referenzhandbuch". Cilium Dokumentation Website.