Configuration Steps (as root user):
1. cd /etc/sysconfig/network-scripts
2. touch ifcfg-bond0
3. Contents of /etc/sysconfig/network-scripts/ifcfg-bond0 file:
DEVICE=bond0
BONDING_OPTS="mode=1 miimon=500"
ONBOOT=yes
BOOTPROTO=none
IPADDR=192.168.7.196
NETMASK=255.255.255.0
GATEWAY=192.168.7.1
USERCTL=no
DNS1=192.168.7.4
DNS2=182.16.156.5
**Details of bonding options (BONDING_OPTS) given below
4. Edit the existing configuration files for the two NIC that will conform the combined interface. Content of /etc/sysconfig/network-scripts/ifcfg-eth0 file:
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
5. Content of /etc/sysconfig/network-scripts/ifcfg-eth1 file:
DEVICE=eth1
ONBOOT=yes
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
6. Here we are using the MASTER and SLAVE and directive to configuring channel bonding. For both interfaces we will use bond0 as the master & each interface will act as slave for bond0 interface. After this point we are done with network configuration file modification. Now we have to add the following line to
/etc/modprobe.d/dist.conf
or, (depending on your distro, in my case, at RHEL6.4, I used above file)
/etc/modprobe.conf
Add the below line:
alias bond0 bonding
7. Then execute the following two commands:
modprobe bond0
service network restart
DONE!!!
*Please stop NetworkManager service before doing this, if required !!!
service NetworkManager stop
chkconfig NetworkManager off
** and also check iptables rules, if required
***BONDING_OPTS(Reference: https://www.centos.org/docs/5/html/5.1/Deployment_Guide/s3-modules-bonding-directives.html )
The following is a list of available parameters for the
1. cd /etc/sysconfig/network-scripts
2. touch ifcfg-bond0
3. Contents of /etc/sysconfig/network-scripts/ifcfg-bond0 file:
DEVICE=bond0
BONDING_OPTS="mode=1 miimon=500"
ONBOOT=yes
BOOTPROTO=none
IPADDR=192.168.7.196
NETMASK=255.255.255.0
GATEWAY=192.168.7.1
USERCTL=no
DNS1=192.168.7.4
DNS2=182.16.156.5
**Details of bonding options (BONDING_OPTS) given below
4. Edit the existing configuration files for the two NIC that will conform the combined interface. Content of /etc/sysconfig/network-scripts/ifcfg-eth0 file:
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
5. Content of /etc/sysconfig/network-scripts/ifcfg-eth1 file:
DEVICE=eth1
ONBOOT=yes
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
6. Here we are using the MASTER and SLAVE and directive to configuring channel bonding. For both interfaces we will use bond0 as the master & each interface will act as slave for bond0 interface. After this point we are done with network configuration file modification. Now we have to add the following line to
/etc/modprobe.d/dist.conf
or, (depending on your distro, in my case, at RHEL6.4, I used above file)
/etc/modprobe.conf
Add the below line:
alias bond0 bonding
7. Then execute the following two commands:
modprobe bond0
service network restart
DONE!!!
*Please stop NetworkManager service before doing this, if required !!!
service NetworkManager stop
chkconfig NetworkManager off
** and also check iptables rules, if required
***BONDING_OPTS(Reference: https://www.centos.org/docs/5/html/5.1/Deployment_Guide/s3-modules-bonding-directives.html )
The following is a list of available parameters for the
bonding
module: mode=
— Specifies one of four policies allowed for thebonding
module. Acceptable values for this parameter are:
0
— Sets a round-robin policy for fault tolerance and load balancing. Transmissions are received and sent out sequentially on each bonded slave interface beginning with the first one available.
1
— Sets an active-backup policy for fault tolerance. Transmissions are received and sent out via the first available bonded slave interface. Another bonded slave interface is only used if the active bonded slave interface fails.
2
— Sets an XOR (exclusive-or) policy for fault tolerance and load balancing. Using this method, the interface matches up the incoming request's MAC address with the MAC address for one of the slave NICs. Once this link is established, transmissions are sent out sequentially beginning with the first available interface.
3
— Sets a broadcast policy for fault tolerance. All transmissions are sent on all slave interfaces.
4
— Sets an IEEE 802.3ad dynamic link aggregation policy. Creates aggregation groups that share the same speed and duplex settings. Transmits and receives on all slaves in the active aggregator. Requires a switch that is 802.3ad compliant.
5
— Sets a Transmit Load Balancing (TLB) policy for fault tolerance and load balancing. The outgoing traffic is distributed according to the current load on each slave interface. Incoming traffic is received by the current slave. If the receiving slave fails, another slave takes over the MAC address of the failed slave.
6
— Sets an Active Load Balancing (ALB) policy for fault tolerance and load balancing. Includes transmit and receive load balancing for IPV4 traffic. Receive load balancing is achieved through ARP negotiation.miimon=
— Specifies (in milliseconds) how often MII link monitoring occurs. This is useful if high availability is required because MII is used to verify that the NIC is active. To verify that the driver for a particular NIC supports the MII tool, type the following command as root:
ethtool
| grep "Link detected:"
In this command, replace
with the name of the device interface, such aseth0
, not thebond
interface. If MII is supported, the command returns:
Link detected: yes
If using a bonded interface for high availability, the module for each NIC must support MII.
Setting the value to0
(the default), turns this feature off. When configuring this setting, a good starting point for this parameter is100
.downdelay=
— Specifies (in milliseconds) how long to wait after link failure before disabling the link. The value must be a multiple of the value specified in themiimon
parameter. The value is set to0
by default, which disables it.updelay=
— Specifies (in milliseconds) how long to wait before enabling a link. The value must be a multiple of the value specified in themiimon
parameter. The value is set to0
by default, which disables it.arp_interval=
— Specifies (in milliseconds) how often ARP monitoring occurs.
If using this setting while inmode
0
or2
(the two load-balancing modes), the network switch must be configured to distribute packets evenly across the NICs. For more information on how to accomplish this, refer to
/usr/share/doc/kernel-doc-
/Documentation/networking/ bonding.txt
The value is set to0
by default, which disables it.arp_ip_target=
— Specifies the target IP address of ARP requests when thearp_interval
parameter is enabled. Up to 16 IP addresses can be specified in a comma separated list.arp_validate=
— validate source/distribution of ARP probes; default isnone
. Other valid values areactive
,backup
, andall
.lacp_rate=
— Specifies the rate at which link partners should transmit LACPDU packets in 802.3ad mode. Possible values are:
slow
or0
— Default setting. This specifies that partners should transmit LACPDUs every 30 seconds.fast
or1
— Specifies that partners should transmit LACPDUs every 1 second.
primary=
— Specifies the interface name, such aseth0
, of the primary device. Theprimary
device is the first of the bonding interfaces to be used and is not abandoned unless it fails. This setting is particularly useful when one NIC in the bonding interface is faster and, therefore, able to handle a bigger load.
This setting is only valid when the bonding interface is in active-backup mode. Refer to
/usr/share/doc/kernel-doc-
/Documentation/networking/ bonding.txt
for more information.use_carrier=
— Specifies whether or notmiimon
should use MII/ETHTOOL ioctls ornetif_carrier_ok()
to determine the link state. Thenetif_carrier_ok()
relies on the device driver to maintains its state withnetif_carrier_
; most device drivers support this function.on/off
The MII/ETHROOL ioctls tools utilize a deprecated calling sequence within the kernel. However, this is still configurable in case your device driver does not supportnetif_carrier_
.on/off
Valid values are:
1
— Default setting. Enables the use ofnetif_carrier_ok()
.0
— Enables the use of MII/ETHTOOL ioctls.
Tip
Ifbonding
insists that the link is up when it should not be, it is possible that your network device driver does not supportnetif_carrier_
.on/off
xmit_hash_policy
— Selects the transmit hash policy used for slave selection inbalance-xor
and 802.3ad modes. Possible values are:
0
orlayer2
— Default setting. This option uses the XOR of hardware MAC addresses to generate the hash. The formula used is:
(
This algorithm will place all traffic to a particular network peer on the same slave, and is 802.3ad compliant.) 1
orlayer3+4
— Uses upper layer protocol information (when available) to generate the hash. This allows for traffic to a particular network peer to span multiple slaves, although a single connection will not span multiple slaves.
The formula for unfragmented TCP and UDP packets used is:
((
For fragmented TCP or UDP packets and all other IP protocol traffic, the source and destination port information is omitted. For non-IP traffic, the formula is the same as the) (( ) AND 0xffff) layer2
transmit hash policy.
This policy intends to mimic the behavior of certain switches; particularly, Cisco switches with PFC2 as well as some Foundry and IBM products.
The algorithm used by this policy is not 802.3ad compliant.