Simulating a low-bandwidth, high-latency network connection on Linux
Solution 1
Aha! It works if we reverse the order of the commands.
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
Solution 2
It's not free, but the Charles Web Debugging Proxy can simulate low bandwidth high latency connections
http://www.charlesproxy.com/documentation/proxying/throttling/
Related videos on Youtube
Justin L.
Updated on September 17, 2022Comments
-
Justin L. over 1 year
I'd like to simulate a high-latency, low-bandwidth network connection on my Linux machine.
Limiting bandwidth has been discussed before, e.g. here, but I can't find any posts which address limiting both bandwidth and latency.
I can get either high latency or low bandwidth using
tc
. But I haven't been able to combine these into a single connection. In particular, the example rate control script here doesn't work for me:# 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
How can I create a low-bandwidth, high-latency connection, using
tc
or any other readily-available tool?-
Andy almost 14 yearshave you tried combining approaches from your links, eg. use tc for latency and trickle for bandwidth? (It's uglier than just using tc, but might still work;)
-
Justin L. almost 14 yearsThat's a good idea (and, indeed, trickle will even add latency), but unfortunately Firefox doesn't load under trickle, and that's what I need to test.
-
-
Justin L. almost 14 yearsInterestingly enough, I'm actually doing this for web debugging. But surely there must be a way to do this without spending money. :)
-
Justin L. almost 14 yearsSadly Charles doesn't seem to work with local traffic. It dies when I try to access 192.168.1.1 through the proxy.
-
Andy almost 14 yearsAnyone interested as to why, it seems that the netem qdisc cannot be a parent, so you have to rearrange the hierarchy to have it as a leaf node.
-
Roger Binns over 11 yearsNote that the bandwidth limit is in one direction only (outgoing). You have to do additional work to make it happen in both directions (apparently using ifb). linuxfoundation.org/collaborate/workgroups/networking/…
-
symcbean about 11 yearsCame across this when trying to grok tc. From what I've read the first line creates 1:0, but the second line refers to 1:1? (probably my understanding which is wrong - but I've peered at lots of pages trying to understand how classes/qtdiscs are numbered)