View previous topic :: View next topic |
Author |
Message |
BaNaNe Guru
Joined: 18 May 2003 Posts: 327 Location: Vous êtes ici...
|
Posted: Fri May 02, 2008 7:49 pm Post subject: [Réseau - tc] Limiter la bande passante |
|
|
Bonsoir à tous!
J'utilise actuellement le script TorrentFlux sur mon serveur de fichiers pour gérer mes torrents (des trucs légaux, comme notre très cher liveCD gentoo :p). Comme mon FAI ne comptabilise pas l'upload dans son quota (sisi, j'habite dans un petit pays où il y a de bêtes quota sur les connections ADSL...), j'en fais profiter la communauté.
Le problème est que je ne veux pas que ma connection devienne inutilisable tellement les torrents upload des données. TorrentFlux permet de limiter la bande passante en upload par torrents donc, si je limite à 10ko/s et que j'ai 4 torrents en cours, l'upload pourrait monter à 40Ko/s.
Je voudrais pouvoir limiter la bande passante de tout les torrents d'un coup à 10-15Ko/s (ou plus, tant que le surf n'en souffre pas).
[/code]
J'ai trouvé des info à propos du QoS, traffic shapping et le programme tc.
Le serveur de fichiers qui fait tourner les torrents possède une interface (eth0) et est derrière un routeur tout à fait normal (un machin en plastique grand public)
J'ai écrit le petit script suivant :
Code: |
#!/bin/bash
# Supprime les files déja crées
tc qdisc del dev eth0 root
# Cree les nouvelles files
tc qdisc add dev eth0 root handle 1: htb default 10
tc class add dev eth0 parent 1: classid 1:1 htb rate 10kbps burst 6k
# port range : 32768 - 33023 (c'est juste?)
tc filter add dev eth0 parent 1: protocol ip u32 match ip sport 0X8000 0xff00 flowid 1:1
|
Donc, il est sensé limiter la BP en upload pour les port 32768 -> 33023, si je ne me suis pas trompé dans la syntaxe nébuleuse... J'ai pas trop compris le truc du burst mais bon.
Toujours est-il que là, j'ai 3 torrents qui uploadent pour un total de ~40Ko/s, ce qui représente plus ou moins la BP totale que j'ai en upload (448kb). Me trompé-je quelque part? Ou je ne m'y prend pas correctement?
Merci d'avance _________________ Comme c'est à la mode de mettre la config de tous ses pc...
Desktop : Intel Q9550 + 4Go DDR2 + 640Go & 1To Sata2 + HD4870
Portable : Centrino 2ghz 1Go DDR 160GO
Server Fichier : PII 400Mhz 640SDR 200GO |
|
Back to top |
|
|
razer l33t
Joined: 08 Oct 2004 Posts: 893 Location: Paris - France
|
Posted: Sat May 03, 2008 6:49 am Post subject: |
|
|
Je peux pas t'aider sur la forme des commandes, cela fait trop longtemps que je me suis pas tapé des lignes iptables ou tc manuellement
Par contre, je limite aussi la BP sortante pour le P2P : je le fais avec shorewall, qui est aussi par ailleurs mon FW.
Voici comment je procède :
Mon logiciel P2P (mldonkey en l'occurence) est lancé en tant qu'user particulier
Je limite les paquets montants à partir d'une certaine taille (>500, pour ne pas filtrer les poignées de mains et tests de parité), qui proviennent de cet user (1010)
Au cas ou çà t'intéresse, cela donne une config du genre :
Code: | # /etc/shorewall/tcrules
#Comments
#le :F signifie que le marquage s'effectue sur la chaine FORWARD, donc utile pour tout le reseau local
#La specification des ports en "!" ne fonctionne pas (??)
#Attention :
#1 le marquage est realise sur la table mangle, qui n est pas exclusive
# cad que si un paquet est marque par deux regles, c est la derniere
# specifie qui compte
#2 Bien respecter le nombre et l ordre des regles
##############################################################################
#MARK SOURCE DEST PROTO PORT(S) CLIENT PORT(S) UID:GID TEST LENGTH TOS
# LE RESTE
2 eth0 !192.168.0.0/16 tcp - - - -
2 fw !192.168.0.0/16 tcp - - - -
# SSH HTTP(S) et UDP : Priorite max
3 eth0 !192.168.0.0/16 tcp 22,80,443 - - -
3 fw !192.168.0.0/16 tcp 22,80,443 - - -
3 eth0 !192.168.0.0/16 udp - - - -
3 fw !192.168.0.0/16 udp - - - -
# FTP FTP-DATA SMTP SFTP NNTP : Priorite moyenne
4 eth0 !192.168.0.0/16 tcp 20,21,25,115,119 - - -
4 fw !192.168.0.0/16 tcp 20,21,25,115,119 - - -
# P2P : Limitation aux paquets superieurs a 500 octets
5 fw !192.168.0.0/16 tcp - - 1010 - 500:
|
Code: |
# /etc/shorewall/tcclasses
#Comments
#La BP montante Free tourne autour de 100ko/s
#INTERFACE MARK RATE CEIL PRIORITY OPTIONS
# Minimum Maximum
wlan0 1 40kbps 100kbps 1 tcp-ack # Reponses tcp priorite max
wlan0 2 30kbps 100kbps 2 # Autres services exterieurs
wlan0 3 40kbps 100kbps 1 # Udp et services ssh http https
wlan0 4 1kbps 120kbps 3 # Envois smtp, sftp, nntp et ftp
wlan0 5 1kbps 8kbps 4 # Le P2P - paquets superieurs a 300 octets
wlan0 6 10kbps 2000kbps 5 default # Traffic local
|
|
|
Back to top |
|
|
BaNaNe Guru
Joined: 18 May 2003 Posts: 327 Location: Vous êtes ici...
|
Posted: Sat May 03, 2008 6:58 am Post subject: |
|
|
Merci pour l'info, je vais jetter un coup d'oeil à shorewall.
Mais comme mon serveur de fichier n'est pas très puissant, j'aimerais ne pas devoir rajouter trop de trucs supplémentaires (je ne connais pas shorewall, il est peut-être extremement léger...).
Si un spécialiste de tc passe dans le coin et vois ce qui ne va pas dans mon script, je suis toujours prenneur
Merci! _________________ Comme c'est à la mode de mettre la config de tous ses pc...
Desktop : Intel Q9550 + 4Go DDR2 + 640Go & 1To Sata2 + HD4870
Portable : Centrino 2ghz 1Go DDR 160GO
Server Fichier : PII 400Mhz 640SDR 200GO |
|
Back to top |
|
|
guilc Bodhisattva
Joined: 15 Nov 2003 Posts: 3326 Location: Paris - France
|
Posted: Sat May 03, 2008 9:03 am Post subject: |
|
|
Il manque une terminaison sur ton classificateur. Après une classe, il faut mettre un scheduler de paquets (SFQ), sinon la limitation n'est pas faite.
Pour voir comment se font les hiérarchies, étudie en profondeur cette page : http://lartc.org/howto/lartc.qdisc.classful.html il y a tout, mais c'est pas forcément super transparent...
Et TOUT le trafic va passer dans le classifier, donc il te faut aussi une classe limitée au maximum de débit d'upload de ta connexion
le "burst", c'est le paramètre qui indique le volumme de données qui peut passer avant que la limite de débit imposée par le HTB rentre en action (donc dans ton exemple, 6ko de données passeront sans limite de débit)
Il est pas mal aussi d'ajouter le paramètre "prio" qui permet de prioriser le trafic d'une classe par rapport à une autre (en gros, en plus de la limite de débit, donner moins de priorité au trafic P2P, même s'il ne dépasse pas son débit mas : ca permet par exemple si tu as un upload vers un FTP en parallèle, de lui donner le plus possible de BP)
En gros, sur ton script, ça donne ça :
Code: | #!/bin/bash
# Supprime les files déja crées
tc qdisc del dev eth0 root
# Cree les nouvelles files
tc qdisc add dev eth0 root handle 1: htb default 2
# Classe limitée
tc class add dev eth0 parent 1: classid 1:1 htb rate 10kbps burst 6k prio 2
tc qdisc add dev eth0 parent 1:1 handle 10: sfq perturb 10
# Classe débit max
tc class add dev eth0 parent 1: classid 1:2 htb rate {DEBIT_MAX_CONNEXION}kbps burst 6k prio 1
tc qdisc add dev eth0 parent 1:2 handle 20: sfq perturb 10
# port range : 32768 - 33023 (c'est juste?)
tc filter add dev eth0 parent 1: protocol ip u32 match ip sport 0X8000 0xff00 flowid 1:1
|
La, ça devrait être bon (j'ai pas testé)
Si tu veux un autre exemple, voila le script que j'utilise : http://doc.xwing.info/iptables/xwing/tc.sh _________________ Merci de respecter les règles du forum.
Mon site perso : https://www.xwing.info
Mon PORTDIR_OVERLAY : https://gentoo.xwing.info ou layman -a xwing |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|