Der Token-Bucket-Algorithmus ist ein Mechanismus zur Verkehrsformung und Ratenbegrenzung, der in Computernetzwerken zur Steuerung des Datenflusses verwendet wird.

Was ist der Token-Bucket-Algorithmus?
Der Token-Bucket-Algorithmus ist eine Technik zur Verwaltung des Netzwerkverkehrs, die die Menge und Geschwindigkeit von übertragene Daten über ein Netzwerk. Es funktioniert, indem Token mit einer festen Rate generiert und in einem logischen Container, einem sogenannten Bucket, abgelegt werden. Jedes Token stellt die Berechtigung zum Senden einer bestimmten Datenmenge dar, typischerweise ein Paket oder eine festgelegte Anzahl von Bytes.
Wenn Daten übertragen werden müssen, werden Token entsprechend der Größe der gesendeten Daten aus dem Bucket entfernt. Sind genügend Token verfügbar, werden die Daten sofort übertragen. Andernfalls wird die Übertragung verzögert, bis genügend Token vorhanden sind.
Der Bucket verfügt über eine maximale Kapazität, die kurze Verkehrsspitzen ermöglicht, wenn der Bucket überzählige Token enthält, aber langfristige Ratenbegrenzungen erzwingt, um anhaltende Überlastungen zu vermeiden. Dieser Ansatz macht den Token-Bucket-Algorithmus gut geeignet für Szenarien, die sowohl kontrollierte Bandbreite Nutzung und flexFähigkeit zur Handhabung variabler Verkehrsmuster.
Wie funktioniert der Token-Bucket-Algorithmus?
Der Token-Bucket-Algorithmus generiert Token mit einer konstanten, vordefinierten Rate und platziert sie in einem logischen Bucket mit einer festen maximalen Kapazität. Jedes Token repräsentiert typischerweise die Berechtigung zum Senden einer bestimmten Datenmenge, z. B. eines Bytes oder eines Pakets. Wenn ein Gerät oder Anwendung Daten übertragen möchte, muss es Token aus dem Bucket verbrauchen, die der Größe der Daten entsprechen.
Sind genügend Token verfügbar, werden die Daten sofort gesendet. Dies ermöglicht eine reibungslose Übertragung und unterstützt kurze Datenverkehrsspitzen. Sind nicht genügend Token vorhanden, stellt das System die Daten entweder in eine Warteschlange oder wartet, bis weitere Token vorhanden sind. Dadurch wird die konfigurierte Ratenbegrenzung eingehalten.
Der Bucket kann ungenutzte Token bis zu seiner maximalen Kapazität speichern, wodurch die Algorithmus um plötzliche Verkehrsspitzen zu bewältigen, ohne die durchschnittliche Übertragungsrate zu beeinträchtigen. Dieser Mechanismus gewährleistet einen kontrollierten, effizienten Datenfluss und bietet gleichzeitig flexMöglichkeit für vorübergehende Verkehrsspitzen.
Parameter des Token Bucket-Algorithmus
Hier ist eine Tabelle, die die wichtigsten Parameter des Token-Bucket-Algorithmus erklärt:
| Parameter | Beschreibung |
| Token-Generierungsrate (r) | Die Rate, mit der Token zum Bucket hinzugefügt werden, wird normalerweise in Token pro Sekunde angegeben. Sie definiert die durchschnittlich zulässige Datenübertragungsrate. |
| Schaufelinhalt (B) | Die maximale Anzahl an Token, die der Bucket enthalten kann. Dadurch wird bestimmt, wie groß ein Datenvolumen sein kann, das auf einmal übertragen werden kann. |
| Tokengröße | Die durch jedes Token dargestellte Datenmenge, oft ein Byte oder ein Paket. Definiert die Granularität der Steuerung. |
| Aktuelle Tokenanzahl | Die Anzahl der aktuell im Bucket verfügbaren Token. Sie erhöht sich, wenn Token generiert werden, und verringert sich, wenn Daten gesendet werden. |
| Größe des Datenverkehrs-Bursts | Die maximale Datenmenge, die in einem Burst gesendet werden kann, ist durch die Bucket-Kapazität begrenzt. |
| Konformität | Gibt an, ob der Datenverkehr innerhalb der zulässigen Grenzen liegt (basierend auf der Token-Verfügbarkeit). Nicht konformer Datenverkehr wird je nach Implementierung verzögert oder verworfen. |
Wofür wird der Token-Bucket-Algorithmus verwendet?
Der Token-Bucket-Algorithmus wird zur Verkehrsformung, Ratenbegrenzung und Bandbreitenverwaltung in Computernetzwerken verwendet. Er stellt sicher, dass die Datenübertragung innerhalb festgelegter Grenzen bleibt, lässt aber gleichzeitig kurze Verkehrsspitzen zu, wenn überschüssige Kapazität verfügbar ist.
Zu den üblichen Anwendungsfällen gehört die Steuerung des ausgehenden Datenverkehrs von servers, Verwaltung der Bandbreitenzuweisung auf Netzwerkschnittstellen, Durchsetzung Service-Level-Agreements (SLAs)und verhindert Netzwerküberlastungen. Der Algorithmus ist weit verbreitet in Router, Switches, Firewalls und Dienstqualität (QoS) Mechanismen zur Bereitstellung einer vorhersehbaren Netzwerkleistung und zur Wahrung der Fairness zwischen Benutzern oder Anwendungen.
Wie implementiert man den Token-Bucket-Algorithmus?

