The aim of this program is to create a self regulating tcp/ip connection forwarding program that can limit connections and do per IP bandwidth throttling and connection limiting. This can be used to give bandwidth throttling and connection limiting to proxy, email, web and ftp servers. It will work with any server such as tomcat, apache, glassfish, squid, weblogic etc as it runs as a separate standalone application. This software is now called SpeedBump. This can be easily used to throttle Apache and Squid very easily.
- Project Kimbula. - Project hosted on google's code hosting
- Download Source Now - Download source code.
The key features are
- Set the maximum number of con-current connections. Similar to apache's MaxClients.
- Set maximum con-current connections per ip. Similar to conn-limit in iptables.
- Set the new connection burst and average connections per second per ip. Similar to limit-burst in iptables.
- Set the uplink and downlink throughput per ip. The throughput will be divided amongst the concurrent connections per ip.
- Once a certain amount of bytes has been uploaded/downloaded drop the available throughput for a time period.
- Written in simple, easy to understand C.
- Add and remove headers for upstream and downstream connections
Let us look at a typical scenario below. One user has opened up a lot of connections to the server and is downloading or uploading a lot of data.
The server now has less connections available for the other users and the most of the bandwidth is being used by the one greedy user. This usually results in a poor experience for other users.
Now we bring in the SpeedBump. This can be located on a seperate server or co-located with the existing server. For purposes of illustration let us show them on separate servers. Now all the connections have to first go through SpeedBump before they can get to the server.