7. Token Bucket Filter

 

 

7.1 PRINCIPE DE FONCTIONNEMENT

 

 

L’implémentation TBF consiste en un tampon, ou seau, constamment rempli par des éléments virtuels d’informations appelés jetons, avec un débit spécifique, dit « débit de jeton ». Le paramètre le plus important du tampon est sa taille, soit le nombre de jetons qu’il peut stocker. Dans l’implémentation réelle, les jetons correspondent à des octets et non à des paquets.

 

Chaque jeton entrant laisse sortir un paquet de données de la file d’attente de données et ce jeton est alors supprimé du seau. L’association de cet algorithme avec les deux flux de jetons et de données conduit à trois cas de figure possibles :

 

Ø       Les données arrivent dans le TBF avec un débit égal au débit des jetons entrants. Chaque paquet entrant a son jeton correspondant et passe la file d’attente sans délai.

 

Ø       Les données arrivent dans le TBF avec un débit plus petit que le débit des jetons entrants. Seule une partie des jetons est supprimée au moment où les paquets de données sortent de la file d’attente, de sorte que les jetons s’accumulent jusqu’à atteindre la taille du tampon. Les jetons non utilisés pour envoyer des données avec un débit supérieur au débit des jetons standard si de courtes rafales de données arrivent.

 

Ø       Les données arrivent dans le TBF avec un débit plus grand que celui des jetons. Ceci signifie que le seau sera bientôt dépourvu de jetons, ce qui provoque l’arrêt du TBF pendant un moment : on est en situation de « dépassement de limite » (overlimit). Si les paquets continuent à arriver, ils commenceront à être éliminés.

 

L’accumulation de jetons autorise l’émission de courtes rafales de données sans perte en situation de dépassement de limite. Cependant, toute surcharge prolongée entraînera systématiquement le retard des paquets, puis leur rejet.

 

Le dernier cas de figure est très important car il autorise la mise en forme administrative de la bande passante disponible pour les données traversant le filtre.

 

 

 

7.2 SYNTAXE

 

 

La syntaxe d’utilisation est la suivante :

 

tc qdisc {add | del} dev INTERFACE root tbf [ limit LIMIT ] [ burst BURST ]

                    [ mpu MPU] [ rate RATE ] [peakrate PKRATE ] [ mtu MTU ]

 

Elle a pour paramètres :

 

Ø       limit ou latency : LIMIT est le nombre d’octets qui peu être mis en file d’attente en attendant la disponibilité de jetons. LATENCY spécifie le temps maximal pendant lequel un paquet peut rester dans TBF ;

 

Ø       burst/buffer/maxburst : taille du seau en octets ;

 

Ø       mpu : l’unité minimale de paquet (Minimu Packet Unit) détermine le nombre minimal de jetons à utiliser pour un paquet ;

 

Ø       rate : paramètre de la vitesse ;

Ø       peakrate : débit crête, utilisé pour spécifier la vitesse à laquelle la seau est autorisé à se vider ;

Ø       mtu : Maximal Transfert Unit.

 

7.3 EXEMPLE D'UTILISATION

 

Ralentissement de l’envoi de données à un débit qui ne conduit pas à une mise en file d’attente dans le modem :

 

# tc qdisc add dev eth0 root tbf rate 80mbit latency 50ms burst 102400

# tc -s -d qdisc ls

qdisc tbf 8001: dev eth0 rate 80Mbit burst 102382b/8 mpu 0b lat 61.0ms

 Sent 2816 bytes 31 pkts (dropped 0, overlimits 0)

 

On fixe le taux rate à la valeur du débit de notre lien (100Mbits/s) moins un pourcentage (20 %) et le nombre de jetons à 102400 octets. Ceci permet de diminuer le débit en sortie pour l’uploading tout en gardant une certaine intéractivité (downloading).

 

 


Retour au sommaire