A partir de la page de manuel, la seule contrainte burst
est qu'elle doit être suffisamment élevée pour autoriser votre taux configuré: elle doit être au moins taux / HZ. HZ est un paramètre de configuration du noyau; vous pouvez comprendre ce que c'est sur votre système en vérifiant la configuration de votre noyau. Par exemple, sur Debian, vous pouvez:
$ egrep '^CONFIG_HZ_[0-9]+' /boot/config-`uname -r`
CONFIG_HZ_250=y
donc HZ sur mon système est de 250. Pour atteindre un taux de 10 Mbps, il me faudrait donc burst
au moins 10 000 000 bits / sec ÷ 250 Hz = 40 000 bits = 5000 octets. (Notez que la valeur la plus élevée dans la page de manuel date de quand HZ = 100 était la valeur par défaut).
Mais au-delà, burst
c'est aussi un outil politique. Il configure la mesure dans laquelle vous pouvez utiliser moins de bande passante maintenant pour la "sauvegarder" pour une utilisation future. Une chose courante ici est que vous souhaiterez peut-être autoriser les petits téléchargements (par exemple, une page Web) à aller très vite, tout en limitant les gros téléchargements. Pour ce faire, augmentez burst
la taille que vous considérez comme un petit téléchargement. (Cependant, vous passiez souvent à un qdisc de classe comme htb, vous pouvez donc segmenter les différents types de trafic.)
Donc: vous configurez la rafale pour qu'elle soit au moins suffisamment grande pour atteindre le résultat souhaité rate
. Au-delà, vous pouvez l'augmenter encore, en fonction de ce que vous essayez de réaliser.
Modèle conceptuel d'un filtre de seau à jetons
Un "seau" est un objet métaphorique. Ses principales propriétés sont qu'il peut contenir des jetons et que le nombre de jetons qu'il peut contenir est limité - si vous essayez d'en ajouter plus, il "déborde" et les jetons supplémentaires sont perdus (tout comme essayer de mettre trop d'eau dans un seau réel). La taille du seau est appelée burst
.
Afin de transmettre réellement un paquet sur le réseau, ce paquet doit obtenir des jetons égaux à sa taille en octets ou mpu
(selon la valeur la plus élevée).
Il existe (ou peut exister) une ligne (file d'attente) de paquets en attente de jetons. Cela se produit lorsque le compartiment est vide ou qu'il a moins de jetons que la taille du paquet. Il n'y a que peu d'espace sur le trottoir devant le godet, et la quantité d'espace (en octets) est définie directement par limit
. Alternativement, il peut être défini indirectement avec latency
(dans un monde idéal, le calcul serait rate
× latency
).
Lorsque le noyau veut envoyer un paquet hors de l'interface filtrée, il tente de placer le paquet à la fin de la ligne. S'il n'y a pas de place sur le trottoir, c'est dommage pour le paquet, car à la fin du trottoir se trouve une fosse sans fond, et le noyau laisse tomber le paquet.
La dernière pièce est une machine à fabriquer des jetons qui ajoute rate
/ HZ
jetons au seau à chaque tick. (C'est pourquoi votre seau doit être au moins aussi grand, sinon certains des jetons nouvellement créés seront immédiatement jetés).
tbf
fait partie du cadre de contrôle du trafic Linux.man tbf
ouman tc-tbf
devrait apporter la documentation.