Bonding Network Interfaces on RedHat Enterprise Linux 5 (RHEL 5)

Redhat Logo

RedHat’s Knowledgebase has no info on correctly bonding network interfaces on RHEL 5. They do have some old RHEL 3 information, but things have changed a little bit and they have failed to add the changes to another knowledgebase article. Here goes the quick way to get you going.

1. Get the hardware addresses of your network cards. These are usually eth0, eth1, etc. but the addresses may surprise you but they are usually eth0, eth1, eth2, etc.
2. Once you have your network addresses, you can get going. Stay out of the GUI network configuration tool RedHat provides because it has no idea what you are trying to do yet.

In ‘/etc/sysconfig/network-scripts’ create a new file for your bonded interface – for example, bond0. The file will be named

ifcfg-bond0

and put this in the file (replace the stuff in <> with the actual addresses you want and no <>)

DEVICE=bond0
BOOTPROTO=none
ONBOOT=yes
NETWORK=<WHATEVER YOUR NETWORK ADDR IS>
NETMASK=<YOUR NETMASK>
IPADDR=<IP ADDR YOU WANT THE BOND TO SERVE UP>
USERCTL=no
GATEWAY=<THE GATEWAY ROUTER IP>
TYPE=Ethernet
IPV6INIT=no
PEERDNS=yes

3. Then create a ifcfg file for each interface you want to be a part of the bond0. I have 2 for this bond. If there are existing files there, edit them or nuke them and recreate them. They were probably created with the GUI interface network config utility in RHEL. (For example purposes, I am using eth0 and eth1 as the 2 network interfaces we want to bond with bond0)

In ‘/etc/sysconfig/network-scripts’ you want;

a file for eth0

ifcfg-eth0

DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=yes

and a file for eth1

ifcfg-eth1

DEVICE=eth1
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=yes

4. Then you have to add bond0 to be a recognized interface for the kernel. You can do this in modprobe.conf. RedHat still has references to /etc/modules.conf which doesn’t exist in RedHat 5 anymore.

So, modify ‘/etc/modprobe.conf’ and add the line

alias bond0 bonding

5. Then reboot the whole server. I know, you can restart the network (/etc/init.d/network restart) or restart the interface bond0 (/sbin/ifup bond0) and leave everything up, but if you are doing this, you probably have no one hitting the server across the network anyway and it would be good to make sure the bond kicks up on startup and plays nice.

Really surprised that RedHat has yet to incorporate this into the network config utility and they make you go down this road to handle it. There are other settings with ‘miimon’, etc. but this gets you into the ballpark. More information on linux bonding here.

I added this to the /etc/modprobe.conf to help with switch timing and delays we were seeing in transfer tests.