RHEL: Bonding network interfaces

RHEL: Bonding network interfaces

# Tested on RHEL 5, 6 & 7

# Red Hat Enterprise Linux allows administrators to bind multiple network interfaces
# together into a single channel using the bonding kernel module and a special network
# interface called a "channel bonding interface". Channel bonding enables two or more
# network interfaces to act as one, simultaneously increasing the bandwidth and providing
# redundancy.

# To create a channel bonding interface, create a file in the /etc/sysconfig/network-scripts
# directory called <ifcfg-bondN>, replacing "N" with the number for the interface, such as 0.

# The contents of the file can be identical to whatever type of interface is getting
# bonded, such as an Ethernet interface. The only difference is that the DEVICE directive
# must be bondN, replacing N with the number for the interface.

# The following is a sample channel bonding configuration file (RHEL 6):

   DEVICE=bond0
   IPADDR=192.168.1.1
   NETMASK=255.255.255.0
   ONBOOT=yes
   BOOTPROTO=none
   USERCTL=no
   BONDING_OPTS="bonding parameters separated by spaces"

# After the channel bonding interface is created, the network interfaces to be bound
# together must be configured by adding the MASTER and SLAVE directives to their
# configuration files. The configuration files for each of the channel-bonded interfaces
# can be nearly identical.

# For example, if two Ethernet interfaces are being channel bonded, both eth0 and eth1
# may look like the following example:

   DEVICE=<ethN>
   BOOTPROTO=none
   ONBOOT=yes
   MASTER=bond0
   SLAVE=yes
   USERCTL=no

# For a channel bonding interface to be valid, the kernel module must be loaded
# ('modprobe bonding
'). To ensure that the module is loaded when the channel bonding
# interface is brought up, for RHEL 6, create a new file as root named bonding.conf in
# the /etc/modprobe.d directory or, if working with RHEL 5, add the configuration
# directly to /etc/modprobe.conf (this file is deprecated on RHEL 6). On RHEL 7 it is
# not necessary to indicate explicitly to load bonding kernel module as, once the
# interfaces configured for bonding, module will be automatically loaded on startup.


# RHEL 7:
# No need to explicitly load bonding module
 

# RHEL 6:

vi /etc/modprobe.d/bonding.conf
   alias <bondN> bonding


# RHEL 5:

vi /etc/modprobe.conf
   alias <bondN> bonding
   options <bondN> mode=<active-backup> miimon=<100> primary_reselect=<failure> primary=<ethX> downdelay=<100> updelay=<5000>


# *** Note: On RHEL 6 we'll put all bonding module parameters in <ifcfg-bondN> files.
#     that will allow to specify different configurations for different bonding
#     interfaces.



# Additional commands
# ------------------------------------------------------------------------------------------

# Start a "bonding" network interface

ifup <bond0>


# Stop a "bonding" network interface and free all slave interfaces

ifdown <bond0>


# Remove a slave interface without stopping "bonding" interface:

ifenslave {-d|--detach} <bond0> <eth0> [<eth1> <eth2> ...]


# Change active slave:

ifenslave {-c|--change-active} <bond0> <eth0>


# Show information about "master" interface:

ifenslave <bond0>

cat /proc/net/bonding/<bond0>


# Show information about all interfaces:

ifenslave {-a|--all-interfaces}



# Configuration examples
# ------------------------------------------------------------------------------------------

# RHEL 5
# ------------------------------------------------------------------------------------------

vi /etc/modprobe.conf
   alias bond0 bonding
   options bond0 mode=active-backup miimon=100 primary_reselect=failure primary=eth3 downdelay=100 updelay=5000

modprobe bonding

cd /etc/sysconfig/network-scripts

vi ifcfg-bond0
   DEVICE=bond0
   BOOTPROTO=static
   IPADDR=10.150.0.107
   NETMASK=255.255.252.0
   ONBOOT=yes
   USERCTL=no

vi ifcfg-eth3
   DEVICE=eth3
   BOOTPROTO=none
   HWADDR=90:E2:BA:55:1F:DB
   MASTER=bond0
   SLAVE=yes
   ONBOOT=yes
   USERCTL=no

vi ifcfg-eth6
   DEVICE=eth6
   BOOTPROTO=none
   HWADDR=40:F2:E9:0C:9A:5E
   MASTER=bond0
   SLAVE=yes
   ONBOOT=yes
   USERCTL=no

ifup bond0

cat /proc/net/bonding/bond0
   Ethernet Channel Bonding Driver: v3.4.0-1 (October 7, 2008)

   Bonding Mode: fault-tolerance (active-backup)
   Primary Slave: eth3 (primary_reselect failure)
   Currently Active Slave: eth3
   MII Status: up
   MII Polling Interval (ms): 100
   Up Delay (ms): 5000
   Down Delay (ms): 100

   Slave Interface: eth3
   MII Status: up
   Speed: 1000 Mbps
   Duplex: full
   Link Failure Count: 0
   Permanent HW addr: 90:e2:ba:55:1f:db

   Slave Interface: eth6
   MII Status: up
   Speed: 1000 Mbps
   Duplex: full
   Link Failure Count: 0
   Permanent HW addr: 40:f2:e9:0c:9a:5e



