Subject: Re: [zebra 4686] load balancing internet links
To: None <firstname.lastname@example.org>
From: James Sharp <email@example.com>
Date: 08/07/2000 19:51:10
On Mon, 7 Aug 2000 firstname.lastname@example.org wrote:
> I've been thinking about how to go about implementing this in
> *BSD. The strategy that I'm leaning towards is to create a pseudo
> device that acts as a front end to the physical devices. The pseudo
> device would support ioctls to add and remove physical devices to/from
> its list of devices to round-robin packets out of. So you could do
> something like the following to inverse mux two ethernet interfaces:
> ifconfig imux0 192.168.1.1 netmask 255.255.255.252
> imuxcfg imux0 add le0 some_mac_address
> imuxcfg imux0 add le1 some_mac_address
> route add default 192.168.1.2
> where some_mac_address is the mac address of the ethernet card of the
> machine on the other end of the wire.
I did some thinking about this a while back and here's what I came up
1) This would be blindingly fast for output by round robining the packets
across the assorted interface.
2) Unless directly attached to another machine running the same RR
technique, data flowing into the machine would only go into one card
because the machine would reply to an ARP for one card and that MAC would
be cached in the machine doing the ARP request.
You could get around this by assigning all interfaces the same MAC
address, but this tends to drive ethernet switches nuts...and you couldn't
use a hub, either.
An implementation of the 802.1Q VLAN protocol could solve this, though.
Have a packet come in on any interface, look at its VLAN tag, then route
it to the appropriate ifmux device.
This is just what I'm remembering from a late night discussion with
someone...so there may be holes in the logic.