Le script gère une bande passante (ici en upload, tu dois adapter pour le traffic descendant).
DEV=eth1 est l’interface d’où vient le traffic à gérer.
Le script coupe la bande passante en 7 parties P0,P1,…,P6 de taille Pi*UNITE en K/s, la bande passante totale est donc de (P0+P1+P2+P3+P4+P5+P6)*UNITE K/s
Chaque Pi correspond à une file numéro i et correspond à la bande passante minimale allouée (en clair, toute la bande passante sera utilisée et chaque file aura un débit d’au moins Pi*UNITE K/s (débit minimum donc si elle veut l’utiliser))
La file 0 est prioritaire sur la 1 qui est prioritaire sur la 2 etc…
les paquets sont distribués dans les files par un marquage adéquat (set-mark de iptables, la file i correspond à la marque 20+i)
La fonction affecte permet de marquer simplement les paquets. Ainsi
affecte “Exemple” s 12345 tcp 4
mettra dans la file 4 tout le traffic ayant comme origine le port 12345.
Pour bétonner CounterStrike, il suffit de faire
affecte “CounterStrike” d 27000:27045 udp 0
affecte “CounterStrike” s 27000:27030 udp 0
Cela donne aux paquets liés à ce jeu la priorité 0. Outre donc un débit assuré, le ping reste excellent même en cas de gros chargement. Cela a permis à mon ainé d’avoir un serveur CS utilisable même si des gens téléchargeait sur mon site.
Tu peux régler la priorité des classes ici (paramètre prio)
tc class add dev $DEV parent 1:1 classid 1:25 htb \
rate $[($RATEUP*$P5)/$PART]kbit \
ceil ${RATEUP}kbit prio 5
Maintenant il s’agit de voir ce que tu veux faire (réserver une part minimum à chacun avec une priorité équivalente, faire ça de façon dynamique ou bien gérer effectivement des priorités dans les services…)