15.9. Limitation du débit pour un hôte ou un masque de sous-réseau

Bien que ceci soit décrit en détail ailleurs et dans nos pages de manuel, cette question est souvent posée. Heureusement, il y a une réponse simple qui ne nécessite pas la compréhension complète du contrôle de trafic.

Ce script de trois lignes met en place la limitation du débit :

tc qdisc add dev $DEV root handle 1: cbq avpkt 1000 bandwidth 10mbit

tc class add dev $DEV parent 1: classid 1:1 cbq rate 512kbit \
   allot 1500 prio 5 bounded isolated

tc filter add dev $DEV parent 1: protocol ip prio 16 u32 \
   match ip dst 195.96.96.97 flowid 1:1

La première ligne installe un gestionnaire de mise en file d'attente basé sur des classes sur votre interface, et indique au noyau que, pour ses calculs, il peut la considérer comme une interface à 10 Mbits/s. Cependant, il n'y aura pas de grands dommages si vous indiquez une valeur erronée. Donner la vraie valeur permettra d'avoir des choses plus précises.

La seconde ligne crée une classe de 512kbit/s avec des valeurs par défaut raisonnables. Pour les détails, voir les pages de manuel cbq et Chapitre 9, Gestionnaires de mise en file d'attente pour l'administration de la bande passante.

La dernière ligne indique quel trafic devra passer par la classe réalisant la mise en forme. Le trafic qui n'est sélectionné par cette règle n'est PAS mis en forme. Pour avoir des sélections plus compliquées (sous-réseaux, ports sources ou de destinations), voir Section 9.6.2, « Toutes les commandes de filtres dont vous aurez normalement besoin ».

Si vous avez changé quelque chose et que vous vouliez recharger le script, exécutez la commande tc qdisc del dev $DEV root pour supprimer votre configuration actuelle.

Le script peut être amélioré en ajoutant une dernière ligne optionnelle tc qdisc add dev $DEV parent 1:1 sfq perturb 10. Voir Section 9.2.3, « Mise en file d'attente stochastiquement équitable (Stochastic Fairness Queueing) » pour savoir ce que cela fait.