O que é o algoritmo Token Bucket?

26 de Junho de 2025

O algoritmo token bucket é um mecanismo de modelagem de tráfego e limitação de taxa usado em redes de computadores para controlar o fluxo de dados.

o que é algoritmo de token bucket

O que é o algoritmo Token Bucket?

O algoritmo do token bucket é uma técnica de gerenciamento de tráfego de rede que controla a quantidade e a taxa de dados transmitidos através de uma rede. Ele opera gerando tokens a uma taxa fixa e colocando-os em um contêiner lógico chamado bucket. Cada token representa a permissão para enviar uma determinada quantidade de dados, normalmente um pacote ou um número definido de bytes.

Quando os dados precisam ser transmitidos, os tokens são removidos do bucket a uma taxa correspondente ao tamanho dos dados enviados. Se houver tokens suficientes disponíveis, os dados são transmitidos imediatamente; caso contrário, a transmissão é adiada até que tokens suficientes sejam acumulados.

O bucket tem uma capacidade máxima, o que permite curtos períodos de tráfego quando o bucket contém tokens em excesso, mas impõe limites de taxa de longo prazo para evitar congestionamentos sustentados. Essa abordagem torna o algoritmo do bucket de tokens adequado para cenários que exigem tanto controle largura de banda uso e flexcapacidade de lidar com padrões de tráfego variáveis.

Como funciona o algoritmo Token Bucket?

O algoritmo de token bucket funciona gerando tokens a uma taxa constante e predefinida e colocando-os em um bucket lógico com capacidade máxima fixa. Cada token normalmente representa a permissão para enviar uma quantidade específica de dados, como um byte ou um pacote. Quando um dispositivo ou Formulário on line quer transmitir dados, ele deve consumir tokens do bucket iguais ao tamanho dos dados.

Se houver tokens suficientes disponíveis, os dados são enviados imediatamente, permitindo uma transmissão tranquila e suportando curtos períodos de tráfego. Se não houver tokens suficientes, o sistema coloca os dados em fila ou aguarda até que mais tokens se acumulem, aplicando o limite de taxa configurado.

O bucket pode armazenar tokens não utilizados até sua capacidade máxima, permitindo que algoritmo para lidar com picos repentinos de tráfego sem violar a taxa média de transmissão. Este mecanismo garante um fluxo de dados controlado e eficiente, ao mesmo tempo que fornece flexbilidade para picos temporários de tráfego.

Parâmetros do Algoritmo do Token Bucket

Aqui está uma tabela explicando os principais parâmetros do algoritmo do token bucket:

ParâmetroDescrição
Taxa de geração de tokens (r)A taxa na qual os tokens são adicionados ao bucket, normalmente expressa em tokens por segundo. Ela define a taxa média de transmissão de dados permitida.
Capacidade do balde (B)O número máximo de tokens que o bucket pode conter. Isso determina o tamanho do pico de tráfego que pode ser transmitido simultaneamente.
Tamanho do tokenA quantidade de dados representada por cada token, geralmente um byte ou um pacote. Define a granularidade do controle.
Contagem atual de tokensO número de tokens atualmente disponíveis no bucket. Aumenta à medida que os tokens são gerados e diminui quando os dados são enviados.
Tamanho do pico de tráfegoA quantidade máxima de dados que pode ser enviada em uma rajada, limitada pela capacidade do bucket.
ConformidadeIndica se o tráfego está dentro dos limites permitidos, com base na disponibilidade do token. O tráfego fora de conformidade é atrasado ou descartado dependendo da implementação.

Para que serve o algoritmo Token Bucket?

O algoritmo Token Bucket é usado para modelagem de tráfego, limitação de taxa e gerenciamento de largura de banda em redes de computadores. Ele garante que a transmissão de dados permaneça dentro dos limites especificados, permitindo curtos períodos de tráfego quando há excesso de capacidade disponível.

Os casos de uso comuns incluem o controle do tráfego de saída de servers, gerenciando a alocação de largura de banda em interfaces de rede, aplicando acordos de nível de serviço (SLAs), e prevenindo o congestionamento da rede. O algoritmo é amplamente implementado em roteadores, interruptores, firewalls e qualidade de serviço (QoS) mecanismos para fornecer desempenho de rede previsível e manter a justiça entre usuários ou aplicativos.

Como implementar o algoritmo Token Bucket?

como implementar o algoritmo de token bucket

Para implementar o algoritmo do token bucket, siga estas etapas gerais, aplicáveis ​​tanto em software quanto Hardwaressistemas baseados em:

  1. Inicializar o bucketDefina a capacidade máxima do bucket (B), que representa o número de tokens que o bucket pode conter. Defina a taxa de geração de tokens (r), que determina quantos tokens são adicionados por unidade de tempo.
  2. Gerar tokens ao longo do tempoAdicione tokens continuamente ao bucket na taxa definida. Se o bucket atingir sua capacidade máxima, tokens adicionais serão descartados para evitar exceder o limite de tamanho de burst.
  3. Lidar com solicitações de transmissão de dadosSempre que um pacote ou unidade de dados precisar ser enviado, verifique o bucket para verificar se há tokens disponíveis. O número de tokens necessários depende do tamanho dos dados (por exemplo, um token por byte ou por pacote).
  4. Permitir ou atrasar o tráfegoSe houver tokens suficientes disponíveis, remova os tokens necessários do bucket e permita a transmissão imediata. Se não houver tokens suficientes, adie a transmissão até que mais tokens se acumulem ou descarte o tráfego, dependendo da política de implementação.
  5. Repita o processo. Reabasteça continuamente os tokens e gerencie as solicitações de tráfego, garantindo que o uso médio da largura de banda permaneça dentro dos limites configurados, ao mesmo tempo em que oferece suporte a picos temporários.

