Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 09 Feb 2001 16:49:17 -0700
From:      Lyndon Nerenberg <lyndon@orthanc.ab.ca>
To:        Chris Dillon <cdillon@wolves.k12.mo.us>
Cc:        Alex Pilosov <alex@pilosoft.com>, Dan Nelson <dnelson@emsphone.com>, Bill Paul <wpaul@FreeBSD.ORG>, hackers@FreeBSD.ORG, net@FreeBSD.ORG
Subject:   Re: call for testers: port aggregation netgraph module 
Message-ID:  <200102092349.f19NnHi02402@orthanc.ab.ca>
In-Reply-To: Your message of "Fri, 09 Feb 2001 16:47:27 CST." <Pine.BSF.4.32.0102091644260.85718-100000@mail.wolves.k12.mo.us> 

next in thread | previous in thread | raw e-mail | index | archive | help
>>>>> "Chris" == Chris Dillon <cdillon@wolves.k12.mo.us> writes:

    >> Its not real trunking. Your incoming traffic will still come on
    >> a single link, only outbound traffic will be shared. (Or at
    >> least that's how I think compaq stuff will work).

    Chris> Yes, I think that is how it works.  I'd guess that this
    Chris> doesn't matter in most cases since most servers are
    Chris> transmitting much more data than they are receiving.

For the Cisco scheme, let n equal the number of network interfaces
in the bundle. For each packet sent from the bundled host (i.e.
the host with bundled interfaces) mask off all but the bottom
log2(n) bits and use the result to select the interface to use.
E.g.:

	u_int if_cnt = 4;		/* we have four interfaces */
	u_int64_t mac;			/* the mac address we're sending to */
	struct iftab if[n];		/* list of interface entries */
	u_int64_t mask = ~0 & (n-1);	/* mask for iftab index */

	if[mac & mask]->send(data);

(Thus if_cnt must be a power of 2.) At zero state, something ARPs for
the hosts address. The calculation above determines which interface
the response goes out on, and therefore determines which of the
MAC addresses the requester sees for the host. The switches can
(and usually do) have some smarts in them as well. They know which
interfaces are part of the bundle for the host, allowing them to
maximize the flow of traffic _to_ the host by redirecting packets
to lightly used interfaces. (The bundled host doesn't care which
interface the packets arrives on.) This is also necessary to work
around interface failure.

So assuming a 100 Mb/s switched network fabric and four interfaces on the
bundled host, the bundled host can sustain up to 100 Mb/s full-duplex with
each of four seperate remote hosts concurrently (400 Mb/s aggregate). It
won't let you sustain 400 Mb/s to _one_ remote host (even if the remote
also has four bundled interfaces).

This works quite well for NFS servers if you have a lot of clients.
And it's usually cheaper than putting in gigabit ethernet on the switch
and server. (Plus you get redundency from the multiple interfaces.)

--lyndon


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?200102092349.f19NnHi02402>