Iptables && iproute

Hello

Je cherche a classer par prioriter celon la taille des paquets. le débit importe peux (rate est cependant exiger)

Je fait donc 1 classe dans le qu’elle je places les “classe fille” qui elle on des prioriter.

1 ere question comment afficher le suivi des paque dans la table mangle ?
voila ce que j’utilise:

echo "==================== table filter =================== " && tc -s  filter ls dev eth0 && echo "====================  Les class   =================== " && tc -s class ls dev eth0 && echo "====================  La table mangle =============== "&& iptables -t mangle -L MONLIMITEUR-OUT  && echo "====================  Iptables    =================== "

et j’obtien:

==================== table filter ===================
filter parent 1: protocol ip pref 1 fw
filter parent 1: protocol ip pref 1 fw handle 0x15 classid 1:11
filter parent 1: protocol ip pref 2 fw
filter parent 1: protocol ip pref 2 fw handle 0x16 classid 1:12
filter parent 1: protocol ip pref 3 fw
filter parent 1: protocol ip pref 3 fw handle 0x17 classid 1:13
filter parent 1: protocol ip pref 4 fw
filter parent 1: protocol ip pref 4 fw handle 0x18 classid 1:14
filter parent 1: protocol ip pref 5 fw
filter parent 1: protocol ip pref 5 fw handle 0x19 classid 1:15
filter parent 1: protocol ip pref 6 fw
filter parent 1: protocol ip pref 6 fw handle 0x1a classid 1:16
filter parent 1: protocol ip pref 7 fw
filter parent 1: protocol ip pref 7 fw handle 0x1b classid 1:17
filter parent 1: protocol ip pref 49152 fw
filter parent 1: protocol ip pref 49152 fw handle 0x14 classid 1:10
====================  Les class   ===================
class htb 1:20 root prio 0 rate 31281Mbit ceil 31281Mbit burst 0b cburst 0b
 Sent 101061 bytes 1436 pkt (dropped 0, overlimits 0 requeues 0)
 rate 12264bit 21pps backlog 0b 0p requeues 0
 lended: 1436 borrowed: 0 giants: 0
 tokens: 0 ctokens: 0

====================  La table mangle ===============
Chain MONLIMITEUR-OUT (1 references)
target     prot opt source               destination
MARK       tcp  --  anywhere             anywhere            length 0:32 MARK set 0x14
MARK       tcp  --  anywhere             anywhere            length 33:50 MARK set 0x15
MARK       tcp  --  anywhere             anywhere            length 51:70 MARK set 0x16
MARK       tcp  --  anywhere             anywhere            length 71:100 MARK set 0x17
MARK       tcp  --  anywhere             anywhere            length 101:500 MARK set 0x18
MARK       tcp  --  anywhere             anywhere            length 501:1000 MARK set 0x19
MARK       tcp  --  anywhere             anywhere            length 1001:1200 MARK set 0x1a
MARK       tcp  --  anywhere             anywhere            length 1201:1500 MARK set 0x1b
MARK       all  --  anywhere             anywhere            mark match 0x0 MARK set 0x14
====================  Iptables    ===================

Donc je n’ai que les statistique de la classe ! La table mangle ne fourni que règle des marcage des paquets :frowning:

Doit-je faire une classe par branche et attribuer les priorités aux classe ? :astonished:
Ou est-ce que la méthode utilisée ici est la bonne ?
Enfin est ce possible de voir les paquet (comme la classe) marquer par la table mangle et pas juste les règles :question:

Merci d’avance :smt006

La chaine «MONLIMITEUR-OUT» m’incite à dire que tu t’es inspiré de ce script

http://boisson.homeip.net/limiteur

qui date un peu note. (Pas loin de 6_7 ans).

Tu as défini des classes de 11 à 17 et j’imagine que tu as défini des priorités à chaque classe.

Dans mon script, tu le lance avec «status» comme argument et tu as les renseignements demandés.

Fais

[quote=“fran.b”]La chaine «MONLIMITEUR-OUT» m’incite à dire que tu t’es inspiré de ce script

http://boisson.homeip.net/limiteur

qui date un peu note. (Pas loin de 6_7 ans).

Tu as défini des classes de 11 à 17 et j’imagine que tu as défini des priorités à chaque classe.

Dans mon script, tu le lance avec «status» comme argument et tu as les renseignements demandés.

Fais

