I\'m developing an embedded device which has access to the internet through LAN. I\'m in the testing phase now, and I would like to test how the device performs when the connect
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