Explanation of Network Bonding and its types in Linux.
The process of combing two or more network interfaces together to form a single interface is known as network bonding.
In Linux, we usually combine two ethernet interfaces to create a single bond interface.
However there can be two or more network interfaces can be connected into a single logical “bonded” interface.
a. Benefits of Bond Interface(varies as per different bonding types)
1. Performance Improvement :- Increased performance of network data transfer.
2. Redundancy : Availability of 2 interfaces.
3. Increased Bandwidth :- Two interfaces if active along, then it can provide increased bandwidth.
4. Fault Tolerance :- If one interface is unplugged or down, the other one will work.
b. Kernel Module:- “Bonding” kernel module is used to implement bonding in linux.
[root@nglinux ~]# modprobe -l | grep -i bonding kernel/drivers/net/bonding/bonding.ko
c. Types of Network Bond Interfaces
Value | Name | Description |
0 | balance-rr | Round robin policy, default mode. Transmits packets in round robin fashion among the available interfaces. |
1 | active-backup | Active-backup policy, Only one itnerface works at a moment and the other one only works when the first fails. |
2 | balance-xor | Here source MAC address is XOR’ed with destination MAC to provide load balancing . It selects the same slave everytime. |
3 | broadcast | Transmits a packet to all slave interfaces and hence providing fault tolerance, however it can only be used for specific purposes. |
4 | 802.3ad | Dynamic Link Aggregation mode, creates aggregation groups which have same speed. It needs a switch which supports IEEE 802.3ad dynamic link. |
5 | balance-tlb | Transmit load balancing, outgoing packets are distributed based on the current traffic at all interfaces and the queue length. |
6 | balance-alb | Adaptive load balancing, it provides transmit packets load balancing and fault tolerance as well in case of switch port, cable, or adapter failure. |
d. How to check bonding interfaces and configuration ?
### We can check it using bonding config in /proc [root@nglinux ~]# cat /proc/net/bonding/bond0 ### OR, grep the bond keyword in the cfg files. [root@nglinux ~]# cat /etc/sysconfig/network-scripts/ifcfg-* | grep -i bond