OpenSSI Logo SourceForge Logo

project
 home page
 sourceforge page
 mailing lists
 feature list
 demos
 screenshots
 Bruce's corner
 related links
 wiki
downloads
 notes
 1.2 stable
 1.9 development
 CVS
documentation
 1.2 stable
 1.9 development
 roadmap
 wiki
work items
 task list
 bug database
 feature requests
 process mgmt hooks
  hide sidebar
                       Network Bonding in OpenSSI.
                     -----------------------------

This document describes the current status of support for network
bonding in OpenSSI. It describes the steps required to get bonding 
working. This process is currently manual requiring changes to the 
ramdisk so that the bonding interface is associated with ICS. 
More information on Network Bonding is available in the linux
source tree at:
    Documentation/networking/bonding.txt

Note:
All steps outlined below need to hand-crafted right now. This is 
a temporary solution before bonding is neatly integrated with SSI.

PART I: HAND-CODED SETUP
-------------------------

Steps 2-4 refer to changes inside the linuxrc. Following the instructions,
you will find a snipet of an example linuxrc. Have a look at it and make the 
corresponding changes in your linuxrc.

1. Copy over bonding module and the ifenslave binary into the ramdisk
   bonding.o
   /sbin/ifenslave
2. Install the bonding module with the desired mode
   For e.g.
       insmod /lib/bonding.o mode=1 miimon=100
   Possible values for mode are [from the bonding-howto]:
        0       Round-robin policy: Transmit in a sequential order from the
                first available slave through the last. This mode provides
                load balancing and fault tolerance.
        1       Active-backup policy: Only one slave in the bond is active. A
                different slave becomes active if, and only if, the active slave
		fails. The bond's MAC address is externally visible on only
                one port (network adapter) to avoid confusing the switch.
                This mode provides fault tolerance.
        2       XOR policy: Transmit based on [(source MAC address XOR'd with
                destination MAC address) modula slave count]. This selects the
                same slave for each destination MAC address. This mode provides
                load balancing and fault tolerance.
        3       Broadcast policy: transmits everything on all slave interfaces.
                This mode provides fault tolerance.
3. Configure the bonding interface using ifconfig.
4. Use ifenslave to enslave desired interfaces to the bonding interface. 

Following is the relevant portion of an example linuxrc that has the 
changes described above:
---<<snip>>>-------------------------------------------------------------------
for iface in `ifconfig -a | grep HWaddr|
    sed 's/\(eth[0-9]*\).*HWaddr \(.*\)/\1-\2/'|sed 's/\(bond[0-9]*\).*HWaddr \(.*\)/\1-\2/'`
do
    ifdev=`echo $iface | cut -f 1 -d -`
    ifaddr=`echo $iface | cut -f 2 -d -`
    echo
    rec=`tail +2 /etc/boottab | grep $ifaddr`
                                                                                
    if [ $? -eq 0 ]; then
        ifdev=bond0
        ifaddr=`echo $rec | cut -f 3 -d / | cut -f 1 -d:`
        ifmask=`echo $rec | cut -f 3 -d / | cut -f 2 -d:`
                                                                                
        echo "Configuring $ifdev: $ifaddr/$ifmask"
        ifconfig $ifdev $ifaddr netmask $ifmask
                                                                                
        nodenum=`echo $rec | cut -f 1 -d /`
        if [ $nodenum -gt 0 ]
        then
            # set variables used for cluster IP address
            dev=$ifdev
            addr=$ifaddr:$ifmask
            node=$nodenum
            nicfound=1
        fi
    fi
done
/bin/ifenslave bond0 eth1
/bin/ifenslave bond0 eth2

-----<<snip>>-------------------------------------------------------------------	

This page last updated on Thu Dec 15 17:15:46 2005 GMT
privacy and legal statement