Bandwidth Throttling and Connection Limiting for Web, Proxy and Email Servers


Aim
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.

Resources

The key features are
  1. Set the maximum number of con-current connections. Similar to apache's MaxClients.
  2. Set maximum con-current connections per ip. Similar to conn-limit in iptables.
  3. Set the new connection burst and average connections per second per ip. Similar to limit-burst in iptables.
  4. Set the uplink and downlink throughput per ip. The throughput will be divided amongst the concurrent connections per ip.
  5. Once a certain amount of bytes has been uploaded/downloaded drop the available throughput for a time period.
  6. Written in simple, easy to understand C.
  7. 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.

SpeedBump will now reject all connections above the connection limit and throttle the bandwidth used by the greedy user. This reduces the load on the web/proxy server and gives a consistent experience to all the users.

    4 comments:

    Naviya Nair said...

    Very interesting and good Explanation
    ASP NET Training
    ASP NET Training
    ASP NET Online Training
    C-Sharp Training
    Dot Net Training in Chennai
    Online .Net Training


    MVC Training
    WCF Training
    Web-API Training
    LINQ Training
    Entity Framework
    Training

    Dot Net Interview Questions

    Tina Kenard said...

    Nice post! .Net is most preferred programming language among software developers all over the world. It is also considered as most trusted and effective platform to build high performing desktop or enterprise application. DOT NET Training Institutes in Chennai|DOT NET Training in Chennai

    jowdjbrown said...

    It will work with any server such as tomcat, apache, glassfish, squid, weblogic etc as it runs as a separate standalone application. fast vpn

    Rasool Bevi said...

    Informative post, keep sharing more :)
    Regards,
    PHP Training in Chennai|PHP Course in Chennai