Berechnen wir, womit wir es hier zu tun haben. CAR ist im Grunde die ältere Version der IOS-Überwachung, daher gelten alle diese Konzepte für beide.
Committed Information Rate (CIR) = 5,000,000 (5Mbps)
Burst Commit Bucket (Bc) = 937,500
Burst Excess Bucket (Be) = 1,875,000
Time Interval (Tc) = Bc / CIR = 0.1875 s = 187.5 ms
Die Rate, auf die wir Flows beschränken möchten, beträgt 5 Mbit / s. Der Commit Bucket ist 937.500 Bytes. Der Burst Bucket ist 1.875.000 Bytes. Und die Eimer werden alle 187,5 ms nachgefüllt.
Wie Sie bereits erwähnt haben, verwendet IOS einen Bucket-Mechanismus, um den Datenverkehr einzuschränken. Der Datenverkehr wird über einen beliebigen Zeitraum nicht auf X% der Schnittstellenbandbreite geglättet! Stattdessen ermöglicht es den vollständigen Zugriff auf die Bandbreite der Schnittstelle, solange Sie die Token haben, um dafür zu bezahlen.
Da dies eine Überwachung ist, sind RED / WRED nicht im Spiel. ROT tritt nur auf, wenn eine Warteschlange verwaltet werden muss. Bei der Überwachung gibt es keine Pufferung / Warteschlange, nur beim Formen.
Lassen Sie uns zuerst den Commit Bucket (Bc) behandeln. Angenommen, es gibt derzeit keinen überschüssigen Eimer (Be).
* Nur Eimer festschreiben (zweifarbiger Polizist) *
Dies ist ein sehr strenger Polizist, mit dem Sie nur innerhalb des CIR genau senden können. kein Platzen oben. Es gibt nur einen Eimer, Bc. Es gibt zwei "Farben" für den Verkehr, die übereinstimmen und überschreiten .
Zeit = 0 ms - Der Bucket startet voll mit Token im Wert von 937.500 Byte. Angenommen, Sie senden 7.500 Byte über die Schnittstelle. Jetzt dekrementiert IOS den Bucket um 7.500 Bytes, und der Bucket enthält jetzt Token im Wert von 930.000 Bytes. Der gesendete Datenverkehr wird als "konform" betrachtet und mit der "Konformitätsaktion" versehen.
Zeit = 187,5 ms - Wir treffen jetzt den Tc und füllen den Bc-Eimer wieder auf. Token im Wert von 937.500 Bytes werden hinzugefügt. Alle zusätzlichen Token werden ausgegeben und gehen verloren.
Zeit = 190 ms - Der Commit-Bucket enthält 937.500 Token. Wir erhalten 2.000.000 Byte Verkehr. Die ersten 937.500 Bytes werden einwandfrei übertragen, da der Bucket Token dafür hat. Der verbleibende Verkehr wird als "Überschreitung" betrachtet und gemäß der "Überschreitungsaktion" behandelt. Denken Sie daran, es gibt keine Pufferung bei der Überwachung (das wird Shaping genannt) - Sie senden, bemerken und senden oder lassen fallen.
Zeit = 375 ms - Wir drücken erneut Tc und der Bc-Eimer wird mit 937.500 Token aufgefüllt.
* Commit Bucket mit überschüssigem Bucket (dreifarbiger Policer) *
Sie können optional einen überschüssigen Eimer (Be) hinzufügen. Dadurch kann der Verkehr den Bc-Bucket vorübergehend überschreiten. Die Gesamt-CIR sollte gleich bleiben. Dies ist ein dreifarbiger Polizist: Konformität, Überschreitung und Verletzung .
Zeit = 0 ms - Beide Buckets (Bc und Be) beginnen voll. Bc hat 937.500 Token, Be hat 1.875.000 Token.
Zeit = 50 ms - 2.000.000 Byte Verkehr kommen an. Der Router dekrementiert zuerst die Bc-Bucket-Token. Es reduziert den Bc-Bucket auf Null. Die von Bc abgedeckten 937.500 Byte Verkehr gelten als "konform" und werden mit der "Konformitätsaktion" versehen.
Damit verbleiben 1.062.500 Byte Verkehr, für den noch keine Token vorhanden sind. Jetzt taucht der Router in den Be-Bucket ein und subtrahiert 1.062.500 Token, um den Rest des Datenverkehrs abzudecken. Diese Bytes werden als "Überschreitung" betrachtet und mit der "Überschreitungsaktion" versehen. In Ihrem Beispiel würde der Datenverkehr gelöscht, aber Sie könnten ihn möglicherweise bemerken oder nur übertragen.
Wenn Sie zu Hause punkten, hat Bc jetzt null Token, Be 812.500 Token.
Zeit = 75 ms - Jetzt empfängt der Router weitere 1.200.000 Byte Datenverkehr. Der Bc-Eimer ist leer, also keine Hilfe. Der Be-Bucket kann helfen, deckt also die ersten 812.500 Byte des Datenverkehrs mit seinen Token ab und ist jetzt leer. Dieser Verkehr wird als "Überschreitung" betrachtet und mit der "Überschreitungsaktion" versehen.
Jetzt sind die Eimer trocken, aber es sind noch 387.500 Bytes übrig. Dieser Verkehr gilt als "verletzend" und wird immer mit CAR gelöscht (Sie können andere Dinge damit mit MQC und dem Polizeikommando mit "Verletzung" tun).
Zeit = 187,5 ms - Jetzt erreichen wir das erste Tc-Intervall, die Zeit, um unsere Eimer zu füllen. Ein wichtiger Punkt ist, dass nurToken im Wert von Bc nachgefüllt werden! Der Bc-Eimer wird zuerst auf 937.500 gefüllt. Der Be-Eimer bleibt leer.
Zeit = 375 ms - Es war ruhig und wir schaffen es bis zum nächsten Tc-Intervall. Token im Wert von Bc werden dem Bc-Eimer hinzugefügt. Da der Bc-Eimer bereits voll ist, gehen die überschüssigen Token nicht verloren - sie werden stattdessen auf den Be-Eimer "übertragen". Jetzt ist der Bc-Eimer mit 937.500 Token voll und der Be-Eimer ist teilweise mit 937.500 Token gefüllt.
Zeit = 562,5 ms - Ruhig noch, und wir sind beim nächsten Tc. Token im Wert von Bc werden dem Bc-Eimer hinzugefügt, der bereits voll ist. Alles fließt in den Be-Eimer (der bereits 937.500 Token enthält). Das Be füllt bis zu 1.875.000 Token.
* Schlussbemerkungen *
Ihre Konfiguration verwendet nicht den Be-Bucket. Sie begrenzen / überwachen die Rate nur mit dem Bc-Bucket, was unbeabsichtigte Nebenwirkungen haben kann, wenn der Policer / Shaper, der Daten an Sie sendet, nicht identisch konfiguriert und nicht synchron Tc ist.
CAR / Rate-Limit ist sehr alt und veraltet. Ziehen Sie in Betracht, auf MQC und moderne QoS umzusteigen, um dies zu implementieren, da Sie dadurch mehr Informationen und Optionen erhalten.
Ich ignoriere die Serialisierungsverzögerung (die Zeit, die zum Übertragen von Daten auf der Leitung benötigt wird) oben völlig und bin mir ziemlich sicher, dass die Mathematik in einem realen Szenario nicht funktioniert. Die Konzepte sind jedoch unabhängig von den genauen verwendeten Zahlen solide.
* MQC Beispiel *
policy-map PM-FA0/0-IN
class class-default
police cir 5000000 bc 937500 be 1875000
!
interface Fa0/0
service-policy input PM-FA0/0-IN
!
* Quellen *