Nic bonding is defined as bonding of two or more network cards on a server/pc to form a parallel single connection. This is a great way of achieving redundancy to a server if it's having more number of network cards. Its having many names like.

1. Link aggregation
2. Channel Bonding
3. NIC Bonding
4. NIC teaming
5. Network card Bonding
6. Ethernet bonding
7. Trunking
8. Etherchannel
9. Multi-link truning(MLT)
10.Network bonding
11.Network Fault Tolerance(NFT)
12.Port channel
13.Smartgroup
14.EtherTrunk

 

	Nic bonding is used to provide two benefit's for us

1. High bandwidth
2. Redundancy/resilience


Before Clustering softwares come in to existing this technique is widely used to provide redundancy to a high end server. After cluster software introduced it's used to enhance the cluster redundancy.

In this post we will see how can we achieve Nic bonding.
Nic bonding will work with the help of bonding driver in kernel.

 

 

	 

 

 

	Implementing NIC bonding : Participating interfaces.

 

 

	eth0

eth1

bnd0


Step1 : Create bond interface file with following content in it

vi /etc/syconfig/network-scripts/ifcfg-bnd0

DEVICE=bnd0

IPADDR=192.168.0.234

NETWORK=192.168.0.0

NETMASK=255.255.255.0

 

 

	USERCTL=no

BOOTPROTO=none

ONBOOT=yes

GATEWAY=192.168.0.1


save and exit the file

Step2 : Now create a bnd0 virtual interface in modprobe.conf as shown below

alias bnd0 bonding

options bnd0 miimon=100 mode=6


Save and exit the file

Let me explain what actually the above two lines indicates

Line1 : (alias bnd0 bonding) to load the bonding module in to kernel

Line2 : Indicate the option for thie bond interface

miimon is nothing but to MONitor with MIItool to check the availability of other interfaces.

mode is to specify whether the bond is configured as load balancing or fail over. Here it's load-balancing which means data transmission will be shared between two interfaces. To know more about modes click here

Step3 : Load the module in to kernel with modprob command to update this changes to kernel

#modprob bonding

Step4 : edit interface card details of both physical devices

For eth0

vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

USERCTL=no


ONBOOT=yes

MASTER=bnd0

SLAVE=yes

BOOTPROTO=none


For eth1

vi /etc/sysconfig/network-scripts/ifcfg-eth1

DEVICE=eth1

USERCTL=no

ONBOOT=yes

MASTER=bnd0

SLAVE=yes

BOOTPROTO=none


Save and exit the files

The above thing is self explanatory for many admins but let me explain to new people.

DEVICE Indicates what is the device name

USERCTL Indicates that can user control this device(here it's no)

ONBOOT Indicates that at the boot time do this device should be up?

MASTER Is this device has master? Then what it is(here it's bnd0)

SLAVE Is this device acting as slave?

BOOTPROTO What about getting ip add from what protocol?(it's set to none which indicate it's a static IP)

Step5 : Restart the network service and see the output of ifconfig for your self.

#service network restart

#ifconfig

Questions & Answers


1. How can we say my data is flowing in which path?

Ans : Link aggregation(bonding driver) will take care of sending all the frames of particular session in same path. This is called as ordering of frames.

2. Can we bond more than 2 NIC?

Ans : Yes we can, follow the same procedure. In fact there is no limit but linux server do have limit to have total number of NIC cards.

Tips on implementing NIC bonding

1. Enable spanning tree for switches, without which network speed reduces.

2. Be careful if you’re doing this over a remote ssh.