hello
J’ai ici une application mumble qui fait beaucoup de paquet de petite taille mai avec un débit assez important
donc je voudrai le limiter
le reste est supposer être trier, mai pas limiter (enfin a la valeur max de la bp)
#changer la priorité des paquet selon ce qui est demaner port,mtu etc
#seul la bp global sera limitée.
# filtrage par port et taille des paquets
bpmaxdown="21mbit" #Mbbps
bpmaxup="480" #Kbbps
k="kbit"
#$eth founit par le fichier source/config placer y votre interface (eth01,eth1)
#marquage des paquet en fonction du port
#iptables -A OUTPUT -t mangle -p udp --dport 64738 -j ULOG --ulog-prefix="MUMBLE"
iptables -A OUTPUT -t mangle -p udp --dport 64738 -j MARK --set-mark 5
iptables -A OUTPUT -t mangle -p udp --dport 64738 -j RETURN
# la cible RETURN indique que le paquet déjà marquer ne traverse plus les "sous règle"
#marquage des paquet en fonction de la taille
iptables -t mangle -A OUTPUT -m length --length 0:32 -j MARK --set-mark 1
iptables -t mangle -A OUTPUT -m length --length 33:60 -j MARK --set-mark 2
iptables -t mangle -A OUTPUT -m length --length 61:500 -j MARK --set-mark 3
iptables -t mangle -A OUTPUT -m length --length 501:1200 -j MARK --set-mark 4
tc qdisc add dev $eth root handle 1: cbq avpkt 1000 bandwidth $bpmaxdown
#Cette première classe nommée 10:1 possède le moins de bande passante (rate *Kbit), mais une priorité supérieure (prio 1). En effet, une connexion intéractive n'a, #habituellement, pas besoin d'une bande passante très grande, mais pour éviter le lag, ce(les) type de connexion doit avoir priorité sur toutes les autres. Le paramètre #isolated indique que la bande passante de *Kbit ne doit pas être empruntée par les autres classes. Nous nous assurons un débit minimum. En revanche, cette classe #possède la faculté de prendre de la bande passante aux autres dans la mesure du possible.
#ce type de systeme ne travaille que si la bande passante total est prise ou si la limite des clases (ci dessou) est atteinte.
#comme ici on place tout les classe a la meme bp alors seul la prioriter est prise en compte. isolated = prioriter absolue
tc class add dev $eth parent 1: classid 1:1 cbq bandwidth $bpmaxdown rate $bpmaxup$k allot 1514 prio 1 maxburst 10 avpkt 26 isolated
tc class add dev $eth parent 1: classid 1:10 cbq bandwidth $bpmaxdown rate $bpmaxup$k allot 1514 prio 2 maxburst 9 avpkt 50 isolated
tc class add dev $eth parent 1: classid 1:20 cbq bandwidth $bpmaxdown rate $bpmaxup$k allot 1514 prio 3 maxburst 8 avpkt 150 bounded
tc class add dev $eth parent 1: classid 1:30 cbq bandwidth $bpmaxdown rate $bpmaxup$k allot 1514 prio 4 maxburst 7 avpkt 800 bounded
tc class add dev $eth parent 1: classid 1:40 cbq bandwidth $bpmaxdown rate $bpmaxup$k allot 1514 prio 5 maxburst 6 avpkt 1500 bounded
tc class add dev $eth parent 1: classid 1:50 cbq bandwidth $bpmaxdown rate 128kbit allot 1514 prio 6 maxburst 5 avpkt 1300 bounded
#Cette classe limite sa bande passante à *bit et ne doit jamais dépasser cette limite (bounded). Elle possède également une priorité bien inférieure à la précédente. #Nos classes sont maintenant définies, il ne nous reste plus qu'à indiquer quelle classe utiliser pour chaque type de connexion. Cette fois, ce sera le paramètre filter #de tc qui sera utilisé
tc filter add dev $eth parent 1:1 protocol ip handle 1 fw flowid 1:1 #la tout passe la dedant ????
tc filter add dev $eth parent 1:10 protocol ip handle 2 fw flowid 10:2
tc filter add dev $eth parent 1:20 protocol ip handle 3 fw flowid 20:3
tc filter add dev $eth parent 1:30 protocol ip handle 4 fw flowid 30:4
tc filter add dev $eth parent 1:40 protocol ip handle 5 fw flowid 40:5
tc filter add dev $eth parent 1:50 protocol ip handle 6 fw flowid 50:6 #alors que sa devrait transiter ici
Merci d’avance
