Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 15 Jan 1999 11:59:43 +0100 (MET)
From:      Luigi Rizzo <luigi@labinfo.iet.unipi.it>
To:        easmith@beatrice.rutgers.edu (Allen Smith)
Cc:        net@FreeBSD.ORG
Subject:   Re: Cisco/Intel Ethernet Trunking
Message-ID:  <199901151059.LAA02067@labinfo.iet.unipi.it>
In-Reply-To: <9901142208.ZM5749@beatrice.rutgers.edu> from "Allen Smith" at Jan 14, 99 10:07:45 pm

next in thread | previous in thread | raw e-mail | index | archive | help
[redirected to -net because it is more relevant there]

> > Cisco seems to think that FreeBSD supports ethernet trunking, where
> > multiple fxp cards in the machine connect to multiple 100BaseT ports on
> > the switch and all appear as 1 "port" at 100/200/300/400 MB/s.
> > 
> > Is this actually supported in stable?  If so how do you set it up?
> 
> See ftp://ftp.flirble.org/pub/unix/hacks/FreeBSD/mpath. This work is
> still in progress; one thing that would be good for this would be
> doing packet output to the least-loaded interface, instead of via the
> current round-robin method.

i think some pieces of the bridging code already in -stable/-current
could be related to this. For bridging i had to implement the
concept of a cluster of interfaces so that processes on the bridge
machine could talk to the outside world independently of which side
of the bridge the destination was.

The approach i have chosen is:
  * assign IP addresses only to one interface ('head') in each cluster;
  * ARP is resolved using the head-of-cluster ethernet address;
  * Incoming pkts from any interface in a cluster are sent up as if
    they are coming from the head-of-cluster;
  * outgoing pkts are sent down the protocol stack using the
    head-of-cluster interface up to ether_output(), where they are
    redirected appropriately (e.g. in the case of a bridge basing on the
    dest.ethernet address).

This would all map nicely with the concept of ethernet trunking,
if one does one additional thing: force the same ethernet address
for all ports in a trunk. This is necessary to avoid the need to
put cards in promiscuous mode if they can only match one destination
address.

The relevant code is in /sys/netinet, /sys/net and the various if_xxx.c
device driver, near the #ifdef BRIDGE sections.

If someone wants to implement this stuff please let me know, i'd
be happy to integrate this in the tree.

	cheers
	luigi
-----------------------------------+-------------------------------------
  Luigi RIZZO                      .
  EMAIL: luigi@iet.unipi.it        . Dip. di Ing. dell'Informazione
  HTTP://www.iet.unipi.it/~luigi/  . Universita` di Pisa
  TEL/FAX: +39-050-568.533/522     . via Diotisalvi 2, 56126 PISA (Italy)
-----------------------------------+-------------------------------------

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-net" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199901151059.LAA02067>