Existe-t-il un moyen de limiter la bande passante sur une carte réseau sous Linux? Je voudrais pouvoir simuler une connexion arbitrairement lente.
Existe-t-il un moyen de limiter la bande passante sur une carte réseau sous Linux? Je voudrais pouvoir simuler une connexion arbitrairement lente.
Réponses:
Le module de noyau netem , contrôlé par iproute.
Vous devez compiler Netem avec le noyau:
Networking -->
Networking Options -->
QoS and/or fair queuing -->
Network emulator
Une fois le module netem chargé, le tc d’iproute vous permet des choses comme:
tc qdisc add dev tap0 root netem delay 50ms loss 50%
(50% de perte de paquet, délai supplémentaire de 50 ms)
sch_netem
. Généralement, il n'est pas nécessaire de le charger manuellement, il sera chargé automatiquement selon les besoins.
rate
option de : tc qdisc add dev lo root handle 1:0 netem delay 10ms rate 1mbit limit 1000
. Notez que pour certains appareils tels que lo
(pour accéder à localhost), vous devez définir la longueur de la file d' attente ainsi: ifconfig lo txqueuelen 1000
. Voir serverfault.com/a/394949/76090
Côté client, non?
filet doit faire ce que vous voulez. Si vous utilisez Ubuntu (ou Debian, je pense), vous pouvez l’installer avec sudo apt-get install trickle
, puis l’exécuter. trickle -s -d 10 -u 10 firefox
(ou alors, je ne l'ai pas utilisé depuis un moment) fonctionnerait sous firefox, limitant son téléchargement et sa vitesse de chargement à 10 kilo-octets par seconde.
J'ai trouvé un moyen d'éviter à ma boîte de consommer toute la bande passante disponible sur le réseau en utilisant un outil appelé "wondershaper" dans Ubuntu. J'espère qu'il en existe aussi dans d'autres destros Linux. Je peux limiter la bande passante que mon ordinateur à la maison Linux peut consommer en utilisant la commande suivante.
sudo wondershaper eth0 1000 200
Cela limite la limite de téléchargement à 1000 kilobits et l’uplaod à 200 kilobits. Reportez-vous aux pages de manuel de wondershaper pour plus d'informations / options.
wondershaper
dans Debian.
sudo wondershaper clear eth0
NIST fabrique un simulateur de réseau appelé NistNet.
http://snad.ncsl.nist.gov/nistnet/ (le lien semble mort)
http://cs.ecs.baylor.edu/~donahoo/tools/nistnet/
NistNet vous permet de créer un routeur qui émule un lien de communication de votre choix.
Pour une utilisation plus simple, vous l'avez sur un boîtier avec deux cartes d'interface réseau entre deux réseaux.
Par exemple, j'avais une application qui devait fonctionner sur une liaison par satellite.
Les données peuvent passer par le lien 2Mbps avec une latence BIG. Le contrôle devait passer par une liaison à 128 kbps, avec la même latence.
NistNet a contribué à ce que tout fonctionne à 128 kbps.
En utilisant NistNet, je pouvais simuler non seulement la bande passante, mais également la latence, et supprimer des paquets pour vous, simulant ainsi un lien occupé ou peu fiable.
Si vous souhaitez simuler une connexion aléatoire, ne limitez pas simplement la bande passante, augmentez également le temps de latence.
N'oubliez pas de fragmenter les paquets non plus. Vous pouvez définir de belles petites MTU sur le faux lien.
L'ajout de gigue de paquet par le IIRC vous permettra de savoir si vous pouvez gérer des paquets en désordre.
Dans le passé, j’ai personnellement utilisé WonderShaper pour cela, bien que cela ait été écrit pour un cas d’utilisation contraire: tirer le meilleur parti de votre connexion ADSL.
Je vais devoir essayer les autres mentionnés ici cependant.
Vous pouvez utiliser le proxy squid installé localement pour limiter la bande passante, par exemple pour tester une page Web sur un lien lent:
Installez le proxy squid depuis votre distribution - sur mon Fedora, c’était aussi simple que yum install squid
.
Ajouter ce qui suit à /etc/squid/squid.conf
:
delay_pools 1
delay_class 1 1
delay_access 1 allow all
delay_parameters 1 16000/16000
Cela limitera la bande passante à environ 128 kbps (16 000 bps).
Commencez calmar :/etc/init.d/squid start
Configurez votre navigateur pour utiliser le localhost
port du serveur proxy 3128
.
Personne n'a encore mentionné ip_relay , nommé "iprelay" dans les référentiels Debian. Il fonctionne comme un proxy TCP, plutôt que d’intercepter les appels comme il le fait souvent , et fonctionnera avec toutes les applications pouvant utiliser un proxy (par exemple un navigateur Web) ou accepter un port de destination défini par l’utilisateur (telnet, ssh, ftp, curl, etc.). et cetera ).
C'est un peu plus difficile à mettre en place, mais ça marche souvent dans des situations où le filet ne va pas.