Limiter la bande passante avec « Trickle »
Depuis mon précédent billet sur les services de stockage en ligne, j’ai eu l’occasion de mettre en place plusieurs solutions de synchronisation basées sur Unison (du type de MyOne). Ce système me sert entre autre à sauvegarder et échanger des fichiers de façon transparente avec des machines distantes
Le problème principal de système, tel qu’il est décrit, est l’absence de maîtrise de la bande passante utilisée… Quand les « synchros » se mettent en route, la connexion Internet en prend un coup, souvent au dépend d’autres services. En bref, « ça rame dur ! ».
Une bonne solution pour ne pas pénaliser l’utilisation courante du réseau serait de gérer de la QoS (qualité de service), mais ça reste assez lourd à mettre en place… La gestion de la QoS au sein d’un réseau fera très probablement l’objet d’un prochain billet. En attendant, je vais aborder une solution très simple, qui permet de limiter la bande passante au niveau des clients.
« Trickle » est un gestionnaire de bande passante en espace utilisateur. Dans son utilisation la plus simple, il permet de lancer une commande en limitant sa bande passante montante (upload) ou descendante (download), avec, respectivement, les options ‘-u‘ et ‘-d‘.
L’exemple suivant va lancer « wget » (pour télécharger les sources d’un noyau linux depuis kernel.org) en limitant l’utilisation de la bande passante à 20 Ko/s :
$ trickle -d 20 wget -c http://www.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.35-rc3.tar.bz2
Autre exemple : l’utilisation d’unison pour synchroniser un dossier via ssh en limitant le débit montant à 10 Ko/s et le débit descendant à 30 Ko/s.
$ trickle -u 10 -d 30 unison ~/JopaOne ssh://joel@monserveur.jopa.fr//home/joel/JopaOne
Trickle peut fonctionner en mode « collaboratif » grâce à un démon : trickled, qui peut, lui aussi, être lancé en espace utilisateur. Contrairement à l’utilisation précédente, la limitation n’est plus définie pour chaque commande mais la bande passante maximale est passée en paramètres au démon et partagée par toutes les instances de trickle.
$ trickled -u 10 -d 30
$ trickle unison /home/joel/JopaOne ssh://joel@monserveur.jopa.fr//home/joel/JopaOne -batch
$ trickle wget -c http://www.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.35-rc3.tar.bz2
Si besoin, il est également possible de prioriser certaines applications par rapport à d’autres pour ce partage de ressources. Je vous renvoie vers le man ou le site du projet pour la liste des options et paramètres disponibles.
Lien :