Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[Réseau - tc] Limiter la bande passante
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index French
View previous topic :: View next topic  
Author Message
BaNaNe
Guru
Guru


Joined: 18 May 2003
Posts: 327
Location: Vous êtes ici...

PostPosted: Fri May 02, 2008 7:49 pm    Post subject: [Réseau - tc] Limiter la bande passante Reply with quote

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
View user's profile Send private message
razer
l33t
l33t


Joined: 08 Oct 2004
Posts: 893
Location: Paris - France

PostPosted: Sat May 03, 2008 6:49 am    Post subject: Reply with quote

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 :oops:
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
View user's profile Send private message
BaNaNe
Guru
Guru


Joined: 18 May 2003
Posts: 327
Location: Vous êtes ici...

PostPosted: Sat May 03, 2008 6:58 am    Post subject: Reply with quote

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
View user's profile Send private message
guilc
Bodhisattva
Bodhisattva


Joined: 15 Nov 2003
Posts: 3326
Location: Paris - France

PostPosted: Sat May 03, 2008 9:03 am    Post subject: Reply with quote

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
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index French All times are GMT
Page 1 of 1

 
Jump to:  
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