En fait, le champ MARK ne se situe pas dans le paquet:
C'est un champ virtuel, attaché au paquet par linux lorsque le paquet est accepté par le noyau. (A l'occasion de la lecture sur une carte réseau, ou bien de la génération d'un paquet par une application locale).
C'est simplement un champ numérique, en lecture/écriture.
Par défault il n'est pas initialisé.
IPTable permet de mettre la MARK à une valeur arbitraire,
Par exemple, pour marquer tous les paquets sortant vers le port 80:
iptables -t mangle -A POSTROUTING -p tcp --dport 80 -j MARK --set-mark 6
Bon jusque là, on est d'accord ca ne sert pas à grand chose.
Par contre, ce qu'il faut savoir, c'est que la QoS, dans la chaine de sortie du paquet, interviens *APRES* netfilter, y compris POST- routing. Et "tc filter" sait utiliser les MARK placés avant par Netfilter (iptables)...
L'idée est donc de définir ses qdisc et classes avec tc, comme d'habitude, puis ensuite, par une ou plusieurs commandes, intégrer les paquets dans les Class QoS comme ceci:
Cette ligne spécifie:
- l'interface de sortie où la QoS doit être appliqué (dev eth1),
- la QDisc parente, qui doit avoir été crée avec tc qdisc [...] handle 1: [..]
(parent 1:0)
- la priorité au cas ou plusieurs filtres sur le même qdisc existent (prio 1). Ceci défini l'ordre de parcourd des filtres si il y en a plusieurs.
- la MARK de iptables à utiliser (handle 6 fw) -> correspond, numériquement, au set-mark du iptables
- la classe à utilser en dessous de la QDisc, au cas ou le filter matche le paquet
(flowid 1:1). La classe doit avoir été crée auparavant avec tc class.
Voilà!
J'avais fabriqué (avec un ami) un script basé sur ces notions pour une colloc, ca marchais nickel: Les personnes pouvaint surfer sans problèmes, sur une ligne ADSL, alros que il y avait en permanence plus de 4 ordis avec emule/torrent en permanence. La même machine, un pautre Pentium 300, gérait aussi un webmail, et un site LAMP sans aucun soucis.
C'était basé autour de HTB, que j'avais trouvé très efficace.
Si tu veux, ce soir j'essaye de retrouver ce script et de le poster !
# Marque MARK
Posté par C. OB (site web personnel) . En réponse au message QOS : marquage des paquets. Évalué à 1.
En fait, le champ MARK ne se situe pas dans le paquet:
C'est un champ virtuel, attaché au paquet par linux lorsque le paquet est accepté par le noyau. (A l'occasion de la lecture sur une carte réseau, ou bien de la génération d'un paquet par une application locale).
C'est simplement un champ numérique, en lecture/écriture.
Par défault il n'est pas initialisé.
IPTable permet de mettre la MARK à une valeur arbitraire,
Par exemple, pour marquer tous les paquets sortant vers le port 80:
iptables -t mangle -A POSTROUTING -p tcp --dport 80 -j MARK --set-mark 6
Bon jusque là, on est d'accord ca ne sert pas à grand chose.
Par contre, ce qu'il faut savoir, c'est que la QoS, dans la chaine de sortie du paquet, interviens *APRES* netfilter, y compris POST- routing. Et "tc filter" sait utiliser les MARK placés avant par Netfilter (iptables)...
L'idée est donc de définir ses qdisc et classes avec tc, comme d'habitude, puis ensuite, par une ou plusieurs commandes, intégrer les paquets dans les Class QoS comme ceci:
tc filter add dev eth1 parent 1:0 prio 1 handle 6 fw flowid 1:1
Cette ligne spécifie:
- l'interface de sortie où la QoS doit être appliqué (dev eth1),
- la QDisc parente, qui doit avoir été crée avec tc qdisc [...] handle 1: [..]
(parent 1:0)
- la priorité au cas ou plusieurs filtres sur le même qdisc existent (prio 1). Ceci défini l'ordre de parcourd des filtres si il y en a plusieurs.
- la MARK de iptables à utiliser (handle 6 fw) -> correspond, numériquement, au set-mark du iptables
- la classe à utilser en dessous de la QDisc, au cas ou le filter matche le paquet
(flowid 1:1). La classe doit avoir été crée auparavant avec tc class.
Voilà!
J'avais fabriqué (avec un ami) un script basé sur ces notions pour une colloc, ca marchais nickel: Les personnes pouvaint surfer sans problèmes, sur une ligne ADSL, alros que il y avait en permanence plus de 4 ordis avec emule/torrent en permanence. La même machine, un pautre Pentium 300, gérait aussi un webmail, et un site LAMP sans aucun soucis.
C'était basé autour de HTB, que j'avais trouvé très efficace.
Si tu veux, ce soir j'essaye de retrouver ce script et de le poster !
Un site avec un bon exemple:
http://www.knowplace.org/pages/howtos/traffic_shaping_with_l(...)
A+
OB
PS: Si tu pense que TC est incompréhensible à utiliser, sache que tout le monde est d'accord avec toi :-)