dans un autre script oui ,mai pas celui-ci que je reprend en c++(cherche pas a comprend pourquoi en c++…) marrant que on retrouve cette syntaxe :smiley:
sinon non, rien ne ressemble a ton script, ceci pour les raison citée plus haut.
je resume:

Ton script fait le contraire gère le debit et répartit la charge si le reseaux est saturer puis donne ensuite la prioriter. c’est pas le cas chez moi car le disque du portable sature avant la bande passante en local :unamused:

je m’inspire pour ce faire du lien :
linux-france.org/prj/inetdoc … ssful.html

Ce tuto est très bien fait et je doit dire que je l’ai pas mal lu.
Regarde bien le chema. bon je vai essayer de ne pas me planter dans ce que je dit :smt005.
Moi j’ai donc 1 classe root --> 1 classe étage1–> (Gestionnaire de mise en file d’attente
) ===> et le reste en classe terminal. -->marquage des paquets(du moins j’essaye)

Toit sa donne root—>7 classe étage1–> 7 class étage2 ->(Gestionnaire de mise en file d’attente
) le reste en 3eme etage -->marquage des paquets

. et htb veux un débit alors que dans mon cas sa n’a pas d’utilité.
L’ étage2 n’a pas d’interet chez moi a première vue on va éssayer d’être plus claire.
alors dans la page du lien que j’ai donner lit bien Comment les paquets sont retirés de la file d’attente et envoyés vers le matériel

Pour les statistique sa ce complique :confused:
si tu compare les 2 manières tu aurais vu que ce qui sort est différèrent et que les stat on le même problème on ne vois que pour les classe ce qui transite PAS pour les MARK.je vai expliquer pourquoi sa m’interese.

l’interet :
Si on veux avoir des stat aux complet on a pas vraiment le choix il faudrait faire root–>etage1 --> etage 2—> etage suivant etc ect rattacher a la branche et donc 1 mark par branche. pas très pratique mai de cette manière on peux voir ce qui transite grace a :

seulement ceci n’est guère pratique et surtout fausse les résulta. Car sa fait 1 entrée par branche MARK compris … c’est pas léger en plus les classe ne ce partage pas le débit de connections bref pas propre.

Alors pourquoi faux. voila 2 MARK qui son relier a 1 classe identique : 0x14

MARK tcp -- anywhere anywhere length 0:32 MARK set 0x14 MARK all -- anywhere anywhere mark match 0x0 MARK set 0x14
la première trie bien la plage de 0:32 mai l’autre y ajoute tout ce qui ne conspondrai a aucune règles

on voir clairment que 2 type de mark cible sont Dans la meme class peut importe les étage qui en découle.
Le neux ou sa va ce rejoindre va cumuler les stats et sa fausse tout.

et c’est la que sa me dérange car pour avoir un bon ping il faut eviter absolument le superflu avec iproute Vu que je n’ai pas a géer la bande passante,je veux juste gérer la prioriter par la taille des paquet avec ou sans file d’attente

Vu que le debit est gerer pas mon routeur mon interet pour la bande passante est null. je veux juste gerer la sortie pour la taille des paquets c’est donc moins lourd :slightly_smiling:

pour un exemple (mai bon sa évidement faudrait que je teste pour confirmer…) je prend 2 logiciel bien pénible car non régulier pour la taill des paquet mai avec un débit constant
Mumble qui balance a 18ko/s des petit paquet change brusque de taille dès qu’on émet le moindre son.
De meme que pour spring.

Plutot que de laisser passer 30 foit 10 paquet de 100:150 ,je préfère faire passe celui qui fait 1500 et ce pour les 2 soft.

Sauf les premier paquet pour la première connections sur le serveur de spring de cette manière je débarque le premier, je ferait donc une règle qui s’active dison durant 1 minute pour lui favoriser la prioriter.
Ce qui offre un important choix stratégique, premier arriver premier servis :stuck_out_tongue: (je ne rentrarit pas plus dans les détail de spring c’est pas le but ici)
Mai ensuite mumble prendrai a nouveau le dessus car sinon le son pourrait être pasiter sa me permet de changer donc a la demande voir meme a la volée puisque le marcage (MARK) est marquer par iptables

seulment un seul truc coince les statistiques … je ne suis pas sur que je puisse voir ce qui est MARK(en éspérant être plus précis) et quand a être le prem’s sur le serveur sa ne veux rien dire. par contre de voir par ou sa passe oui c’est fiable.

