Wednesday, July 01, 2009

Bonding interfaces in Linux

I recently setup a Linux box to act as an NFS gateway and wanted to bond multiple 1GB interfaces together. The bonding would allow for more throughput, as well as redundancy in case a link failed. I asked my network guy to create an LACP group on the Cisco switch, and then followed the bonding how-to's on the internet.

Problem: Some hosts couldnt connect. To make it even more odd, the hosts that couldn't connect can connect to the working hosts. Hmmmm.... Something is either wrong with the Linux firewall, routing tables, Cisco LACP configuration, or Linux LACP configuration.

I ruled out the firewall by turning it off (not suggested). I changed the IP of the server and confirmed that the routing was working. I checked the Cisco config against other LACP configs, and they were configured the same as this one. That only left the Linux LACP config - which was configured the way everyone said to configure it.

Finally, I gave up and started looking to see if Linux supported Etherchannel instead of LACP (I am using a Cisco switch) and came across this link - http://zmq503o1.spaces.live.com/blog/cns!2DE8BC7CE0181410!493.entry?wa=wsignin1.0&sa=302266494. The title of the link referrs to Etherchannel, but I noticed a new option "lacp_rate" being used in the modprobe.conf

I added this option to my config and reloaded the bonding module and everything worked! Supposedly this option specifies how fast the bond attempts to create teh LACP group. Setting it to 1 (fast), forced the link to initiate and begin passing traffic to all source/destinations.

No comments: