Petite étude sur la mise en forme et le comportement du flux IP

étude réalisé sur un réseau de 100mbits

machine cliente windows (192.168.0.2)

machine serveur linux (192.168.0.3)

les moniteurs réseaux sont sur le serveur linux: iptraf en enregistrements sur:

le trafic par port

le trafic total

La bande passante est sciement limitée a 113Kbit/s (théorique)

Le champs TOS est modifié, pour SMB il passe de 0x10 a 0x8

Le champs TOS du flux ssh client est a "0", le flux de retour(serveur) est a 0x10

Le champs TOS du flux ftp est a 0x8

Donc la priorité est donnée au flux ssh (0x10)

les disciplines çi-dessous sont appliquées

#####################################################################################

DEV=eth0

iptables -t mangle -F

iptables -t mangle -A OUTPUT -p tcp -o $DEV --sport 22 -j TOS --set-tos Minimize-Delay

iptables -t mangle -A OUTPUT -p tcp -o $DEV --sport 139 -j TOS --set-tos 0x8

iptables -t mangle -A OUTPUT -p tcp -o $DEV --sport 22 -j MARK --set-mark 1

iptables -t mangle -A OUTPUT -p tcp -o $DEV --sport 80 -j MARK --set-mark 1

iptables -t mangle -A OUTPUT -p tcp -o $DEV --sport 10000 -j MARK --set-mark 1

iptables -t mangle -A OUTPUT -p tcp -o $DEV --sport 139 -j MARK --set-mark 2

iptables -t mangle -A OUTPUT -p tcp -o $DEV --sport 20 -j MARK --set-mark 2

## définition de la 1ere classe

tc qdisc add dev $DEV root handle 10:0 cbq bandwidth 1Mbit avpkt 1000

## classe qui encadre le flux (bounded,isolated), dans le pire des cas le flux ne peut dépasser le "rate"

tc class add dev $DEV parent 10:0 classid 10:1 cbq bandwidth 1Mbit rate 113Kbit allot 1500 prio 5 bounded isolated

tc class add dev $DEV parent 10:1 classid 10:2 cbq bandwidth 1Mbit rate 30Kbit allot 1500 prio 1 avpkt 1000

tc class add dev $DEV parent 10:1 classid 10:3 cbq bandwidth 1Mbit rate 50Kbit allot 1500 prio 8 avpkt 1000

tc qdisc add dev $DEV parent 10:2 handle 2: sfq perturb 10

tc qdisc add dev $DEV parent 10:3 handle 3: sfq perturb 10

tc filter add dev $DEV parent 10: protocol ip handle 1 fw flowid 10:2

tc filter add dev $DEV parent 10: protocol ip handle 2 fw flowid 10:3

tc qdisc add dev $DEV handle ffff: ingress

tc filter add dev $DEV parent ffff: protocol ip u32 match \

ip dport 20 0xffff police rate 20kbit burst 5k drop flowid :1

##############################################################

en absisse: le nombres d'octets transmis s'incrémentants

en ordonnée: le temps écoulé en secondes

en jaune: flux FTP

en marron: flux SMB

en vert: flux HTTP

le ftp occupe au départ, la totalité de la bande passante, le débit est "trés" élevé

Ensuite, le flux smb arrive, ralentissant d'autant le débit ftp

L'arrivé d'un troisième flux, http, se traduit par la chute complete du débit, les courbes s'allongeant


partage de bande passante


en absisse: le nombres d'octets transmis

en ordonnée: le temps écoulé en secondes

flux ssh en marron

flux smb en vert

flux ftp en bleu

flux total en jaune

Cas spécifique representant l'arrivé d'un flux ftp dans un flux smb occupant presque la totalité de la bande passante,seule une petite partie est utilisé par un flux ssh

L'arrivé du flux ftp fait chuter la bande passante!! (..je ne sais pas pourquoi,peut etre un défault de mesure!), les flux smb et ftp s'équilibrent ensuite de manière égale, le flux ssh ne subit aucune modification, s'amplifiant meme.


partage de bande passante


en absisse: le nombres d'octets transmis

en ordonnée: le temps écoulé en secondes

flux SMB en marron

flux FTP en vert

flux SSH en bleu

flux HTTP en jaune

flux total en mauve

Dans ce cas de figure, la bande passante est occupée par un important flux ftp et un faible flux ssh (utilisation normal d'ssh :)

La, viens se rajouter un flux smb, les 2 flux principaux s' équilibre et se divisent équitablement la bande passante

La venue d'un 4ème flux (http) va faire rechuter l'ensemble des flux, sauf le flux ssh (prioritaire: classid 10:2 et TOS 0x10) qui lui se met a monter(j'avais lancé une commande tree sur /).


partage de bande passante


CONCLUSION

Le partage de la bande passante (débit/seconde) a l'air équitable:

L'utilisation de 3 flux, divise, aprés stabilisation, la bande passante par 3.

Par contre sous la contrainte, La classe prioritaire conserve sa bande passante et peut meme l'augmenter dans une certaine mesure

Je downloader un divx par FTP et SMB et, un mp3 par http, j'avais au moins 3 sessions ssh, elles montraits des signes de ralentissement.

IL ME RESTE BEAUCOUP D' ANALYSES A FAIRE ex: histogramme du flux sans shapping, flux sans classe mais avec modification TOS etc...