LACP, or the link aggregation control protocol, is a network protocol that enables active/active redundancy between network-connected devices. A common use for LACP is providing more than one physical network link between server and switch for redundancy purposes. Unlike other methods for providing redundancy, LACP also makes the total bandwidth of the links usable, meaning nothing is wasted.
Under Linux, LACP is provided as part of the
bonding driver, specifically by passing the
mode=4 option when loading the
Once the module is loaded, you can use ifenslave to "enslave" (…phrasing…) the physical network interfaces to a bonding interface. The physical network interfaces must be connected to network ports that provide LACP, and have been configured with the same LACP admin key.
Of course, you don't need to screw around with module options and
ifenslave under most Linux distributions in order to configure an
LACP-capable interface. Under RHEL 6.4, it's a matter of configuring the
physical interfaces, and the bonding interface, using interface
configuration files, which are found in
For a typical two interface LACP setup, you would need to create three interface definitions. The first two (or more, if you would like to configure additional interfaces) looks like this:
#/etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 USERCTL=no NM_CONTROLLED=no ONBOOT=yes BOOTPROTO=none SLAVE=yes MASTER=bond0 HWADDR=00:00:00:00:be:ef
Change the interface name in the filename (
ifcfg-eth0) and the
DEVICE= line to match the interface name of the physical interface.
Also change the
HWADDR= line to match the MAC address of the interface
as well. This is really important, or the network scripts will freak out
and apply this configuration to any interface it wants to. You can find
the MAC address by looking at the output of
ifconfig eth0 for the
eth0 with the interface name.
You will need to create one interface definition file per physical interface involved in the LACP link.
You then need to create the logical interface,
bond0. If you need to
create multiple logical interfaces out of multiple groups of physical
interfaces, in the
MASTER= line of the physical interface definition
files above, and in the name and
DEVICE= line of the logical interface
definition file below, you will need to substitute
#/etc/sysconfig/network-scripts/ifcfg-bond0 ONBOOT=yes USERCTL=no BOOTPROTO=none BONDING_OPTS="mode=4" NM_CONTROLLED=no IPADDR=x.x.x.x NETMASK=x.x.x.x
BONDING_OPTS"mode=4"= line. This configures the bonding
interface to use LACP. You can pass any options you like to the bonding
module here as well. I have listed the
NETMASK lines here
to demonstration that the IP configuration should be recorded in the
logical bonding interface configuration file, not the physical interface
configuration files. If you are using a dynamic IP, you can set
BOOTPROTO=DHCP to use DHCP instead of static IP configuration,
For more information about what you can and can't put into these configuration files, take a look here.