Installation: Apply patch. (if your reading this in /usr/src/linux/Documentation/networking/bonding.txt, then it's already applied.) Run make menuconfig/xconfig/config, and select 'bonding device' in network devices. Build the new kernel/modules. Get update ifenslave.c (included in tar file.) (location to be determined.) install ifenslave.c; do: gcc -O2 -o ifenslave ifenslave.c cp ifenslave /sbin/ifenslave Modify /etc/conf.modules by adding the line: alias bond0 bonding If you running a RH5.0 or newer distribution, do: cd /etc/sysconfig/network-scripts cp ifcfg-eth0 ifcfg-bond0 edit ifcfg-bond0, and make it look the following: DEVICE=bond0 USERCTL=no ONBOOT=yes BOOTPROTO=none BROADCAST=XXX.XXX.XXX.255 NETWORK=XXX.XXX.XXX.0 NETMASK=255.255.255.0 IPADDR=XXX.XXX.XXX.XXX (put the approiate values for you network in where the XXX's are at.) Then, edit ifcfg-eth0/ifcfg-eth1 (and all the other slave devices), and make them look like this: DEVICE=eth0 USERCTL=no ONBOOT=yes MASTER=bond0 SLAVE=yes BOOTPROTO=none Reboot, and the network should come up bonded together. For other distributions, you need to do something like: /sbin/ifconfig bond0 addresss netmask xxx.xxx.xxx.xxx broadcast xxx.xxx.xxx.xxx up /sbin/ifenslave bond0 eth0 /sbin/ifenslave bond0 eth1 When properly configured, it will look this: [root]# /sbin/ifconfig bond0 Link encap:Ethernet HWaddr 00:C0:F0:1F:37:B4 inet addr:XXX.XXX.XXX.YYY Bcast:XXX.XXX.XXX.255 Mask:255.255.252.0 UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1 RX packets:7224794 errors:0 dropped:0 overruns:0 frame:0 TX packets:3286647 errors:1 dropped:0 overruns:1 carrier:0 collisions:0 txqueuelen:0 eth0 Link encap:Ethernet HWaddr 00:C0:F0:1F:37:B4 inet addr:XXX.XXX.XXX.YYY Bcast:XXX.XXX.XXX.255 Mask:255.255.252.0 UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1 RX packets:3573025 errors:0 dropped:0 overruns:0 frame:0 TX packets:1643167 errors:1 dropped:0 overruns:1 carrier:0 collisions:0 txqueuelen:100 Interrupt:10 Base address:0x1080 eth1 Link encap:Ethernet HWaddr 00:C0:F0:1F:37:B4 inet addr:XXX.XXX.XXX.YYY Bcast:XXX.XXX.XXX.255 Mask:255.255.252.0 UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1 RX packets:3651769 errors:0 dropped:0 overruns:0 frame:0 TX packets:1643480 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 Interrupt:9 Base address:0x1400 Questions: 1. Is it SMP safe? Yes. The old 2.0.xx channel bonding patch wasn't SMP safe. This one was designed from the start to be SMP safe. 2. What type of cards can it work with it? Any Ethernet type cards (ie, you can even mix cards - a tulip and a 3com 3c905, for example). You can even bond together Gigabit Ethernet cards! 3. How many bond devices can I have? Just one at this time. 4. How many slaves can a bond device have? Limited by the number of cards you can place in your system. 5. What happens when a slave dies? Currently, the ethernet drivers don't really handle this situation very well. The tulip driver never stalls; it just starts to throw packets away! 6. If this was fixed, can bonding be used for High Availability? Yes! 7. Which switches/systems does it work with? Cisco 5500 series (look for EtherChannel support). SunTrunking software. 8. Where does the bond0 device get it's mac address from? It's taken from the first slave device. If you remove that first slave device, the MAC address continues to be associated with it. If you wish to remove that MAC address, you have to ifconfig bond0 down, and then modprobe -r bonding. If you wish, you can also assign a MAC address when you ifconfig the bond0 device. 9. Which transmit policy is used? Round robin, based on order of enslaving.