Question: I'm setting up an offsite DR facility on a budget. The office has 2 ADSL lines coming in to identical router/modem devices.

I'm looking for a cost effective (cheap) way of joining the two connections so that the network only sees one link to the outside world.

Primarily I'm looking for ADSL failover as opposed to load balancing and bonding but if the solution does all theree then that's fine.

Is anyone aware of a device that does this, or alternatively software that could be installed on a PC with multiple NIC's to manage this sort of thing?

Thanks in advance.

Answer: 
You can install OpenBSD on old PC and use [CARP](http://www.openbsd.org/faq/pf/carp.html) (as Warner mentioned) or [uCARP](http://www.ucarp.org/project/ucarp) (for non-OpenBSD :).

<http://meinit.nl/openbsd-loadbalancing-and-failover-relayd-pf-and-carp>

I wanted to use two ADSL lines a year ago but provider dropped prices so I didn't accomplished this.
You are best off focusing on network protocols for your type of implementation.

Typically [Border Gateway Protocol](http://en.wikipedia.org/wiki/Border_Gateway_Protocol) (BGP) is among the ideal solution for managing dynamic network routing but this is unlikely an option with your DSL connections. Nevertheless, this would be the first choice for different types of Internet connections.

Be aware of single points of failure. A single switch, cabling, all interfaces, and devices that are shared between your two connections. Consider all failure points and types of failure to eliminate risk where possible.

[HSRP](http://en.wikipedia.org/wiki/Hot_Standby_Router_Protocol) would be among your potential solutions. HSRP is a Cisco protocol but there are alternative implementations that can be implemented on Open Source operating systems, such as [CARP](http://en.wikipedia.org/wiki/Common_Address_Redundancy_Protocol) or [VRRP](http://en.wikipedia.org/wiki/Virtual_Router_Redundancy_Protocol). You would want to track both the internal and external interfaces to attempt to mitigate a single point failing without failover.