http://webcache.googleusercontent.com/search?q=cache:YJ8bhlD...
You need to install the drivers but once done you effectively use the same commands with ipfw as on FreeBSD (as described in another thread http://news.ycombinator.com/item?id=2005190). I just used it for the first time the other day to test a web app browsing with a 400ms delay on a WinXP machine. It worked like a charm.
Basically you want full control over your simulation parameters.
Mostly to simulate the real-world UX of ajax sites that have a lot of server roundtrips.
It's vital in these kind of interfaces for everything to happen before the magic 150ms threshold of perceived instantaneousness.
Watch latency kill performance.
Project page: http://www.openflowswitch.org/foswiki/bin/view/OpenFlow/Mini...
Paper: http://conferences.sigcomm.org/hotnets/2010/papers/a19-lantz...
Other similar projects:
* http://clownix.net/
* http://www-x.antd.nist.gov/nistnet/It is (was) not the only implementation of the idea that is as basic as it is extremely useful for testing in complex network setups.
All network stack variables (i.e. settings and state) are gather in one big struct and all network stack functions operate exclusively on the contents of this stack. Every process has one stack instance assigned to it by default and it may switch to another instance at any time. There are no changes to any socket-level API, all calls function exactly as before, but they are executed in the context of process' effective stack.
Process' default stack is inherited from the parent process, and this makes it trivial to run any existing application in a context of specific stack (by launching it from a process that selects desired stack and then does the exec).
At the bottom each stack connects to one or more network interfaces. Stacks may connect to the physical devices (multiple stacks per device is OK as long as it supports promiscuous mode), or they may connect to a virtual interface. Virtual interfaces in turn may have their inputs and outputs meshed together via hubs, switches or direct links, all of which may in turn be configured to emulate packet loss, latency, jitter and what not.
That's your basic network stack virtualization. Functioning version can be assembled from a forked Linux source in a couple of weekends. If only someone would bother submitting the patch after that :)
ip link set lo mtu 1500http://www.linuxfoundation.org/collaborate/workgroups/networ...
sudo ipfw pipe 1 config bw 50KBytes/s delay 100ms
sudo ipfw add 1 pipe 1 src-port 80
sudo ipfw add 2 pipe 1 dst-port 80
But don't forget to disable it! sudo ipfw delete 1
sudo ipfw delete 2 iprelay -b30000 8000:localhost:80