Fog Creek Software
g
Discussion Board




Simulate Slow Network Connection

This seems like it would be a common problem, but I can't seem to come up with an easy answer.

We'd like to test our "smart client" (aka client/server) .NET/MS SQL Server application over a range of network connection speeds. We'd like to try anything from 56k to gigabit.

Does anyone know of a way to easily to this?  I'm thinking of two possible ways to do it, but I don't know which tool would help me accomplish this:

1. Somehow configure VMWare to throttle back it's virtual ethernet card to connect to the "outside the virtual machine" world. Running the client on the VMWare OS, tying into a server on the development machine would allow the test.

2. Throttle back the ethernet card on my machine. My development machine would then connect to the server on another box on the network to simulate the slow connection speed.

I like the idea of the VMWare solution, but haven't found any documentation that this is possible.

Does anyone know of a way to accomplish what I want to do?

Thanks!
Dave

Dave
Friday, December 12, 2003

Why is it that it's not until reading your post three times, posting it, then reading it again, that you come up with typos?

"to" should be "do" in the 1st sentence of paragraph 3.

"it's" should be "its" in the first sentence of point 1.

Dave
Friday, December 12, 2003

I should point out that we're not using a Web service; we're connecting the client directly to SQL Server.

Dave
Friday, December 12, 2003

Whittaker's book "How to Break Software Security" comes w/ an app, "Holodeck", on CD that can simulate network slowdowns by futzing w/ packet transmission.  I've not used it (and it's probably Windows-only if that's a factor to you).

http://www.sisecure.com/holodeck/holodeck-trial.aspx

Tom
Friday, December 12, 2003

I've heard good things about NetLimiter, which costs $30:

http://www.netlimiter.com

Herbert Sitz
Friday, December 12, 2003

Google for:

dreamteam

and

Shunra

I started investigating these but I haven't used either yet.

pdq
Friday, December 12, 2003

Ideally find a tool that will take into account both latency and the actual transmission speed. If there is a lot of back and forth communications latency will matter as much if not more.

billm
Friday, December 12, 2003

Our QA dept use "The Cloud" WAN simulator - it seems to work pretty well.  It simulates latency, restricted bandwidth packet loss and the like.  A quick google search found this PDF:- http://www.quality-net.co.jp/images/PDF/cloud2specs.pdf

r1ch
Friday, December 12, 2003

i believe honeyd can also handle this by creating a virtual network, i've never used it however.

mb
Friday, December 12, 2003

There are freely available programs on the internet which will do this for you.

Simply remove your firewall and leave your PCs unpatched.  Your network will slow to a crawl within a few hours.  =-)

Alyosha`
Friday, December 12, 2003

Another option is to put 2 ethernet cards in a Linux box, put said box between your app and the SQL server, then use netfilter to throttle the connection.

Snotnose
Friday, December 12, 2003

You want either NISTNet (Linux) or dummynet (BSD).  There are floppy images out there for dummynet, don't know for NISTNet.  Both are free, both will play with latency and throughput.

I believe dummynet could do slightly more when I last looked.  NISTNet does have an available GUI, but it seemed unstable when I last used it.  It can also be used via command line, which is dummynet's only option.  Dummynet, at least, can be used in routing or bridging mode.

Rich
Friday, December 12, 2003


For yet another option, I think that you can use Squid to do this. It's the "Delay Pool" functionality:

http://www.squid-cache.org/Doc/FAQ/FAQ-19.html#ss19.8

Bill Tomlinson
Friday, December 12, 2003

Check out the strangely named "Charles"  http://www.xk72.com/charles/index.html

It's a network proxy for windows that enables you to throttle your connection to any speed and has a kind of packet sniffer for http too.

Matthew Lock
Friday, December 12, 2003

This seems to go against the grain of the responses so far, but why not just *try it*?  You want to test speeds up to a gigabit, so I assume you have a gigabit network in place.  Test it like that, then stick a 100mbps switch in the middle somewhere (I assume your gigabit stuff will throttle back when connected to a lower speed network), then a 10mbps switch, and then connect via dial up.  You'll then be 100% certain that your program does or does not work at these speeds.


Saturday, December 13, 2003

See dummynet.

They offer a bootup from floppy disk that essentially turns a machine into a FreeBSD based router where you can play with network speeds, mtu sizes, and all sorts of other fun this.

SG
Saturday, December 13, 2003

Thank you for all of the great feedback. The most critical area for us to test is the 128k - 1Mb range, so that WAN simulator sounds like it may be a good bet.

I should have pointed out that we're trying to figure out what to tell clients when they start asking, "If I want to connect directly over my WAN, what is the minimum speed, and how many users will that handle?

Thanks, all!

Dave

Dave
Monday, December 15, 2003

*  Recent Topics

*  Fog Creek Home