Bonding
In Linux bonding is integrated into the kernel since version 2.0 as a loadable kernel module in most moder Linux distributions.
Modes
To define the behavior of the single logical bonding interface the driver mode is used.
Linux supports the following modes [1]:
Round-robin (balance-rr)
Packets get transmited in sequential order. While starting from the first available slave to the last.
Active-Backup (active-backup)
One slave is active at a time and a new slave becomes active if the active slave fails. The MAC address of the bond is only visible on one port.
XOR (balance-xor)
In this mode the transmit is based on a hash policy. The default ist:
(source ⊕ destination) % n_slaves.
Broadcast (broadcast)
All packages are transmited on all slave interfaces.
802.3ad Dynamic link aggregation (802.3ad)
Aggregatoin groups are created that share the same speed and duplex settings. All slaves in the active aggregator are used in accordanse with 802.3ad.
Adaptive transmit load balancing (balance-tlb)
Channel bonding has no requirement for special switch support. Outgoing traffic gets distributed in accordanse with the current load on each slave. The current slave receives incomming traffic and in case of failure the MAC address get transfered to another slave, which takes over.
Adaptive load balancing (balance-alb)
This mode is based on adaptive transmit load balancing and also includes load balancing for receiving of IPV4 traffic. It also does not require a special switch. Load balancing on the receive is achieved via ARP[2] (Address Resolution Protocol) negotiation.