The following notes are pretty out of date now. The linux kernel has native bonding support, which covers ALB and so on, as well as 802.3ad and other forms of switch-dependant trunking. See LinuxEthernetBonding and 802.3ad for more information
As far as I know, Intel Etherexpress PRO100 and their brethren are the only adapters that support fault tolerance, load balancing, and other "teaming" features under Linux.
These teaming features allow the following:
AFT: Adapter Fault Tolerance. In this mode, one NIC in the "team" (designated the primary) is always active. If a fault occurs (cable, switch/hub port, or adapter), any one of the designated secondary cards in the team takes over.
ALB: Adaptive Load Balancing. In this mode, the primary adapter transmits and receives, and the transmit mode is shared among all team member adapters. Fault tolerance is included as above.
There are other modes available, such as ILA and FEC/GEC, but these rely on your switch supporting the features, and thus I will not document them here - excellent documentation is available at Intel.com if you do wish to implement these modes.
The steps to implement this are fairly simple, once you actually find out that it can be done!
NOTE: You will need to have the kernel source installed.
1. Download the latest drivers and iANS software from intel. Search on your adapter, and Linux to find, as they move these frequently!
2. Build the driver first, install and test.
3. Untar the iANS software, cd to install_scripts/<Your Distro>/ and run ./INSTALL
4. Follow the prompts!
When complete, you should have a new interface with the name you gave it in step 4 (I used alb0), and should now be able to ping an IP on your LAN while removing cables with no loss in connectivity! :)
lib/main.php:944: Notice: PageInfo: Cannot find action page