Trickle

Trickle est un programme qui sert a modeler la bande passant du traffic réseau. Je le trouve plutot utile lorsque je souhaite télécharger des données lourdes vers l'exterieur sans que cela mange toute ma bande passante.

J'ai tenté d'utiliser trickled avec tricked.conf mais j'ai eu l'impresionne que c'était un peu inutile, c'est supposé gerer des priorités lors des accès aux ressources réseau selon le programme. J'ai reglé ssh sur la plus haute priorité et ncftp sur la priorité la plus basse, cependant cela ne changais rien pour moi et donc la connection ssh était un peu comme un steack, haché (pour ne pas dire autre chose). J'ai du ma faire quelque chose.. . : ] (liens, explications etc bienvenue).

En tout cas en utilisant trickle en tant qu'utilisateur avec quelque chose comme "trickle [bandwidth]option programme" cela fonctionne largement bien pour moi.. . .

Example d'utilisation

Prenons un cas simple, j'utilise ssh, je veux aussi émmettre des fichiers lourds via ncftp. Ncftp utilise trop le peu de bande passante qui m'est disponible. Je n'ai pas de routeur classieu avec QoS etc. Que faire donc ?? D'abord, quelle est la bande passante totale disponible ? En émmetant normalement avec ncftp je remarque que la vitesse se tasse autour de 90Ko/s du coup je peux me dire qu'en le limitant a 60Ko/s il me restera assez d'espace réseau pour faire du ssh confortablement et même un peu de http.

Du coup il ne me reste qu'a lancé ncftp dans une enveloppe "trickle" a lui dire d'emmetre a 60Ko/s maximum :

trickle -u 60 ncftp -u utilisateur hôte

On peut aussi limiter en réception via l'option -d qui fonctionne de la même manière, bien entendu on peut combiner l'utilisation des deux options

Limitations

Ce programme sert a placer des limites, mais il est lui même aussi limité (un peu) :

  • Il ne peut uniquement géré le protocol TCP. Cela veut dire qu'il ne pourr rien faire avec les connexion UDP.
  • Il doit utiliser la couche libc, pour voir si votre programme s'en sert, vous pouvez faire : ldd /usr/bin/ncftp|grep libc il devrait retourner : libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7e0c000)