Fog Creek Software
Discussion Board

Tool for limit network bandwidth for testing

I need to emulate a certain bandwidth to test our software. Do you know some free software which can easily do that? Eg. I want to install it on my machine, and it slows downs my max bandwidth to 256 Kbits.


Friday, February 6, 2004

The weirdly named "Charles" will do that

Matthew Lock
Friday, February 6, 2004

Newer Linux kernel can do that, though it's not very straightforward.

Egor Shipovalov
Friday, February 6, 2004

My kids can do that.

Friday, February 6, 2004

> My kids can do that.

It's just a touch difficult to stuff their heads down the wires in order to block them up.

Friday, February 6, 2004

The word or technique you are looking for is "throttling", once you know this you can find tools that will throttle throughput artificially for your network programs. Search for that keyword, like

benchmark, throttling, stress test, web server (and variations of these keywords)

on google and see what you get.

What throttling does is make your client tcp/ip application (or server tcp/ip application) artificially refuse (by waiting for a certain amount of time) to send out thouse udp/tcp packets even though the server/network has indicated in everyway that bandwidth is clearly under utililizes--thus simulating slow sends and receives.

thttpd is one of those mini webservers that is capable of doing this, if you like reading code.

Li-fan Chen
Friday, February 6, 2004

We've done it here with leased line routers which have a sync port on the back and sync null modem.

In practice latency is more likely to be a bigger killer and thats independent of line speed (see below)

If we assume that packets travel at the speed of light * 0.6 (I think thats right for optical cables)
This means they travel at 0.6 * 3*10^8 m/s so to travel 1000 Km (10^6m) (approx 600-700 miles) they'll take
1/ (0.6 * 3 *10 ^2) seconds to do so which is approximately 5ms.  So for a packet to go across america from NY to LA (4000Km) and get a response back will take 40ms. From here in London to joels servers (NY I assume ) I get ping times of 104ms when best case would suggest I should get 60ms.
In fact on the stretch across the atlantic (i.e. when it leaves my ISPs london base to their NY peer) I get times of around 70ms, so a good proportion of the delay is "local" to me.

This means that if you're writing comms protocols it's vital to keep sending stuff rather than a simple send a packet, wait for acknowledgement type stuff.

Often for database apps this translates into don't send just one record, send twenty.

Peter Ibbotson
Friday, February 6, 2004

lots of virtual network simulators should be able to do that. never set one up myself, though i've wanted to.

honeyd was one of the first. a few others are mentioned in this article:

Friday, February 6, 2004

I seem to remember someone else asking this, but can't find it in the search.  It looks like you're looking for a single peice of software to install on your box, from your question.  I don't know that, but if you're looking to stick a device in between two other network devices I'd look at NISTNet on Linux or Dummynet on BSD.

Saturday, February 7, 2004

hi, i wanted something like that too but what i wanted it for was to limit bandwidth going out to a certain amout to a seprate machine where there is a home internet connections being shared.

amyn lakhani
Saturday, March 13, 2004

*  Recent Topics

*  Fog Creek Home