Sinon ton script commence a dater car il ne gère pas non plus l’ipv6 sans compter les autre protocole qui vienne rajouter le bout de leur nez dans le kernel cependant il reste valable pour gérer le debit (a mon goût). mai pour tout combiner il faudrai le réviser car htb/cbq qui en plus a un choix dans le kernel. n’est amha plus actualité ceci dit pour le gestionnaire je suis mal placer pour faire une critique constructive.

bref pas facile a expliquer: mai si je resume la question est:
Comment avoir les statistique par paquet marquer avec MARK quelque soit le nombre gérée par classe ?

Merci de m’avoir lu :smt001

up :neutral_face:
bon il semblerai que ce sujet intéresse personne… étrange ceci mon français doit pas aider :frowning:

bon pour ceux que sa intéresse, voila la version light:

[code]tc qdisc add dev eth0 root handle 1: htb
tc class add dev eth0 parent 1:0 classid 1:1 htb rate 1000gbit prio 0
tc class add dev eth0 parent 1:0 classid 1:2 htb rate 1000gbit prio 1

tc filter add dev eth0 parent 1:0 protocol ip handle 4 fw flowid 1:1
tc filter add dev eth0 parent 1:0 protocol ip handle 5 fw flowid 1:2

iptables -t mangle -A POSTROUTING -m length --length 0:30 -j MARK --set-mark 5
iptables -t mangle -A POSTROUTING -m length --length 31:1500 -j MARK --set-mark 4
[/code]
avidement c’est pour l’exemple . l’ordre des mark est important car c’est dans le POSTROUTING
a vous d’adapter pour les paquet etc etc

bref simple pas lourd et sa aide :stuck_out_tongue:

Sauf que là tu as fait deux classes parents qui ne peuvent partager leur bande passante (note que 1000gbit, ça bétonne, tu es sûr que ça a un effet là??)

ben si tu veux voir ce qui transit t’est obliger de faire 1 classe par mark
ceci dit tout pourrait directement venir de la même classe mai on ne vois rien…

oui 1000gb c’est large sa évite d’avoir une bande passante qui rame/limitée

chaque classe a une priorité ce qui fait que les paquet on une hiérarchie

tc -s class ls dev eth0  |grep Sent
 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
 Sent 249959 bytes 5161 pkt (dropped 0, overlimits 0 requeues 0)
 Sent 10799615 bytes 154116 pkt (dropped 0, overlimits 0 requeues 0)
 Sent 2778667 bytes 28891 pkt (dropped 0, overlimits 0 requeues 0)
 Sent 24476520 bytes 140006 pkt (dropped 0, overlimits 0 requeues 0)
 Sent 5442294 bytes 20441 pkt (dropped 0, overlimits 0 requeues 0)
 Sent 4416 bytes 4 pkt (dropped 0, overlimits 0 requeues 0)
 Sent 16100 bytes 11 pkt (dropped 0, overlimits 0 requeues 0)
 Sent 42168 bytes 28 pkt (dropped 0, overlimits 0 requeues 0)
tc -s class ls dev eth0  |grep prio
class htb 1:1 root prio 0 rate 3568Mbit ceil 3568Mbit burst 891b cburst 891b
class htb 1:2 root prio 1 rate 3568Mbit ceil 3568Mbit burst 891b cburst 891b
class htb 1:3 root prio 2 rate 3568Mbit ceil 3568Mbit burst 891b cburst 891b
class htb 1:4 root prio 3 rate 3568Mbit ceil 3568Mbit burst 891b cburst 891b
class htb 1:5 root prio 4 rate 3568Mbit ceil 3568Mbit burst 891b cburst 891b
class htb 1:6 root prio 5 rate 3568Mbit ceil 3568Mbit burst 891b cburst 891b
class htb 1:7 root prio 6 rate 3568Mbit ceil 3568Mbit burst 891b cburst 891b
class htb 1:8 root prio 7 rate 3568Mbit ceil 3568Mbit burst 891b cburst 891b
class htb 1:9 root prio 7 rate 3568Mbit ceil 3568Mbit burst 891b cburst 891b

donc chian a fait mai sa marche de cette manière,bon faudrait que je teste un peux mieux aussi :slightly_smiling:

si tu as mieux je veux bien :slightly_smiling: