Weighted Fair Queuing (WFQ) ist, wie der Name schon sagt, ein Warteschlangenalgorithmus. Warteschlangen werden verwendet, wenn eine Schnittstelle überlastet ist. Dies wird normalerweise dadurch erkannt, dass der Sendering (TX-Ring) voll ist. Dies bedeutet, dass die Schnittstelle mit dem Senden von Paketen beschäftigt ist. Warteschlangen finden nur statt, wenn die Schnittstelle überlastet ist. In einigen Fällen kann die Größe des TX-Rings manipuliert werden. Ein kleiner TX-Ring gibt der Software-Warteschlange mehr Leistung, welche Pakete zuerst gesendet werden, aber es ist nicht sehr effektiv. Ein zu großer TX-Ring würde die Software-Warteschlange fast unbrauchbar machen und zu einer höheren Latenz und einem höheren Jitter für wichtige Pakete führen.
Der Standard-Warteschlangenalgorithmus ist normalerweise FIFO (First In First Out). Dies bedeutet, dass Pakete in genau der Reihenfolge geliefert werden, in der sie am Eingang der Schnittstelle ankommen. Dies ist normalerweise nicht wünschenswert, da einige Pakete priorisiert werden sollten.
Es ist durchaus üblich, dass ein Kunde einen Dienst von einem Internetdienstanbieter (ISP) zum Subrate kauft. Das heißt, der Kunde kauft einen 50-Mbit / s-Dienst, aber die physische Schnittstelle läuft mit 100 Mbit / s. In diesem Fall gibt es keine Überlastung, aber der ISP begrenzt das Verkehrsaufkommen des Kunden. Um in diesen Fällen eine künstliche Überlastung einzuführen, kann ein Former verwendet werden.
Jetzt, da es eine Überlastung gibt, kann ein Warteschlangenalgorithmus angewendet werden. Beachten Sie, dass Warteschlangenalgorithmen keine zusätzliche Bandbreite bieten. Sie lassen uns lediglich entscheiden, welche Pakete für uns wichtiger sind. WFQ ist ein Algorithmus, der mehrere Parameter verwendet und darauf basierend eine Entscheidung trifft. Der Algorithmus ist recht komplex und verwendet Gewicht (IP-Priorität), Paketgröße und Planungszeit als Parameter. Es gibt hier eine sehr detaillierte Erklärung von INE . WFQ ist eine gute Wahl, wenn Sie nicht zu viel mit Warteschlangen herumspielen möchten, da es kleinen Datenströmen wie SSH, Telnet und Voice eine ausreichende Bandbreite bietet. Dies bedeutet, dass eine Dateiübertragung nicht die gesamte Bandbreite stiehlt.
Die gewichtete zufällige Früherkennung (WRED) ist ein Mechanismus zur Vermeidung von Überlastungen. WRED misst die Größe der Warteschlangen in Abhängigkeit vom Vorrangwert und beginnt mit dem Verwerfen von Paketen, wenn die Warteschlange zwischen dem minimalen und dem maximalen Schwellenwert liegt. Die Konfiguration entscheidet, dass 1 von N N Paketen verworfen wird. WRED hilft, TCP-Synchronisation und TCP-Hunger zu verhindern. Wenn TCP Pakete verliert, wird es langsam gestartet, und wenn alle TCP-Sitzungen gleichzeitig Pakete verlieren, können sie synchronisiert werden, was ein Diagramm wie das folgende ergibt:
Wie zu sehen ist, wenn WRED nicht konfiguriert ist, geht der Graph auf Hochtouren, dann stumm, dann auf Hochtouren und so weiter. WRED bietet eine durchschnittlichere Übertragungsrate. Es ist wichtig zu beachten, dass UDP nicht vom Verwerfen von Paketen betroffen ist, da es keinen Bestätigungsmechanismus und kein Schiebefenster wie TCP implementiert hat. Daher sollte WRED nicht auf UDP-basierten Klassen implementiert werden, wie z. B. Klassen, die SNMP, DNS oder andere UDP-basierte Protokolle verarbeiten.
Sowohl WFQ als auch WRED können und sollten zusammen bereitgestellt werden.