Iptables & quos (tc) [Résolu]

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

up :smt006

up :smt026

Je ne comprends pas bien ta question : sois plus explicite stp.

merci pour ta réponse,

bon je vai essayer d’expliquer cela autrement :confused:

Objectif:
Je voudrai que sur le port X avec l’ip limiter la bande passante (upload) celle ci est de type audio (mumble)
le reste des paquet est filtrer celons leur taille.
Avec la priorité les petit paquet avant les gros

Question.
comment faire pour que sa marche ?

Problème:
Tout passe dans la première règle celons-le code déjà citer,la charge est donc mal repartie et bref sa marche pas.

Bon on est jamais mieux servi que par soi même :smt108
je me suis inspirer d’un autre sprit qui trainai chez moi, enfin bon sa marche

#bp max 50kbit en up
RATEUP1="13kbit"
RATEUP2="37kbit"
DEV=$eth
	affecte()
	# affecte nom sens port protocole categorie
	# sens = s ou d, protocole = udp ou tcp categorie = 0->?
	#
	{
		echo [$1 : $5]
		# shell s	curis	
		iptables -t mangle -A MONLIMITEUR-OUT -p $4 --$2port $3 -j MARK --set-mark 2$5
	}
#

ip link set dev $DEV qlen 30

# ajout de la strat�gie HTB
# les noms des queues sont de 20 � 26, je les conserve
#
tc qdisc add dev $DEV root handle 1: htb default 25

# 2 classes meres differentes
tc class add dev $DEV parent 1: classid 1:1 htb rate $RATEUP1
tc class add dev $DEV parent 1: classid 1:2 htb rate $RATEUP2

# ajout des classes filles:
# - chaque classe dispose AU MOINS de son quota de bande passante. Aucune
#   classe n'est donc étouffée par les autres. Chaque classe peut également
#   consommer toute la bande passante si aucune autre classe ne l'emploie.
# poids différents pour les classes
# C'est l'intéret des classes filles si j'ai bien compris, les classes méres
# ne partage pas leur part de bande passante
#
# Le serveur et les pings
tc class add dev $DEV parent 1:1 classid 1:20 htb rate $RATEUP1 ceil $RATEUP1 prio 0
# Les autres classes
tc class add dev $DEV parent 1:2 classid 1:21 htb rate $RATEUP2 ceil $RATEUP2 prio 0
# telnet, ssh,X
tc class add dev $DEV parent 1:2 classid 1:22 htb rate $RATEUP2 ceil $RATEUP2 prio 1
# ports bas, messagerie AOL, MSN
tc class add dev $DEV parent 1:2 classid 1:23 htb rate $RATEUP2 ceil $RATEUP2 prio 2
# WWW
tc class add dev $DEV parent 1:2 classid 1:24 htb rate $RATEUP2 ceil $RATEUP2 prio 3
# Edonkey (� l'origine)
tc class add dev $DEV parent 1:2 classid 1:25 htb rate $RATEUP2 ceil $RATEUP2 prio 4

# ajout de la stratégie aux classes filles
# - SFQ offre un traitement sensiblement équitable de chaque classe.
tc qdisc add dev $DEV parent 1:20 handle 20: sfq perturb 10
tc qdisc add dev $DEV parent 1:21 handle 21: sfq perturb 10
tc qdisc add dev $DEV parent 1:22 handle 22: sfq perturb 10
tc qdisc add dev $DEV parent 1:23 handle 23: sfq perturb 10
tc qdisc add dev $DEV parent 1:24 handle 24: sfq perturb 10
tc qdisc add dev $DEV parent 1:25 handle 25: sfq perturb 10

# r�partition du trafic en classe via fwmark
# - le trafic est r�parti en classes de priorit� suivant l'indicateur
#   fwmark des paquets (ceux-ci sont positionn�s avec iptables un peu plus
#   loin). La classe de priorit� par d�faut a �t� mise � 1:26 de telle sorte
#   que les paquets qui ne sont pas marqu�s se retrouvent dans la classe de
#   priorit� la plus faible.
tc filter add dev $DEV parent 1:0 prio 0 protocol ip handle 20 fw flowid 1:20
tc filter add dev $DEV parent 1:0 prio 0 protocol ip handle 21 fw flowid 1:21
tc filter add dev $DEV parent 1:0 prio 0 protocol ip handle 22 fw flowid 1:22
tc filter add dev $DEV parent 1:0 prio 0 protocol ip handle 23 fw flowid 1:23
tc filter add dev $DEV parent 1:0 prio 0 protocol ip handle 24 fw flowid 1:24
tc filter add dev $DEV parent 1:0 prio 0 protocol ip handle 25 fw flowid 1:25
#
# ajout de MONLIMITEUR-OUT � la table de modification des paquets d'iptables
# - ceci d�clare la table employ�e pour filtrer et classer les paquets
iptables -t mangle -N MONLIMITEUR-OUT
iptables -t mangle -I POSTROUTING -o $DEV -j MONLIMITEUR-OUT
# ajout de fwmark pour classer les diff�rents types de trafic
# - fwmark est positionn� de 20 � 25 suivant la classe. 20 correspond � la
#   priorit� la plus forte.
#special ne passe pas dans la fonction (la ca son rare)
iptables -t mangle -A MONLIMITEUR-OUT -s 192.168.1.0/24 -j MARK --set-mark 25
iptables -t mangle -A MONLIMITEUR-OUT -p icmp -j MARK --set-mark 24
#passage en paramettre a la fonction 
# function commentaire por de destination (s ou d ) protocole prioriter de 0 a 25
affecte "mumble" d 64738 udp 5
affecte "DNS" d 53 udp 0
#affecte "exemple plage port" d 6112:6119 tcp 1

iptables -t mangle -A MONLIMITEUR-OUT -p tcp -m length --length 0:32 -j MARK --set-mark 20
iptables -t mangle -A MONLIMITEUR-OUT -p udp -m length --length 0:32 -j MARK --set-mark 20
iptables -t mangle -A MONLIMITEUR-OUT -p tcp -m length --length 33:60 -j MARK --set-mark 25
iptables -t mangle -A MONLIMITEUR-OUT -p udp -m length --length 33:60 -j MARK --set-mark 25
iptables -t mangle -A MONLIMITEUR-OUT -p tcp -m length --length 61:500 -j MARK --set-mark 23
iptables -t mangle -A MONLIMITEUR-OUT -p udp -m length --length 61:500 -j MARK --set-mark 23
iptables -t mangle -A MONLIMITEUR-OUT -p tcp -m length --length 501:1200 -j MARK --set-mark 24
iptables -t mangle -A MONLIMITEUR-OUT -p udp -m length --length 501:1200 -j MARK --set-mark 24
iptables -t mangle -A MONLIMITEUR-OUT -p tcp -m length --length 1200:1501 -j MARK --set-mark 21
iptables -t mangle -A MONLIMITEUR-OUT -p udp -m length --length 1200:1501 -j MARK --set-mark 21

#on marque les paquets restants 26 
iptables -t mangle -A MONLIMITEUR-OUT -m mark --mark 0 -j MARK --set-mark 26