Quais são as vantagens do algoritmo Token Bucket?

O algoritmo de token bucket oferece diversas vantagens para o gerenciamento de tráfego de rede:

  • Permite picos de tráfego. Ao contrário dos algoritmos de limitação de taxa estrita, ele permite rajadas curtas de transmissão de dados, desde que os tokens tenham se acumulado, fornecendo flexbilidade para padrões de tráfego variáveis.
  • Controle suave da taxa média. Ele impõe uma taxa de transmissão média de longo prazo, garantindo que o uso geral da largura de banda permaneça dentro dos limites definidos sem sacrificar o desempenho durante períodos de baixo tráfego.
  • Utilização eficiente da largura de banda. Ao permitir rajadas temporárias e controlar a taxa média, ele maximiza o uso de recursos da rede sem causar congestionamento constante.
  • Simplicidade e baixa sobrecarga. O algoritmo é relativamente simples de implementar com sobrecarga computacional mínima, tornando-o adequado para sistemas de hardware e software.
  • Evita congestionamentos. Ao atrasar ou descartar o excesso de tráfego quando os tokens não estão disponíveis, ele ajuda a evitar o congestionamento da rede e mantém a qualidade do serviço.
  • Oferece suporte à qualidade do serviço. Ele se integra bem com estruturas de QoS, permitindo distribuição justa de largura de banda e priorização de tráfego.

Quais são as desvantagens do algoritmo Token Bucket?

O algoritmo do token bucket tem várias desvantagens, apesar de sua flexbilidade:

  • Não garante taxa de saída constante. Embora controle a taxa média de transmissão, ele permite rajadas, que podem causar picos de tráfego de curto prazo, que podem sobrecarregar dispositivos downstream se não forem gerenciados adequadamente.
  • Requer gerenciamento preciso do tempo. A geração precisa de tokens ao longo do tempo é fundamental para uma operação correta. Temporizações inconsistentes devido a atrasos no sistema ou desvios no relógio podem prejudicar a aplicação da taxa.
  • Controle limitado do tamanho do burst. O tamanho dos bursts permitidos depende da capacidade do bucket, mas ajustar este parâmetro pode ser desafiador. Um bucket muito pequeno reduz o burst. flexibilidade; muito grande pode causar picos excessivos de tráfego.
  • Despesas gerais de manutenção do estado. O algoritmo requer rastreamento contínuo de contagens de tokens e intervalos de tempo, o que adiciona complexidade ao gerenciamento de estado, especialmente em redes de alta velocidade ou grande escala.
  • Ineficaz sozinho para policiamento de trânsito. Embora molde o tráfego e permita rajadas, pode ser necessário combiná-lo com outros mecanismos (por exemplo, bucket furado ou policiamento rigoroso) para garantir conformidade rigorosa com os limites de largura de banda em ambientes sensíveis.

Algoritmo Token Bucket vs. Leaky Bucket

Aqui está uma tabela de comparação clara do algoritmo token bucket vs. leaky bucket:

AspectoAlgoritmo de token bucketAlgoritmo do balde furado
Finalidade principalModelagem de tráfego com tolerância para rajadas.Modelagem de tráfego com taxa de saída rigorosa e constante.
Manipulação de burstPermite rajadas curtas se houver tokens suficientes disponíveis.Não permite rajadas; produz em uma taxa fixa e estável.
MecanismoOs tokens se acumulam a uma taxa fixa; o envio requer tokens.Os pacotes são enfileirados e saem do balde a uma taxa constante.
Controle de taxaImpõe uma taxa média ao mesmo tempo que permite picos temporários de tráfego.Aplica rigorosamente tanto a taxa de saída média quanto a de pico.
Traffic flexhabilidadeMais flexível; acomoda padrões de tráfego variáveis.Menos flexível; suaviza o tráfego, mas restringe rajadas.
Manipulação de estouroOs tokens excedentes serão descartados se o balde estiver cheio.Pacotes excedentes serão descartados ou enfileirados se o bucket transbordar.
Mais adequado paraAplicações que necessitam de controle de taxa e tolerância a picos.Ambientes que exigem fluxo de tráfego suave, previsível e constante.
Complexidade de implementaçãoModerado, requer rastreamento e temporização de tokens.Simples, baseado no comportamento da fila e no agendamento de saída constante.

Anastasia
Spasojevic
Anastazija é uma redatora de conteúdo experiente, com conhecimento e paixão por cloud computação, tecnologia da informação e segurança online. No phoenixNAP, ela se concentra em responder a questões candentes sobre como garantir a robustez e a segurança dos dados para todos os participantes do cenário digital.