Simulation einer Netzwerkverbindung mit geringer Bandbreite und hoher Latenz unter Linux

19

Ich möchte eine Netzwerkverbindung mit hoher Latenz und geringer Bandbreite auf meinem Linux-Computer simulieren.

Die Begrenzung Bandbreite wurde bereits diskutiert, zum Beispiel hier , aber ich kann keine Beiträge finden , die Adresse sowohl Bandbreite und Latenz zu begrenzen.

Ich kann entweder hohe Latenz oder niedrige Bandbreite verwenden tc. Aber ich konnte diese nicht zu einer einzigen Verbindung zusammenfassen. Insbesondere funktioniert das Beispiel-Skript zur Ratensteuerung hier nicht für mich:

# 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

Wie kann ich eine Verbindung mit geringer Bandbreite und hoher Latenz mithilfe tceines anderen sofort verfügbaren Tools erstellen ?

Justin L.
quelle
1
Haben Sie versucht, Ansätze aus Ihren Links zu kombinieren, z. Verwenden Sie tc für Latenz und Rinnsal für Bandbreite? (Es ist hässlicher als nur mit tc, könnte aber immer noch funktionieren;)
Andy
Das ist eine gute Idee (und Rinnsal wird sogar die Latenz erhöhen), aber leider wird Firefox nicht unter Rinnsal geladen, und das muss ich testen.
Justin L.

Antworten:

15

Aha! Es funktioniert, wenn wir die Reihenfolge der Befehle umkehren.

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.
quelle
Alle, die sich dafür interessieren, dass die netem qdisc kein übergeordnetes Element sein kann, müssen die Hierarchien neu anordnen, um sie als Blattknoten zu haben.
Andy
3
Beachten Sie, dass das Bandbreitenlimit nur in eine Richtung (ausgehend) gilt. Sie müssen zusätzliche Arbeit leisten, um dies in beide Richtungen zu erreichen (anscheinend mit ifb). linuxfoundation.org/collaborate/workgroups/networking/…
Roger Binns
Kam über diese beim Versuch, tc grok. Nach dem, was ich gelesen habe, erzeugt die erste Zeile 1: 0, aber die zweite Zeile bezieht sich auf 1: 1? (Wahrscheinlich ist mein Verständnis falsch - aber ich habe auf vielen Seiten nachgesehen, um zu verstehen, wie Klassen / Qtdiscs nummeriert sind)
symcbean
1

Es ist nicht kostenlos, aber der Charles Web Debugging Proxy kann Verbindungen mit hoher Latenz und niedriger Bandbreite simulieren

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

Matthew Lock
quelle
Interessanterweise mache ich das eigentlich für das Web-Debugging. Aber es muss doch einen Weg geben, dies zu tun, ohne Geld auszugeben. :)
Justin L.
Leider scheint Charles nicht mit dem lokalen Verkehr zu arbeiten. Es stirbt, wenn ich versuche, über den Proxy auf 192.168.1.1 zuzugreifen.
Justin L.
2
Oder nutzen Sie WANEm kostenlos: wanem.sourceforge.net
Nathan Kidd