Um den Token-Bucket-Algorithmus zu implementieren, folgen Sie diesen allgemeinen Schritten, die sowohl in der Software als auch in Hardware-basierte Systeme:
- Initialisieren des Buckets. Definieren Sie die maximale Bucket-Kapazität (B), die die Anzahl der Token darstellt, die der Bucket aufnehmen kann. Legen Sie die Token-Generierungsrate (r) fest, die bestimmt, wie viele Token pro Zeiteinheit hinzugefügt werden.
- Generieren Sie im Laufe der Zeit Token. Fügen Sie dem Bucket kontinuierlich Token mit der definierten Rate hinzu. Wenn der Bucket seine maximale Kapazität erreicht, werden zusätzliche Token verworfen, um ein Überschreiten der Burst-Größenbeschränkung zu verhindern.
- Bearbeiten von Datenübertragungsanforderungen. Überprüfen Sie jedes Mal, wenn ein Paket oder eine Dateneinheit gesendet werden muss, den Bucket auf verfügbare Token. Die Anzahl der benötigten Token hängt von der Datengröße ab (z. B. ein Token pro Byte oder pro Paket).
- Verkehr zulassen oder verzögern. Wenn genügend Token verfügbar sind, entfernen Sie die benötigten Token aus dem Bucket und ermöglichen Sie die sofortige Übertragung. Wenn nicht genügend Token vorhanden sind, verzögern Sie die Übertragung, bis sich weitere Token angesammelt haben, oder verwerfen Sie den Datenverkehr, je nach Implementierungsrichtlinie.
- Wiederholen Sie den Vorgang. Füllen Sie Token kontinuierlich auf und verwalten Sie Verkehrsanforderungen. Stellen Sie dabei sicher, dass die durchschnittliche Bandbreitennutzung innerhalb der konfigurierten Grenzen bleibt, während temporäre Spitzen unterstützt werden.
Was sind die Vorteile des Token-Bucket-Algorithmus?
Der Token-Bucket-Algorithmus bietet mehrere Vorteile für das Netzwerkverkehrsmanagement:
- Ermöglicht Verkehrsspitzen. Im Gegensatz zu strengen Algorithmen zur Ratenbegrenzung erlaubt es kurze Datenübertragungsschübe, solange sich Token angesammelt haben, und bietet flexEignung für variable Verkehrsmuster.
- Sanfte Durchschnittsratenkontrolle. Es erzwingt eine langfristige durchschnittliche Übertragungsrate und stellt sicher, dass die Gesamtbandbreitennutzung innerhalb definierter Grenzen bleibt, ohne dass die Leistung in Zeiten mit geringem Datenverkehr beeinträchtigt wird.
- Effiziente Bandbreitennutzung. Durch das Zulassen vorübergehender Bursts und die Kontrolle der Durchschnittsrate wird die Nutzung der Netzwerkressourcen maximiert, ohne eine ständige Überlastung zu verursachen.
- Einfachheit und geringer Aufwand. Der Algorithmus lässt sich mit minimalem Rechenaufwand relativ einfach implementieren und ist daher für Hardware- und Softwaresysteme geeignet.
- Verhindert Staus. Durch die Verzögerung oder Sperrung von überschüssigem Datenverkehr, wenn keine Token verfügbar sind, werden Netzwerküberlastungen vermieden und die Servicequalität aufrechterhalten.
- Unterstützt die Servicequalität. Es lässt sich gut in QoS-Frameworks integrieren und ermöglicht eine faire Bandbreitenverteilung und Priorisierung des Datenverkehrs.
Was sind die Nachteile des Token-Bucket-Algorithmus?
Der Token-Bucket-Algorithmus hat trotz seiner flexFähigkeit:
- Garantiert keine konstante Ausgaberate. Während es die durchschnittliche Übertragungsrate steuert, lässt es Bursts zu, die zu kurzfristigen Verkehrsspitzen führen können, die nachgeschaltete Geräte überlasten können, wenn sie nicht richtig verwaltet werden.
- Erfordert präzises Zeitmanagement. Die präzise Token-Generierung ist für einen ordnungsgemäßen Betrieb entscheidend. Inkonsistente Zeitabläufe aufgrund von Systemverzögerungen oder Taktabweichungen können die Ratendurchsetzung beeinträchtigen.
- Eingeschränkte Kontrolle der Burst-Größe. Die Größe der zulässigen Bursts hängt von der Bucket-Kapazität ab, aber die Feinabstimmung dieses Parameters kann eine Herausforderung sein. Ein zu kleiner Bucket reduziert Bursts flexMögliche Ursache: Zu große Werte können zu übermäßigen Verkehrsspitzen führen.
- Staatlicher Wartungsaufwand. Der Algorithmus erfordert eine kontinuierliche Verfolgung der Token-Anzahl und der Zeitintervalle, was die Komplexität der Zustandsverwaltung erhöht, insbesondere in Hochgeschwindigkeits- oder Großnetzwerken.
- Allein für die Verkehrspolizei ist es unwirksam. Während es den Verkehr formt und Bursts zulässt, muss es möglicherweise mit anderen Mechanismen (z. B. Leaky Bucket oder strikter Überwachung) kombiniert werden, um die strikte Einhaltung der Bandbreitenbeschränkungen in sensiblen Umgebungen sicherzustellen.
Token Bucket vs. Leaky Bucket Algorithmus
Hier ist eine übersichtliche Vergleichstabelle des Token-Bucket- und des Leaky-Bucket-Algorithmus:
| Aspekt | Token-Bucket-Algorithmus | Leaky-Bucket-Algorithmus |
| Hauptzweck | Verkehrsformung mit Berücksichtigung von Bursts. | Traffic Shaping mit strikter, konstanter Ausgaberate. |
| Burst-Handling | Ermöglicht kurze Stöße, wenn genügend Token verfügbar sind. | Lässt keine Bursts zu; gibt mit einer festen, konstanten Rate aus. |
| Mechanismus | Token werden zu einem festen Satz angesammelt; zum Senden sind Token erforderlich. | Pakete werden in die Warteschlange gestellt und verlassen den Bucket mit einer konstanten Rate. |
| Ratenkontrolle | Erzwingt eine Durchschnittsrate und lässt gleichzeitig vorübergehende Verkehrsspitzen zu. | Erzwingt strikt sowohl die durchschnittliche als auch die Spitzenausgaberate. |
| Traffic flexFähigkeit | Weitere flexfähig; passt sich variablen Verkehrsmustern an. | Weniger flexible; glättet den Verkehr, beschränkt aber Bursts. |
| Überlaufbehandlung | Überschüssige Token werden verworfen, wenn der Eimer voll ist. | Überschüssige Pakete werden gelöscht oder in die Warteschlange gestellt, wenn der Bucket überläuft. |
| Am besten geeignet für | Anwendungen, die sowohl Ratenkontrolle als auch Burst-Toleranz erfordern. | Umgebungen, die einen reibungslosen, vorhersehbaren und stetigen Verkehrsfluss erfordern. |
| Komplexität der Implementierung | Mittelschwer, erfordert Token-Verfolgung und Zeitmessung. | Einfach, basierend auf Warteschlangenverhalten und konstanter Ausgabeplanung. |