... qui souffre de grosses imperfections.
Mon idée est de limiter les "gros" paquets d'upload à la valeur souhaitée avec une SFQ.
Mon gros problème actuellement est le choix des ports, car certains clients Edonkey (j'imagine sous Microsoft ou en root sur un Unix ???) utilisent des ports < 1024, je suis donc obligé d'être draconien, de filtrer tout au dessus du port 100 (certains arrivent même à ouvrir des ports en dessous).
Le voici :
#La différenciation avec des paquets de contrôle sortants est réalisée en rapport avec la taille du paquet
#De 500 à 1500 parait être un bon réglage
#Variables
dev=ppp0 #Interface relative
bp=25 #Valeur de la limitation en Kbit/s, à diviser par 8 pour avoir des Ko/s
ip=192.168.100.10 #IP de la machine NATé lançant un client donkey
pkb=500 #Taille mini des paquets filtrés
#On commence par tout nettoyer :
iptables -t mangle -F
tc qdisc del dev $dev root
#Ports à garder intact :
for port in 1863 5190; do
iptables -t mangle -A POSTROUTING -s $ip -o $dev -p tcp --destination-port $port -j ACCEPT
done
#Puis on marque par iptables les paquets concernés
iptables -t mangle -A POSTROUTING -s $ip -o $dev -p tcp --destination-port 100: -m length --length "$pkb":1500 -j MARK --set-mark 3
#iptables -t mangle -A POSTROUTING -s $ip -o $dev -p tcp -m length --length "$pkb":1500 -j MARK --set-mark 3
#On crée la qdisc et la classe racine en cbq pour donner les prio hautes aux connexions interactives
tc qdisc add dev $dev root handle 1:0 cbq bandwidth 120Kbit avpkt 1000 cell 8
tc class add dev $dev parent 1:0 classid 1:1 cbq bandwidth 120Kbit \
rate 120Kbit weight 0.6Mbit prio 8 allot 1514 cell 8 maxburst 20 \
avpkt 1000 bounded
#Enfin la classe et la qdisc SFQ qui limite sans concession les paquets de donnés sortants
tc class add dev $dev parent 1:1 classid 1:3 cbq bandwidth 120Kbit \
rate "$bp"Kbit weight 0.5Mbit prio 5 allot 1514 cell 8 maxburst 20 \
avpkt 300 bounded
tc qdisc add dev $dev parent 1:3 handle 3: sfq
tc filter add dev $dev parent 1:0 protocol ip handle 3 fw flowid 1:3
[^] # Voila mon script...
Posté par Razer . En réponse à la dépêche mldonkey 2 est sorti !. Évalué à 1.
Mon idée est de limiter les "gros" paquets d'upload à la valeur souhaitée avec une SFQ.
Mon gros problème actuellement est le choix des ports, car certains clients Edonkey (j'imagine sous Microsoft ou en root sur un Unix ???) utilisent des ports < 1024, je suis donc obligé d'être draconien, de filtrer tout au dessus du port 100 (certains arrivent même à ouvrir des ports en dessous).
Le voici :
#La différenciation avec des paquets de contrôle sortants est réalisée en rapport avec la taille du paquet
#De 500 à 1500 parait être un bon réglage
#Variables
dev=ppp0 #Interface relative
bp=25 #Valeur de la limitation en Kbit/s, à diviser par 8 pour avoir des Ko/s
ip=192.168.100.10 #IP de la machine NATé lançant un client donkey
pkb=500 #Taille mini des paquets filtrés
#On commence par tout nettoyer :
iptables -t mangle -F
tc qdisc del dev $dev root
#Ports à garder intact :
for port in 1863 5190; do
iptables -t mangle -A POSTROUTING -s $ip -o $dev -p tcp --destination-port $port -j ACCEPT
done
#Puis on marque par iptables les paquets concernés
iptables -t mangle -A POSTROUTING -s $ip -o $dev -p tcp --destination-port 100: -m length --length "$pkb":1500 -j MARK --set-mark 3
#iptables -t mangle -A POSTROUTING -s $ip -o $dev -p tcp -m length --length "$pkb":1500 -j MARK --set-mark 3
#On crée la qdisc et la classe racine en cbq pour donner les prio hautes aux connexions interactives
tc qdisc add dev $dev root handle 1:0 cbq bandwidth 120Kbit avpkt 1000 cell 8
tc class add dev $dev parent 1:0 classid 1:1 cbq bandwidth 120Kbit \
rate 120Kbit weight 0.6Mbit prio 8 allot 1514 cell 8 maxburst 20 \
avpkt 1000 bounded
#Enfin la classe et la qdisc SFQ qui limite sans concession les paquets de donnés sortants
tc class add dev $dev parent 1:1 classid 1:3 cbq bandwidth 120Kbit \
rate "$bp"Kbit weight 0.5Mbit prio 5 allot 1514 cell 8 maxburst 20 \
avpkt 300 bounded
tc qdisc add dev $dev parent 1:3 handle 3: sfq
tc filter add dev $dev parent 1:0 protocol ip handle 3 fw flowid 1:3