Simulation d'une connexion réseau à faible bande passante et à latence élevée sous Linux

19

Je voudrais simuler une connexion réseau à haute latence et faible bande passante sur ma machine Linux.

Limiter la bande passante a déjà été discuté, par exemple ici , mais je ne trouve aucun article qui traite de la limitation de la bande passante et de la latence.

Je peux obtenir une latence élevée ou une bande passante faible en utilisant tc. Mais je n'ai pas pu les combiner en une seule connexion. En particulier, l'exemple de script de contrôle de débit ici ne fonctionne pas pour moi:

# tc qdisc add dev lo root handle 1:0 netem delay 100ms 
# tc qdisc add dev lo parent 1:1 handle 10: tbf rate 256kbit buffer 1600 limit 3000
RTNETLINK answers: Operation not supported

Comment puis-je créer une connexion à faible bande passante, à latence élevée, en utilisant tcou tout autre outil facilement disponible?

Justin L.
la source
1
avez-vous essayé de combiner des approches à partir de vos liens, par exemple. utiliser tc pour la latence et un filet pour la bande passante? (C'est plus laid que de simplement utiliser tc, mais cela pourrait quand même fonctionner;)
Andy
C'est une bonne idée (et, en effet, le filet ajoutera même de la latence), mais malheureusement, Firefox ne se charge pas sous le filet, et c'est ce que je dois tester.
Justin L.

Réponses:

15

Ah! Cela fonctionne si nous inversons l'ordre des commandes.

tc qdisc add dev lo root handle 1: htb default 12 
tc class add dev lo parent 1:1 classid 1:12 htb rate 20kbps ceil 20kbps 
tc qdisc add dev lo parent 1:12 netem delay 1000ms 

https://lists.linux-foundation.org/pipermail/netem/2010-May/001388.html

Justin L.
la source
Toute personne intéressée à savoir pourquoi, il semble que le qdisc netem ne peut pas être un parent, vous devez donc réorganiser la hiérarchie pour l'avoir comme nœud feuille.
Andy
3
Notez que la limite de bande passante est dans une seule direction (sortante). Vous devez faire un travail supplémentaire pour que cela se produise dans les deux sens (en utilisant apparemment ifb). linuxfoundation.org/collaborate/workgroups/networking/…
Roger Binns
Je suis tombé sur cela en essayant de grok tc. D'après ce que j'ai lu, la première ligne crée 1: 0, mais la deuxième ligne fait référence à 1: 1? (probablement ma compréhension qui est fausse - mais j'ai regardé beaucoup de pages en essayant de comprendre comment les classes / qtdiscs sont numérotées)
symcbean
1

Ce n'est pas gratuit, mais Charles Web Debugging Proxy peut simuler des connexions à faible bande passante et à latence élevée

http://www.charlesproxy.com/documentation/proxying/throttling/

Matthew Lock
la source
Chose intéressante, je fais cela pour le débogage Web. Mais il doit sûrement y avoir un moyen de le faire sans dépenser d’argent. :)
Justin L.
Malheureusement, Charles ne semble pas fonctionner avec le trafic local. Il meurt lorsque j'essaie d'accéder à 192.168.1.1 via le proxy.
Justin L.
2
Ou utilisez simplement WANEm, gratuitement: wanem.sourceforge.net
Nathan Kidd