Chapitre 9. Gestionnaires de mise en file d'attente pour l'administration de la bande passante

Table des matières

Explication sur les files d'attente et la gestion de la mise en file d'attente
Gestionnaires de mise en file d'attente simples, sans classes
pfifo_fast
Filtre à seau de jetons (Token Bucket Filter)
Mise en file d'attente stochastiquement équitable (Stochastic Fairness Queueing)
Conseils pour le choix de la file d'attente
terminologie
Gestionnaires de file d'attente basés sur les classes
Flux à l'intérieur des gestionnaires basés sur des classes & à l'intérieur des classes
La famille des gestionnaires de mise en file d'attente : racines, descripteurs, descendances et parents
Le gestionnaire de mise en file d'attente PRIO
Le célèbre gestionnaire de mise en file d'attente CBQ
Seau de jetons à contrôle hiérarchique (Hierarchical Token Bucket)
Classifier des paquets avec des filtres
Quelques exemples simples de filtrage
Toutes les commandes de filtres dont vous aurez normalement besoin
Le périphérique de file d'attente intermédiaire (The Intermediate queueing device (IMQ))
Configuration simple

Quand je l'ai découvert, cela m'a VRAIMENT soufflé. Linux 2.2 contient toutes les fonctionnalités pour la gestion de la bande passante, de manière comparable à un système dédié de haut niveau.

Linux dépasse même ce que l'ATM et le Frame peuvent fournir.

Afin d'éviter toute confusion, voici les règles utilisées par tc pour la spécification de la bande passante :

 
mbps = 1024 kbps = 1024 * 1024 bps => byte/s (octets/s)
mbit = 1024 kbit => kilo bit/s.
mb = 1024 kb = 1024 * 1024 b => byte (octet)
mbit = 1024 kbit => kilo bit.
En interne, les nombres sont stockés en bps (octet/s) et b (octet).

Mais tc utilise l'unité suivante lors de l'affichage des débits :

 
1Mbit = 1024 Kbit = 1024 * 1024 bps => octets/s

Avec la mise en file d'attente, nous déterminons la manière dont les données sont ENVOYEES. Il est important de comprendre que nous ne pouvons mettre en forme que les données que nous transmettons.

Avec la manière dont Internet travaille, nous n'avons pas de contrôle direct sur ce que les personnes nous envoient. C'est un peu comme votre boîte aux lettres (physique !) chez vous. Il n'y a pas de façon d'influencer le nombre de lettres que vous recevez, à moins de contacter tout le monde.

Cependant, l'Internet est principalement basé sur TCP/IP qui possède quelques fonctionnalités qui vont pouvoir nous aider. TCP/IP n'a pas d'aptitude à connaître les performances d'un réseau entre deux hôtes. Il envoie donc simplement des paquets de plus en plus rapidement (« slow start ») et quand des paquets commencent à se perdre, il ralentit car il n'a plus la possibilité de les envoyer. En fait, c'est un peu plus élégant que cela, mais nous en dirons plus par la suite.

C'est comme si vous ne lisiez que la moitié de votre courrier en espérant que vos correspondants arrêteront de vous en envoyer. À la différence que ça marche sur Internet :-)

Si vous avez un routeur et que vous souhaitez éviter que certains hôtes de votre réseau aient des vitesses de téléchargement trop grandes, vous aurez besoin de mettre en place de la mise en forme de trafic sur l'interface INTERNE de votre routeur, celle qui envoie les données vers vos propres ordinateurs.

Vous devez également être sûr que vous contrôlez le goulot d'étranglement de la liaison. Si vous avez une carte réseau à 100Mbit et un routeur avec un lien à 256kbit, vous devez vous assurer que vous n'envoyez pas plus de données que ce que le routeur peut manipuler. Autrement, ce sera le routeur qui contrôlera le lien et qui mettra en forme la bande passante disponible. Nous devons pour ainsi dire « être le propriétaire de la file d'attente » et être le lien le plus lent de la chaîne. Heureusement, c'est facilement réalisable.