Subject: Re: IP distribution across multiple NICs
To: Andrew Gillham <gillham@vaultron.com>
From: John Franklin <franklin@elfie.org>
List: netbsd-users
Date: 01/10/2001 12:07:40
On Wed, Jan 10, 2001 at 11:03:20AM -0500, Andrew Gillham wrote:
> Actually he is looking for _outbound_ loadbalancing, not inbound.
> If you have three interfaces, and a default route pointing out fxp0,
> won't all responses that are not local go via this interface anyway?
> (e.g. NetBSD doesn't always reply via the ingress interface)

While I don't think you were thinking this, it did spark in me an 
interesting idea.  We are able to hide several physical hard drives
behind an abstraction of a drive to make the several drives look like
one big drive.  RAID.  

Can we do the same with network interfaces?  Can we lash several network
interfaces behind an abstraction of one to create an effectively larger
pipe?  Call it RAIDNet or something.

Disk RAID is trivial do to because it's a closed system: there's the
abstraction, the drives behind it, and nothing beyond that.  I've seen
similar things done with connectivity, but they also keep the system
closed: "shotgun" modems that use two phone lines to talk between each
other, or bonded T-1 lines where there are CSU/DSUs on either end
configured to handle it.  

But this would be different. It's releasing packets with the same IP 
from three different NICs each with their own MAC to an unsuspecting
network.  For the outbound it shouldn't matter since the packets are
addressed to go to a particular unique MAC on the wire (the gateway),
and a unique IP for the long haul.  There aren't any big-picture 
routing issues since the several MACs might all be behind the same
switch and serviced by a single router who would advertise the 
route.

It's the return packets that could cause a problem.  Return packets 
are set for an IP on the long haul, so that wouldn't be an issue.  But,
the last network segment where the last gateway has to come up with a
MAC address either by doing an ARP or looking it up in a table of 
previously seen mappings.

How would layer-3 switches with their tables of MAC<->IP mappings or
routers or other hosts on that network handle it?  It doesn't really
matter with which MAC other systems address packets since they would be
mapped to the abstracted network interface, but could it cause
switches/routers/gateways/hosts to crash?  Would they interpret it as
two hosts fighting for an IP, consider it an error and drop packets to 
that IP?

If you're looking to do this to increase your outbound throughput, it
would be reasonable to have the abstraction reply to ARP requests with
only one MAC, but accept an inbound packet on any NIC.  It's the smart
routers that I'm not sure would accept constantly changing MACs for an 
IP.

jf
-- 
John Franklin
franklin@elfie.org
ICBM: 35°48'19"N 78°46'39"W