Seau percé
# Seau percé

L'algorithme du seau percé (leaky bucket en anglais) permet de contrôler le nombre de paquets passant à chaque seconde par un nœud d'un réseau informatique.

Il est souvent confondu à tort avec le seau à jetons.

## Utilisation

L'algorithme du seau percé permet de contrôler le nombre de paquets par seconde passant par un nœud sur un réseau. Il est utilisé en particulier pour fluidifier des échanges irréguliers (shaping) ou pour limiter un débit (policing), mais n'est pas limité à ces seules applications.

## Fonctionnement

Une analogie simple permet de comprendre l'algorithme :

* Soit un seau percé en son fond : si le seau n'est pas vide alors le contenu s'y écoule avec un débit constant.
* La taille du seau représente la quantité d'informations qui peut y être stockée, mesurée en nombre de paquets.
* Lorsqu'un paquet arrive, s'il reste suffisamment d'espace dans le seau, il y est placé. Sinon, le seau déborde (paquet en excès).

Les paquets en excès sont en général jetés. Ils peuvent aussi être mis en attente, ou marqués comme non-conformes avant d'être envoyés.

Jonathan Turner a fourni en 1986 la première description de l'algorithme ainsi qu'une implémentation :

* L'analogue du seau est un compteur (une variable) qui permet de vérifier que le débit se conforme aux limites.
* Le compteur est décrémenté à intervalles de temps réguliers, sans pouvoir devenir négatif.
* Le compteur est incrémenté à chaque paquet qui arrive, S'il dépasse le maximum établi, le paquet est considéré « en excès ».

## Le « leaky bucket » selon Tanenbaum

Dans son ouvrage de référence Réseaux, Andrew Tanenbaum décrit l'algorithme du seau percé ainsi :

* L'analogue du seau est une file d'attente dans le flux de données.
* Les paquets sont mis en file d'attente quand ils arrivent.
* Les paquets en sont retirés à intervalles réguliers pour être envoyés (« premier arrivé, premier servi »).
* Lorsque la file d'attente est pleine, les nouveaux paquets sont considérés « en excès ».

Cette description n'est pas rigoureusement équivalente à la première, car la taille des paquets influe sur le moment où il y a saturation.

Le fait d'avoir deux algorithmes différents sous le même nom a depuis entretenu la confusion.

