Che cos'è l'algoritmo Token Bucket?

26 Giugno 2025

L'algoritmo del token bucket è un meccanismo di modellamento del traffico e di limitazione della velocità utilizzato nelle reti di computer per controllare il flusso di dati.

cos'è l'algoritmo del token bucket

Che cos'è l'algoritmo Token Bucket?

L'algoritmo del token bucket è una tecnica di gestione del traffico di rete che controlla la quantità e la velocità di dati trasmessi su una rete. Funziona generando token a una velocità fissa e inserendoli in un contenitore logico chiamato bucket. Ogni token rappresenta l'autorizzazione a inviare una certa quantità di dati, in genere un pacchetto o un numero stabilito di bytes.

Quando è necessario trasmettere dati, i token vengono rimossi dal bucket a una velocità corrispondente alla dimensione dei dati inviati. Se sono disponibili token sufficienti, i dati vengono trasmessi immediatamente; in caso contrario, la trasmissione viene ritardata fino all'accumulo di token sufficienti.

Il bucket ha una capacità massima, che consente brevi picchi di traffico quando il bucket contiene token in eccesso, ma impone limiti di velocità a lungo termine per prevenire congestioni prolungate. Questo approccio rende l'algoritmo del bucket di token adatto a scenari che richiedono sia un controllo larghezza di banda utilizzo e flexcapacità di gestire modelli di traffico variabili.

Come funziona l'algoritmo Token Bucket?

L'algoritmo del token bucket funziona generando token a una velocità costante e predefinita e inserendoli in un bucket logico con una capacità massima fissa. Ogni token in genere rappresenta l'autorizzazione a inviare una quantità specifica di dati, ad esempio un byte o un pacchetto. Quando un dispositivo o applicazione vuole trasmettere dati, deve consumare token dal bucket pari alla dimensione dei dati.

Se sono disponibili token sufficienti, i dati vengono inviati immediatamente, consentendo una trasmissione fluida e supportando brevi raffiche di traffico. Se non sono disponibili token sufficienti, il sistema mette i dati in coda o attende che se ne accumulino altri, applicando il limite di velocità configurato.

Il bucket può memorizzare i token non utilizzati fino alla sua capacità massima, consentendo algoritmo per gestire picchi improvvisi di traffico senza violare la velocità media di trasmissione. Questo meccanismo garantisce un flusso di dati controllato ed efficiente, fornendo al contempo flexpossibilità di interruzioni temporanee del traffico.

Parametri dell'algoritmo del token bucket

Ecco una tabella che spiega i parametri chiave dell'algoritmo del token bucket:

ParametroDescrizione
Tasso di generazione del token (r)La velocità con cui i token vengono aggiunti al bucket, in genere espressa in token al secondo. Definisce la velocità media di trasmissione dati consentita.
Capacità della benna (B)Il numero massimo di token che il bucket può contenere. Determina la dimensione di un burst di traffico che può essere trasmesso contemporaneamente.
Dimensione del tokenLa quantità di dati rappresentata da ciascun token, spesso un byte o un pacchetto. Definisce la granularità del controllo.
Conteggio attuale dei tokenIl numero di token attualmente disponibili nel bucket. Aumenta con la generazione dei token e diminuisce con l'invio dei dati.
Dimensione del trafficoLa quantità massima di dati che può essere inviata in un burst, limitata dalla capacità del bucket.
conformitàIndica se il traffico rientra nei limiti consentiti, in base alla disponibilità del token. Il traffico non conforme viene ritardato o scartato a seconda dell'implementazione.

A cosa serve l'algoritmo Token Bucket?

L'algoritmo token bucket viene utilizzato per il traffic shaping, la limitazione della velocità e la gestione della larghezza di banda nelle reti informatiche. Garantisce che la trasmissione dei dati rimanga entro i limiti specificati, consentendo al contempo brevi periodi di traffico quando è disponibile capacità in eccesso.

I casi d'uso comuni includono il controllo del traffico in uscita da servers, gestione dell'allocazione della larghezza di banda sulle interfacce di rete, applicazione accordi sul livello di servizio (SLA)e prevenendo la congestione della rete. L'algoritmo è ampiamente implementato in router, interruttori, firewalle qualità del servizio (QoS) meccanismi per fornire prestazioni di rete prevedibili e mantenere l'equità tra utenti o applicazioni.

Come implementare l'algoritmo del token bucket?

come implementare l'algoritmo del token bucket

Per implementare l'algoritmo del token bucket, seguire questi passaggi generali, applicabili sia al software che hardwaresistemi basati su:

  1. Inizializza il bucketDefinisci la capacità massima del bucket (B), che rappresenta il numero di token che il bucket può contenere. Imposta la velocità di generazione dei token (r), che determina quanti token vengono aggiunti per unità di tempo.
  2. Genera token nel tempoAggiungere continuamente token al bucket alla velocità definita. Se il bucket raggiunge la capacità massima, i token aggiuntivi vengono scartati per evitare di superare il limite di dimensione del burst.
  3. Gestire le richieste di trasmissione dei datiOgni volta che è necessario inviare un pacchetto o un'unità di dati, controlla il bucket per verificare la presenza di token disponibili. Il numero di token necessari dipende dalla dimensione dei dati (ad esempio, un token per byte o per pacchetto).
  4. Consentire o ritardare il trafficoSe sono disponibili token sufficienti, rimuovere i token necessari dal bucket e consentire la trasmissione immediata. Se i token non sono sufficienti, ritardare la trasmissione finché non se ne accumulano altri oppure eliminare il traffico, a seconda della policy di implementazione.
  5. Ripeti il ​​processoRifornire costantemente i token e gestire le richieste di traffico, assicurando che l'utilizzo medio della larghezza di banda rimanga entro i limiti configurati, supportando al contempo picchi temporanei.

