Simulating a bad internet connection

If you have a Mac handy, Macs have kernel facility called dummynet built in, which you control through ipfw. It allows you to simulate a slow connection, randomly drop packets with certain probabilities, and more.

The same facility exists in Linux and other OSes.

From the dummynet homepage:

As of Feb.2010 we have released the third major version of dummynet,
which now runs on all main platforms: FreeBSD, Mac OS X as part of the
native distributions, and you can find Linux, OpenWRT and Windows
versions here.

It can do a lot for you:

limit the total incoming TCP traffic to 2Mbit/s, and UDP to 300Kbit/s

ipfw add pipe 2 in proto tcp
ipfw add pipe 3 in proto udp
ipfw pipe 2 config bw 2Mbit/s
ipfw pipe 3 config bw 300Kbit/s

limit incoming traffic to 300Kbit/s for each host on network 10.1.2.0/24.

ipfw add pipe 4 src-ip 10.1.2.0/24 in
ipfw pipe 4 config bw 300Kbit/s queue 20 mask dst-ip 0x000000ff

simulate an ADSL link to the moon:

ipfw add pipe 3 out
ipfw add pipe 4 in
ipfw pipe 3 config bw 128Kbit/s queue 10 delay 1000ms
ipfw pipe 4 config bw 640Kbit/s queue 30 delay 1000ms

Leave a Comment