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 |
[ 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).