Journal Traffic shaping

Posté par  (site web personnel) .
Étiquettes : aucune
0
22
sept.
2003
Cher journal,

J'essai depuis deja 2 jours de modifier l'ordonnancement de certains packets et je galere, ca ne marche pas. Alors je me demandais, si toi mon vieil ami, tu pouvais peut être me filer un coup de main.
Mon pb est simple, je cherche à simuler differentes bandes passantes en localhost, et ce ds le but de verifier si mon appli fonctionne comme prevu avec differentes connections. Je ne dispose que d'une carte réseau (eth0).

On a:
+1 socket UDP qui lit sur eth0:1234 et ecrit sur eth0:2345
+1 socket UDP qui lit sur eth0:2345 et ecrit sur eth0:1234

On souhaite:
+ definir la bande passante de eth0:1234 vers eth0:2345
+ definir la bande passante de eth0:2345 vers eth0:1234

J'ai lu de nombreux tutorials, essayé differentes methodes... le resultat reste le meme: march po.

Voici ce que j'ai pondu et qui cherche a limiter la bande à 1kbit:

tc qdisc del dev eth0 root 2> /dev/null > /dev/null

tc qdisc add dev eth0 root handle 1: cbq bandwidth 100Mbit avpkt 1000
tc class add dev eth0 parent 1:0 classid 1:1 cbq bandwidth 1kbit rate 1kbit allot 1514 prio 8 avpkt 1000

tc filter add dev eth0 parent 1:0 prio 8 protocol ip u32 \
match ip protocol 17 0xff \
match udp dst 1234 0xffff \
flowid 1:1
tc filter add dev eth0 parent 1:0 prio 8 protocol ip u32 \
match ip protocol 17 0xff \
match udp src 1234 0xffff \
flowid 1:1
tc filter add dev eth0 parent 1:0 prio 8 protocol ip u32 \
match ip protocol 17 0xff \
match udp dst 2345 0xffff \
flowid 1:1
tc filter add dev eth0 parent 1:0 prio 8 protocol ip u32 \
match ip protocol 17 0xff \
match udp src 2345 0xffff \
flowid 1:1


Merci d'avance pour ton aide.
  • # Re: Traffic shaping

    Posté par  (site web personnel) . Évalué à 4.

    J'ai un debut de réponse en filtrant les packets via iptables:

    tc qdisc del dev eth0 root 2> /dev/null > /dev/null
    iptables -F -t mangle

    tc qdisc add dev eth0 root handle 1: cbq bandwidth 100Mbit avpkt 1000
    tc class add dev eth0 parent 1:0 classid 1:1 cbq bandwidth 1kbit rate 1kbit allot 1514 prio 8 avpkt 1000 bounded isolated

    iptables -t mangle -A OUTPUT -o eth0 -p udp --dport 1234 -j MARK --set-mark 5
    iptables -t mangle -A OUTPUT -o eth0 -p udp --dport 2345 -j MARK --set-mark 5
    iptables -t mangle -A OUTPUT -o eth0 -p udp --sport 1234 -j MARK --set-mark 5
    iptables -t mangle -A OUTPUT -o eth0 -p udp --sport 2345 -j MARK --set-mark 5

    tc filter add dev eth0 parent 1:0 prio 8 protocol ip handle 5 fw classid 1:1


    Par contre ca marche uniquement entre 2 machines. J'arrive pas à le faire sur la meme interface (j'ai essayé aussi avec une virtuelle).

    Donc, journal, à defaut de me donner la réponse sur un plateau d'argent, peut tu m'indiquer, dans ton immense générosité, une piste à suivre (changer de route ? :) ?
    • [^] # Re: Traffic shaping

      Posté par  (site web personnel) . Évalué à 3.

      Si j'osais je dirai humblement que tu prend le probleme du mauvais coté:
      tu mets des filtres qui semblent corrects et ca ne marche pas ...
      la premiere chose que j'aurais teste (si je ne connaissait pas la reponse) est:
      par ou vont passer les paquets destinés a l'adresse IP de la machine ?
      La reponse est variable en fonction du kernel utilisé mais pour la série 2.4 au moins la reponse est: par l'interface lo (loopback) (surement pour eviter d'avoir a faire le meme boulot dans la gestion des interfaces ethernet alors que c deja pret et tres optimisé pour lo.

      Donc (je ne parie pas mais l'esprit y est) test tes modif sur lo, tout en faisant attention parce que si tu limite trop a tord et a travers y a pas mal d'applis qui vont plus etre contentes.
  • # Re: Traffic shaping

    Posté par  (site web personnel) . Évalué à 1.

    connaissez vous un bon tutorial (si possible en fr ..) sur l'utilisation de tc et de la gestion de bande passante en général ?
    J'ai vu pleins de site et d'exemples, rarement très clair

    Merci

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.