Subject: load balancing ethernet
To: None <current-users@NetBSD.ORG>
From: Chris Jones <cjones@honors.montana.edu>
List: current-users
Date: 07/21/1998 11:45:22
I sent this query to tech-net, and didn't get much response.  I did,
however, get email from somebody else who wants to know what I find out
about this.  Maybe somebody on this (higher-traffic) list can help...


In my new job, we just got a grant to build a "distributed compute
cluster."  (We don't *really* know what that means, but it looked good on
paper.  :-)  As the admin for the group, I'm trying to get this to happen
with NetBSD, as I don't want to deal with a linux cluster.

We don't know how much bandwidth we're going to need, but we think it will
be approximately "lots."  One thing we're looking at is multiplexing 100bT
ethernet.  (There are cards out there which have multiple fast ether
interfaces on them -- I think I remember one by Adaptec.  I'll try to
find out more about them at some point.)

Anyway, NASA (and other groups) have projects such as Beowulf
(http://cesdis.gsfc.nasa.gov/linux/beowulf/beowulf.html) which do
something they refer to as "channel bonding."
(http://cesdis.gsfc.nasa.gov/beowulf/software/bonding.html)  Channel
bonding is supposed to load-balance (or multiplex, or whatever you want to
call it) multiple ethernet interfaces, so you can effectively multiply
your bandwidth.

Companies like Cisco and Cabletron have similar things that their switches
can do (e.g., http://www.cisco.com/warp/public/729/fec/index.shtml).  I
don't know how these work, other than some vague mumbo-jumbo a Cabletron
salesman just told me about doing strange things with MAC addresses.  But
however they work, it seems to me that the OS is still going to need to
understand what's going on.

My actual question is, can we do something like this with NetBSD?  Really,
we just want to maximize the bandwidth/dollar ratio.  ATM looks expensive,
and 100bT may not have the bandwidth we need.  Is there a way to multiply
your bandwidth?

Obviously, we could just assign a different IP to each ether interface,
and use DNS load-balancing, but that solution gives a bunch of little
pipes to each machine.  We would really like to simulate a single, big
pipe (with low latency) to each machine.

Any thoughts?

Chris

-----------------------------------------------------cjones@math.montana.edu
Chris Jones                                          cjones@honors.montana.edu
           Mad scientist at large                    cjones@nervana.montana.edu
"Is this going to be a stand-up programming session, sir, or another bug hunt?"