No, this article isn't about how to tie up your network administrator when they've been bad. Linux has had this “bonding” driver in the kernel for quite a while, and somehow I got it mixed up with the serial line bonding driver and thought it was not very capable. I've been working on a new network architecture for our new server facility that will eliminate any single point of failure, and came across the bonding driver as a way to achieve this. In fact, one of the only ways…
I believe the bonding driver was initially created as part of the Beowulf project for doing clustering as a way of increasing performance. It implements several mechanisms including ways for machines to do link aggregation to gain higher performance, but they also include mechanisms for fail over in the event that a network goes down.
Fedora Core 3 isn't too bad to set up for it either. You create a “ifcfg-bond0” as you normally would, then in your “ifcfg-eth0” and “ifcfg-eth1” you say “MASTER=bond0” and “SLAVE=yes”. Then just set up the “/etc/modprobe.conf” say “alias bond0 bonding” and use an “options bonding” line to set the bonding driver options as appropriate. See the bonding documentation in the kernel for more information.
In my testing it works really well. I've been very happy with it thus far. I'm not sure how it'll work for aliased interfaces yet, but we'll see soon enough. In my testing it performed flawlessly, and failed over much faster than setting up bridges with STP to link the interfaces. Plus it solves a lot of problems with that sort of setup.
The new server space facility is great. We're just doing some testing and final setup of routers and other gear, and getting ready to start moving over some less critical machines shortly. The key benefits are that it's a truly 5 9s facility (99.999%) and our network and power architecture is designed to make the most of this. We have N+1 and even N+2 for many things, a week of generator-backed power available before refueling has to be done, etc… It's great.comments powered by Disqus