Große Verzögerungspuffer in CoS konfigurieren
Sie können sehr große Verzögerungspuffer konfigurieren, indem Sie den buffer-size-temporal
Befehl in Kombination mit dem q-pic-large-buffer
Befehl verwenden. Die buffer-size temporal
Option in Kombination mit q-pic-large-buffer
kann besonders große Verzögerungspufferzuweisungen für eine oder mehrere Warteschlangen auf einer Schnittstelle erstellen.
Wenn die konfigurierte Puffergröße zu niedrig ist, wird die Puffergröße für die Weiterleitungsklasse standardmäßig auf 9192 festgelegt, und die folgende Protokollmeldung wird angezeigt: "fwdd_cos_set_delay_bandwidth:queue:16 delay buffer size (1414) too low, setting to default 9192."
Configuring Large Delay Buffers
Die folgende Konfiguration gilt für die folgenden Beispiele:
Example: Simple Configuration Using Four Queues
Diese Konfiguration weist jeder der vier Warteschlangen 12.500.000 Byte Puffer zu. Um zu vermeiden, dass die Grenzwerte der Verzögerungspufferberechnung überschritten werden, gibt es in diesem ersten Beispiel keine Konfiguration für die Schnittstellenformungsrate, die Scheduler-Übertragungsrate oder die prozentuale Konfiguration für die Scheduler-Puffergröße.
Geben Sie den maximalen Verzögerungspuffer von 4 Sekunden für jede der vier Warteschlangen an:
[edit]
set class-of-service schedulers be-Scheduler0 buffer-size temporal 4m
set class-of-service schedulers video-Scheduler1 buffer-size temporal 4m
set class-of-service schedulers voice-Scheduler2 buffer-size temporal 4m
set class-of-service schedulers nc-Scheduler3 buffer-size temporal 4m
Bei der Angabe
buffer-size temporal
für einige oder alle Warteschlangen werden implizite (Standard) oder explizite Prozentsätze für die Übertragungsrate als Prozentsätze für die Puffergröße der Zeitwerte für diese Warteschlangen verwendet. Da es keine explizit angegebenen Prozentsätze für die Übertragungsrate gibt, teilen Sie 100 Prozent durch die Anzahl der konfigurierten Warteschlangen (Warteschlangen mit in der Scheduler-Zuordnung konfigurierten Schedulern), um die impliziten (Standard-) Prozentsätze der Übertragungsrate pro Warteschlange zu erhalten. Jede Warteschlange erhält eine implizite (Standard-) Übertragungsrate von 100% / 4 = 25%.In diesem Beispiel wird die maximale Verzögerung von 4 Sekunden für jede Warteschlange angegeben, ohne Shaping-Rate auf der Schnittstelle und implizite (Standard) Übertragungsraten pro Warteschlange von 25 Prozent, der Gesamtpuffer für alle zeitlichen 4-Millionen-Warteschlangen auf einer Schnittstelle = 4 Sekunden * 100.000.000 maximale Schnittstellenbps / 8 Bits/Byte = 4 Sekunden * 12.500.000 Byte = 50.000.000 Byte. Jede Warteschlange, die zeitliche 4 m angibt, erhält 25 % * 50.000.000 = 12.500.000 Byte.
Fügen Sie der Schnittstelle eine Shaping-Rate von 4 Mbit/s hinzu:
[edit]
set class-of-service interfaces ge-0/0/3 unit 201 shaping-rate 4m
Der Gesamtpuffer für alle zeitlichen 4m-Warteschlangen auf einer Schnittstelle = 4 Sek. * 4.000.000 bps Shaping-Rate / 8 Bit/Byte = 4 Sek. * 500.000 Byte = 2.000.000 Byte. Daher erhält jede Warteschlange, die temporal 4m angibt, 25 % * 2.000.000 = 500.000 Byte.
Wenn Sie bei Verwendung buffer-size temporal
in Schnittstellenwarteschlangen auch den transmit-rate percent
Befehl oder den Befehl oder beide buffer-size percent
Befehle in einer der Schnittstellenwarteschlangen verwenden, werden die Berechnungen der Puffergröße komplexer, und die Grenzen der verfügbaren Warteschlangentiefe werden möglicherweise erreicht. Wenn die Konfiguration versucht, den verfügbaren Arbeitsspeicher zu überschreiten, werden zur Zeit des Commits zwei Systemprotokollmeldungen in der /var/log/messages
Datei angezeigt, die Class-of-Service-Konfiguration der Schnittstelle wird ignoriert und die Class-of-Service-Konfiguration der Schnittstelle wird auf die Standardeinstellungen für zwei Warteschlangen zurückgesetzt:
Mar 11 11:02:10.239 elma-n4 elma-n4 COSMAN_FWDD: queue mem underflow for ge-0/0/3 Mar 11 11:02:10.240 elma-n4 elma-n4 cosman_compute_install_sched_params: Failed to compute scheduler params for ge-0/0/3.Hence retaining defaults
Wenn Sie zusammen mit transmit-rate percent
oder buffer-size percent
oder beiden konfigurierenbuffer-size temporal
, müssen Sie das Systemprotokoll überwachen, um festzustellen, ob die verfügbare Warteschlangentiefe erreicht wurde.
Example: Using buffer-size temporal with Explicit transmit-rate percent Commands
So fügen Sie allen vier Warteschlangen explizite Übertragungsraten hinzu:
[edit]set class-of-service schedulers be-Scheduler0 transmit-rate percent 10
set class-of-service schedulers video-Scheduler1 transmit-rate percent 25
set class-of-service schedulers voice-Scheduler2 transmit-rate percent 25
set class-of-service schedulers nc-Scheduler3 transmit-rate percent 40
Wenn eine Schnittstelle beispielsweise auf 4 Mbit/s ausgelegt ist, bedeutet der Prozentsatz der Übertragungsrate von 10 für eine Warteschlange, dass der Bandbreitenanteil für die jeweilige Warteschlange 0,4 Mbit/s beträgt. Den Warteschlangen werden Teile der 2.000.000 Byte Gesamtpuffer zugewiesen, die für temporäre Warteschlangen auf dieser Schnittstelle verfügbar sind, proportional zu ihren Übertragungsraten. Die vier Warteschlangen erhalten 200.000, 500.000, 500.000 bzw. 800.000 Byte Verzögerungspuffer.
Um eine Überschreitung der Grenzwerte für die Warteschlangentiefe und das Auslösen von Systemprotokollmeldungen und Standardkonfigurationsverhalten zu vermeiden, muss bei der Konfiguration von Warteschlangen mit buffer-size temporal
und transmit rate percent
und anderen (nicht-temporalen) Warteschlangen mit buffer-size percent
die folgende Konfigurationsregel beachtet werden: Wenn eine oder mehrere Warteschlangen auf einer Schnittstelle mit buffer-size temporal
konfiguriert sind, darf die Summe der explizit konfigurierten Prozentsätze der temporalen Warteschlangen für die Übertragungsrate zuzüglich anderer explizit konfigurierter nicht-temporaler Warteschlangen für die Puffergröße 100 nicht überschreiten Prozent.
Wenn die Summe der prozentualen Übertragungsraten der temporalen Warteschlangen und die Prozentsätze der Puffergröße der nicht-temporalen Warteschlangen 100 Prozent überschreitet, werden die queue mem underflow
Systemprotokollmeldungen und Failed to compute scheduler params
im Nachrichtenprotokoll angezeigt, die explizit konfigurierte CLI-CoS-Konfiguration für die Schnittstelle wird ignoriert, und die Schnittstelle wird auf eine Standard-CoS-Konfiguration mit zwei Warteschlangen zurückgesetzt.
Wenn buffer-size temporal
für eine Warteschlange angegeben wird, wenn transmit-rate percent
auch für dieselbe Warteschlange konfiguriert ist, basiert die konfigurierte Warteschlangentiefe auf der Bruchteilsbandbreite für die Warteschlange, die durch die angegebene transmit-rate percent
.
Zusätzlich zu den zeitlichen Verzögerungszeiten, die für eine oder mehrere Warteschlangen mit Puffergröße temporal angegeben werden, gibt es eine weitere Verzögerungszeit, die automatisch für die gesamte Schnittstelle berechnet wird. Diese Schnittstellenverzögerungszeit wird proportional zu ihren impliziten (Standard) oder expliziten Übertragungsratenprozentsätzen auf alle nicht-temporalen Warteschlangen verteilt. Wenn q-pic-large-buffer
diese Option nicht aktiviert ist, beträgt die Verzögerungszeit der Schnittstelle standardmäßig 100 ms. Wie in Tabelle 1 dargestellt, wird die q-pic-large-buffer
Schnittstellenverzögerungszeit bei Aktivierung entsprechend der konfigurierten Shaping-Rate für die Schnittstelle berechnet. Da die im obigen Beispiel konfigurierte Shaping-Rate 4 Mbit/s (> 2.048.000 bps) betrug, beträgt die Schnittstellenverzögerungszeit für die Konfiguration 100 ms.
Konfigurierte Shaping-Rate (bps) |
Schnittstellenverzögerungszeit (ms) für nicht-temporale Warteschlangen mit aktiviertem q-pic-large-buffer |
Verwendete Standard-Verzögerungszeit (ms) ohne q-pic-large-buffer |
---|---|---|
64,000-255,999 |
4000 |
100 |
256,000 - 511,999 |
2000 |
100 |
512,000 - 102,3999 |
1000 |
100 |
1,024,000 - 2,047,999 |
500 |
100 |
>= 2.048.000 |
100 |
100 |
In diesem Beispiel werden die Grenzwerte für den Verzögerungspuffer sowohl für temporale als auch für nicht-temporale Warteschlangen ordnungsgemäß berechnet:
Ersatz
buffer-size percent
fürbuffer-size temporal
die Warteschlangen 0 und 1:[edit]
delete class-of-service schedulers be-Scheduler0 buffer-size temporal 4m
delete class-of-service schedulers video-Scheduler1 buffer-size temporal 4m
set class-of-service schedulers be-Scheduler0 buffer-size percent 10
set class-of-service schedulers video-Scheduler1 buffer-size percent 25
Dadurch wird die Anforderung für eine fest spezifizierte Pufferung von 4 Sekunden gelöscht und durch einen proportionalen Grenzwert von 10 Prozent (oder 25 Prozent) der gesamten Schnittstellenverzögerungszeit für die nicht-temporalen Warteschlangen ersetzt. In beiden Fällen wird die Warteschlangentiefe basierend auf dem Anteil der Schnittstellenbandbreite für die jeweiligen Warteschlangen berechnet. Total Interface Non-Temporal Queue Memory = Shaping-Rate * Schnittstellenverzögerungszeit (Tabelle 1) = 4 Mbit/s * 0,1 Sekunden = 500.000 Byte pro Sekunde * 0,1 Sekunden = 50.000 Byte, daher erhalten die Warteschlangen 0 und 1 10 % * 50.000 = 5000 Byte bzw. 25 % * 50.000 = 12.500 Byte Verzögerungspuffer.
Konfiguration
buffer-size temporal
für Warteschlangen 2 und 3:[edit]
set class-of-service schedulers voice-Scheduler2 buffer-size temporal 4m
set class-of-service schedulers voice-Scheduler2 transmit-rate percent 25
set class-of-service schedulers nc-Scheduler3 buffer-size temporal 4m
set class-of-service schedulers nc-Scheduler3 transmit-rate percent 40
Die Warteschlangen 2 und 3 erhalten immer noch 500.000 bzw. 800.000 Byte Verzögerungspuffer, wie zuvor berechnet. Diese Konfiguration folgt der Regel, dass die Summe der prozentualen Übertragungsraten der temporalen Warteschlangen (25 % + 40 % = 65 %) und der Puffergröße der nicht-temporalen Warteschlangen (10 % + 25 % = 35 %) 100 % (65 % + 35 % <= 100 %) nicht überschreitet.
Im folgenden Beispiel wird die Verzögerungspuffergrenze überschritten, wodurch die Systemprotokollmeldungen und das standardmäßige Class-of-Service-Verhalten mit zwei Warteschlangen ausgelöst werden.
Erhöhen Sie den Prozentsatz der Puffergröße von 25 Prozent auf 26 Prozent für nicht-temporale Warteschlange 1:
[edit]
set class-of-service schedulers video-Scheduler1 buffer-size percent 26
Dies verstößt gegen die Konfigurationsregel, dass die Summe der Prozentsätze für die Puffergröße der nicht-temporalen Warteschlangen (10 % + 26 % = 36 %) und der prozentualen Übertragungsrate der temporalen Warteschlangen (25 % + 40 % = 65 %) jetzt 100 % (36 % + 65 % = 101 %) überschreitet. Daher werden die folgenden beiden Systemprotokollmeldungen in der /var/log/messages
Datei angezeigt:
Mar 23 18:08:23 elma-n4 elma-n4 COSMAN_FWDD: %PFE-3: queue mem underflow for ge-0/0/3 q_num(3) Mar 23 18:08:23 elma-n4 elma-n4 cosman_compute_install_sched_params: %PFE-3: Failed to compute scheduler params for ge-0/0/3.Hence retaining defaults
Wenn die Grenzwerte für den Verzögerungspuffer überschritten werden, werden die CLI-konfigurierten Class-of-Service-Einstellungen nicht verwendet und der Schnittstelle wird die Standard-Class-of-Service-Konfiguration (die Standard-Scheduler-Zuordnung) zugewiesen. Dabei werden zwei Warteschlangen verwendet: Die Best-Effort-Warteschlange der Weiterleitungsklasse (Warteschlange 0) hat eine Übertragungsrate von 95 und die Puffergröße in Prozent 95, und die Weiterleitungsklasse Network-Control (Warteschlange 3) hat die Übertragungsrate in Prozent 5 und die Puffergröße in Prozent 5.
queue 0: 1,187,500 Bytes queue 1: 9,192 Bytes queue 2: 9,192 Bytes queue 3: 62,500 Bytes