Quali sono i vantaggi dell'algoritmo Token Bucket?

L'algoritmo del token bucket offre diversi vantaggi per la gestione del traffico di rete:

  • Consente interruzioni del traffico. A differenza degli algoritmi di limitazione della velocità rigorosi, consente brevi raffiche di trasmissione dati finché i token si sono accumulati, fornendo flexcapacità di adattarsi a modelli di traffico variabili.
  • Controllo fluido della velocità media. Applica una velocità di trasmissione media a lungo termine, assicurando che l'utilizzo complessivo della larghezza di banda resti entro limiti definiti senza sacrificare le prestazioni durante i periodi di basso traffico.
  • Utilizzo efficiente della larghezza di banda. Consentendo picchi temporanei e controllando la velocità media, massimizza l'utilizzo delle risorse di rete senza causare una congestione costante.
  • Semplicità e bassi costi generali. L'algoritmo è relativamente semplice da implementare con un sovraccarico computazionale minimo, il che lo rende adatto ai sistemi hardware e software.
  • Previene la congestione. Ritardando o eliminando il traffico in eccesso quando i token non sono disponibili, si contribuisce a evitare la congestione della rete e a mantenere la qualità del servizio.
  • Supporta la qualità del servizio. Si integra bene con i framework QoS, consentendo un'equa distribuzione della larghezza di banda e la definizione delle priorità del traffico.

Quali sono gli svantaggi dell'algoritmo Token Bucket?

L'algoritmo del token bucket presenta diversi svantaggi nonostante la sua flexbilità:

  • Non garantisce una velocità di uscita costante. Sebbene controlli la velocità media di trasmissione, consente dei burst, che possono causare picchi di traffico di breve durata, in grado di sopraffare i dispositivi a valle se non gestiti correttamente.
  • Richiede una gestione precisa del tempo. La generazione accurata dei token nel tempo è fondamentale per il corretto funzionamento. Tempistiche incoerenti dovute a ritardi di sistema o a variazioni del clock possono compromettere il rispetto delle tariffe.
  • Controllo limitato delle dimensioni dello scoppio. La dimensione dei burst consentiti dipende dalla capacità del bucket, ma la regolazione di questo parametro può essere complessa. Un bucket troppo piccolo riduce i burst. flexbilità; se troppo grande può causare eccessivi aumenti di traffico.
  • Spese generali di manutenzione dello Stato. L'algoritmo richiede il monitoraggio continuo dei conteggi dei token e degli intervalli di tempo, il che aggiunge complessità alla gestione dello stato, soprattutto nelle reti ad alta velocità o su larga scala.
  • Inefficace da solo per il controllo del traffico. Sebbene modelli il traffico e consenta picchi, potrebbe essere necessario combinarlo con altri meccanismi (ad esempio, leaky bucket o rigorosa sorveglianza) per garantire la rigorosa conformità ai limiti di larghezza di banda in ambienti sensibili.

Algoritmo Token Bucket vs. Leaky Bucket

Ecco una chiara tabella di confronto tra l'algoritmo token bucket e quello leaky bucket:

AspettoAlgoritmo del token bucketAlgoritmo del secchio permeabile
Scopo principaleModellazione del traffico tenendo conto delle interruzioni.Modellazione del traffico con velocità di uscita rigorosa e costante.
Gestione delle rafficheConsente brevi raffiche se sono disponibili abbastanza gettoni.Non consente raffiche; produce a una velocità fissa e costante.
MeccanismoI token si accumulano a un ritmo fisso; per l'invio sono necessari i token.I pacchetti vengono messi in coda e lasciano il bucket a una velocità costante.
Controllo della tariffaApplica la tariffa media consentendo picchi di traffico temporanei.Applica rigorosamente sia la velocità di uscita media che quella di picco.
Traffico flexflessibilitàaltro flexibile; si adatta a modelli di traffico variabili.Di meno flexibile; rende più fluido il traffico ma ne limita gli spostamenti.
Gestione del traboccoI token in eccesso vengono scartati se il bucket è pieno.In caso di overflow del bucket, i pacchetti in eccesso vengono eliminati o messi in coda.
Più adatto perApplicazioni che necessitano sia di controllo della velocità che di tolleranza ai burst.Ambienti che richiedono un flusso di traffico regolare, prevedibile e costante.
Complessità di implementazioneModerato, richiede il monitoraggio e la tempistica dei token.Semplice, basato sul comportamento della coda e sulla pianificazione costante dell'output.

Anastasia
Spasojevic
Anastazija è una scrittrice di contenuti esperta con conoscenza e passione per cloud informatica, informatica e sicurezza online. A phoenixNAP, si concentra sulla risposta a domande scottanti su come garantire la robustezza e la sicurezza dei dati per tutti i partecipanti al panorama digitale.