Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

If I have two NICs in my system and both are connected to different ISP with different IP addresses, can I distribute my network traffic on them to increase my Bandwidth. I have already looked at solutions like net-bonding, where we create a logical interface presented to the applications and the two NIC are bonded together.

Also I have seen solutions which uses SCTP or SCPS-TP protocol instead of TCP.

My predicament is that I have to use a solution present in the application domain. Suppose I am writing a software for multiple client systems, I would not want them to change their tcp with sctp or go too deep with bonding (also with netbonding, it works only if the IPs are from the same network).

What are the critical issues in designing such a solution?

share|improve this question
    
which end is initiating the connections? i.e. is your machine the client or server? –  Alnitak May 13 '09 at 9:49
add comment

5 Answers

Since they're on distinct networks, there isn't a way to aggregate or bond the two connections together, however you can load balance the outgoing connections so that the first TCP/IP request goes out Interface a, the second out Interface B, third out a... etc.

Unfortunatly you didn't state what OS you're using, as I don't know how to do this in Windows / MacOS / Solaris / etc, i'll only link to the linux solution.

Here's a guide for settings up the routes on linux

You should be able to do similar on the outbound setting up the routing on whatever OS it is.

On the other hand, if you need to load balance the incomming connections, the suggest for round robin DNS is the proper solution that Adam Davis suggested.

Wikipedia on round-robin DNS

share|improve this answer
add comment

Probably the cheapest way to do that is to use DNS in a round robin fashion.

Don't bond the two interfaces - let them have different IP addresses, and set up the DNS servers to alternate between the two IP addresses.

It's not in the application domain as you requested, but it might actually be easier to do.

-Adam

share|improve this answer
add comment

In software you could try doing some stuff with routing, I'm not entirely sure how any OS would handle two routes with the same metric (cost). Assuming your system is set up with a default gateway of 192.168.0.1, the following command (Windows) would configure a second default gateway of 192.168.0.2

ROUTE ADD 0.0.0.0 MASK 0.0.0.0 192.168.0.2 METRIC 20

Hardware would be a more reliable solution as there's no need to reconfigure individual systems. Basically you'll want a Twin WAN router with load-balancing capabilities.

You question isn't very clear about if this is for incoming traffic (server) or outgoing traffic (application). If you're dealing with incoming traffic, then as Adam suggested Round Robin DNS is the easiest solution.

share|improve this answer
add comment

Although it might be more time/money than you're looking for, the hardcore solution is to use BGP. With BGP peering, you apply for and receive your own IP address range. This IP range then applies only to you, and has nothing to do with your ISP. Both your ISPs can then direct traffic to you at the same time, because they both know about your IP range.

http://en.wikipedia.org/wiki/Border_Gateway_Protocol

share|improve this answer
add comment

I have always had the best luck running this through a dual wan router like one of the many DrayTek devices. These work fine for typical web surfing but you have to worry about more advanced applications that are session-aware or checking referring IP address. In certain instances such as VPN connectivity or voip/video conferencing you might run into connectivity issues which negate the benefits of the increased bandwidth. Generally you can get around this by statically assigning ports to a single connection.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.