Simulating a low-bandwidth, high-latency network connection on Linux
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?
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/