# RHEL 6
# ------------------------------------------------------------------------------------------

vi /etc/modprobe.d/bonding.conf
   alias bond0 bonding

modprobe bonding

cd /etc/sysconfig/network-scripts

vi ifcfg-bond0
   DEVICE=bond0
   BOOTPROTO=static
   IPADDR=10.149.72.202
   NETMASK=255.255.252.0
   ONBOOT=yes
   USERCTL=no
   IPV6INIT=no
   BONDING_OPTS="mode=active-backup miimon=100 primary_reselect=failure primary=eth0 downdelay=100 updelay=5000"

vi ifcfg-eth0
   DEVICE=eth0
   BOOTPROTO=none
   HWADDR=F0:92:1C:0D:53:90
   MASTER=bond0
   SLAVE=yes
   ONBOOT=yes
   USERCTL=no

vi ifcfg-eth1
   DEVICE=eth1
   BOOTPROTO=none
   HWADDR=F0:92:1C:0D:53:94
   MASTER=bond0
   SLAVE=yes
   ONBOOT=yes
   USERCTL=no

ifup bond0

cat /proc/net/bonding/bond0
   Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009)

   Bonding Mode: fault-tolerance (active-backup)
   Primary Slave: eth0 (primary_reselect failure)
   Currently Active Slave: eth0
   MII Status: up
   MII Polling Interval (ms): 100
   Up Delay (ms): 5000
   Down Delay (ms): 100

   Slave Interface: eth0
   MII Status: up
   Speed: 600 Mbps
   Duplex: full
   Link Failure Count: 0
   Permanent HW addr: f0:92:1c:0d:53:90
   Slave queue ID: 0

   Slave Interface: eth1
   MII Status: up
   Speed: 600 Mbps
   Duplex: full
   Link Failure Count: 0
   Permanent HW addr: f0:92:1c:0d:53:94
   Slave queue ID: 0



# RHEL 7
# ------------------------------------------------------------------------------------------

modprobe bonding

cd /etc/sysconfig/network-scripts

vi ifcfg-bond0
   DEVICE=bond0
   TYPE=bond
   NAME=bond0
   BONDING_MASTER=yes
   BOOTPROTO=none
   ONBOOT=yes
   IPADDR=192.168.1.22
   NETMASK=255.255.255.0
   GATEWAY=192.168.1.254
   BONDING_OPTS="mode=active-backup miimon=100 primary_reselect=failure primary=eth0 downdelay=100 updelay=5000"

vi ifcfg-enp2s7
   TYPE=Ethernet
   BOOTPROTO=static
   DEVICE=enp2s7
   ONBOOT=yes
   HWADDR=00:00:1c:d5:e3:6f
   MASTER=bond0
   SLAVE=yes

vi ifcfg-enp2s8
   TYPE=Ethernet
   BOOTPROTO=static
   DEVICE=enp2s8
   ONBOOT=yes
   HWADDR=00:08:a1:6c:7e:79
   MASTER=bond0
   SLAVE=yes

ifup bond0

cat /proc/net/bonding/bond0
   Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

   Bonding Mode: fault-tolerance (active-backup)
   Primary Slave: None
   Currently Active Slave: enp2s7
   MII Status: up
   MII Polling Interval (ms): 100
   Up Delay (ms): 5000
   Down Delay (ms): 100

   Slave Interface: enp2s7
   MII Status: up
   Speed: 100 Mbps
   Duplex: full
   Link Failure Count: 0
   Permanent HW addr: 00:00:1c:d5:e3:6f
   Slave queue ID: 0

   Slave Interface: enp2s8
   MII Status: up
   Speed: 100 Mbps
   Duplex: full
   Link Failure Count: 0
   Permanent HW addr: 00:08:a1:6c:7e:79
   Slave queue ID: 0
0 (0)
Article Rating (No Votes)
Rate this article
Attachments
There are no attachments for this article.
Comments
There are no comments for this article. Be the first to post a comment.
Full Name
Email Address
Security Code Security Code
Related Articles RSS Feed
sed Delete / Remove ^M Carriage Return (Line Feed / CRLF) on Linux or Unix
Viewed 10120 times since Thu, Feb 7, 2019
Sample logrotate configuration and troubleshooting part 2
Viewed 9390 times since Fri, Nov 30, 2018
Improve security with polyinstantiation
Viewed 13116 times since Fri, May 15, 2020
What Is /dev/shm And Its Practical Usage
Viewed 7867 times since Tue, Mar 12, 2019
Easily Monitor CPU Utilization in Linux Terminal With Stress Terminal UI
Viewed 3950 times since Thu, Apr 18, 2019
RHEL: Create a local RPM repository
Viewed 11082 times since Sun, May 27, 2018
RHCS6: ’fencing’ basics
Viewed 2164 times since Sun, Jun 3, 2018
Linux - How to unlock and reset user’s account
Viewed 4291 times since Fri, Jun 8, 2018
Df command in Linux not updating actual diskspace, wrong data
Viewed 2777 times since Wed, May 30, 2018
Linux Linux Network Statistics Tools / Commands
Viewed 9053 times since Mon, Sep 21, 2020