Intel Modular Server Nic Bonding and Active Slave in Citrix Xenserver 6.0.2

If you have an additional mezzanine card installed with your Compute Module and have a secondary Switch Module installed with your Intel Modular Server, you can set up network redundancy with nic bonding in Xenserver. Initially eth0 and eth1 are assigned to the main nic while eth2 and eth3 are available when you have the secondary mezzanine card installed in your Compute Module. Bonding for redundancy only makes sense if you bond interfaces from different nic-s. I would suggest bonding eth0 with eth2 and eth1 with eth3. You can set up bonds in XenCenter.

In bonding mode the system sets one of the bond slaves as active. Since both slaves appearantly have an active connection to either of the switches the system picks the active slave randomly. It only checks if the connection to the switch is active and not further. Since I currently have an active internet connected to only one of the switches, a startup script is needed to manually set active slave to the switch which is connected to the internet. In the future this script could actually be developed to set an active slave by checking the connection on each bond slave. Currently this is manual.

The startup script:

# cat /etc/init.d/ovs-set-active-slave
#! /bin/bash
#
# ovs-set-active-slave       Set bond active slaves to eth0 on bond0 and eth1 on bond1
#
# chkconfig: 2345 14 90
# description: Set bond active slaves to eth0 on bond0 and eth1 on bond1
#
#
### BEGIN INIT INFO
# Provides: $ovs-set-active-slave
### END INIT INFO

start() {
    /usr/bin/ovs-appctl bond/set-active-slave bond0 eth0
    /usr/bin/ovs-appctl bond/set-active-slave bond1 eth1
}

status() {
    :
}

stop() {
    :
}

restart() {
    stop
    start
}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    status)
        status
        ;;
    restart)
        restart
        ;;
    *)
        echo "Unknown action '$1'."
        ;;
esac

Activate script to run on server startup:

# chkconfig ovs-set-active-slave on

After reboot you should have eth0 as active slave on bond0 and eth2 as active slave on bond1:

# ovs-appctl bond/show bond0
bond_mode: active-backup
lacp: off
bond-detect-mode: carrier
updelay: 31000 ms
downdelay: 200 ms

slave eth2: enabled

slave eth0: enabled
	active slave
# ovs-appctl bond/show bond1
bond_mode: active-backup
lacp: off
bond-detect-mode: carrier
updelay: 31000 ms
downdelay: 200 ms

slave eth1: enabled
	active slave

slave eth3: enabled

Note: When the main switch fails you have to log in through Intel Modular Server KVM and set active slaves to the secondary switch manually.

Note2: If you do a Switch 1 reset from the Management Module then Xenserver will automatically change active slaves to the Switch 2. If you still want to use Switch 1 after the reset then you have to set active slaves back to Switch 1 manually.

2 thoughts on “Intel Modular Server Nic Bonding and Active Slave in Citrix Xenserver 6.0.2

  1. Why not using active-active bond? Just one thing I noticed on the Intel Modular Server since a recent firmware upgrade, a 10GbE interconnect is available (at least on the MFSYS25 v2), just make sure to turn it on in the advanced switch configuration. If using MFSYS25 or MFSYS35, create a lag of 2 ports or more between those two switches.

    Martin

Leave a Reply to Yllar Cancel reply

Your email address will not be published. Required fields are marked *

You must enable javascript to see captcha here!