How To Get Reliable & Affordable Broadband in India

By Angsuman Chakraborty, Gaea News Network
Sunday, July 29, 2007

Broadband service in India is much less reliable than their counterparts in USA. While in USA, I used Pacific Bell 1.5 Mbps connection for 3 years without a single minute of downtime or any other problems. This was back in 1998-2001. In India unlimited (marginally @ 256 Kbps - bits per second) broadband service came much later. There are three major players in the market: BSNL DataOne Broadband (unique in providing zero customer support), Tata Indicom Broadband (personal experience so far), Airtel Broadband, all ADSL technology based. I also used cable Broadband (read narrowband) from Alliance Broadband (more). However even with such low end services (in terms of unlimited bandwidth & reliability) you can forge a reliable and yet affordable broadband solution for your business or home (gaming & MMORPG?). The solution is simple.

Update:
Please read: How To: Load Balancing & Failover With Dual/ Multi WAN / ADSL / Cable Connections on Linux for the simplest solution. Please read below to gain a better perspective on the possibilities.

—Original post below—
First you need to get broadband service from multiple providers, preferably at identical connection speed. I am currently using BSNL DataOne broadband unlimited plus connection and Tata Indicom postpaid unlimited broadband connection. I am planning to add Alliance Broadband soon to the mix. So now you have 2-3 redundant connections to the internet. How do you leverage their full bandwidth and increase your reliability?

The key objective is to uniformly route your internet traffic (incoming & outgoing) traffic through all the available connections and to transparently remove providers with connection problems and then add them again when they are able to connect. This will ensure transparent fail-over and hence redundancy to your internet connectivity. There are broadly two solutions.

The first solution is to add static routing information in your Firewall / Router machine to route the traffic through multiple connections. However as route information is cached in Linux, when a connection goes down it may take sometime for connection to a particular site to be restored.

As the route information is cached you cannot use this scheme to speed up connection to any particular site. However your total broadband throughput will be doubled at maximum capacity. It is somewhat like the Core 2 Duo machines where your speed isn’t doubled but multiple threads in a multi-threaded application can fully leverage both the cpu’s. So while you will not gain in downloading speed using download accelerators when it opens multiple connections to the same site, its speed will effectively double when mirror urls are used for downloading the same content in chunks. The load balancing works but is less than optimum.

To achieve proper load balancing you should apply Anastasov’s patches to the Linux kernel. These patches extend the routing functionality in Linux to support static routes (defined by user), new way to use the alternative routes, the reverse path protection (rp_filter), the NAT processing to use correctly the routing when multiple gateways are used. You can read the user guide on configuring Linux with multiple gateway connection (here) and dead gateway detection (here).

Along with NAT with this solution all your machines will have fully transparent access to the internet.

The second solution would be to use a firewall or proxy server which can effectively route between multiple connections. I am yet to explore this space but one software I would suggest you look into is Squid proxy server. Squid can also be configured to provide transparent connection to the internet (requires no configuration on your browser) using it as interception proxy. Additionally squid provides caching for faster access and allows you to control /monitor access to pornographic and other sites. I am sure there is a way to configure squid for multiple connections. In case there isn’t a simple way, it would take any experienced developer few hours to write such a load balancing proxy. Personally I would write mine in Java if I don’t find any good solution on the net.

The third solution would be to use different machines for connection and then use a browser configuration file (pac file) to redirect the connection to a chosen connection using a random or weighted algorithm. Both Internet Explorer and Firefox can be configured with a pac file.
This solution can take care of unavailable gateways and also achieve proper load balancing. I have tested this option before with success.
This is probably the easiest solution for Windows user followed by the proxy server option above.

Let me know what is your experience / guidance on this topic.

YOUR VIEW POINT
NAME : (REQUIRED)
MAIL : (REQUIRED)
will not be displayed
WEBSITE : (OPTIONAL)
YOUR
COMMENT :