Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 8 Feb 2001 13:25:09 -0800 (PST)
From:      wpaul@FreeBSD.ORG (Bill Paul)
To:        hackers@freebsd.org, net@freebsd.org
Subject:   call for testers: port aggregation netgraph module
Message-ID:  <20010208212509.E8D7D37B6AA@hub.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://www.freebsd.org/~wpaul/FEC/4.x/fec.tar.gz
http://www.freebsd.org/~wpaul/FEC/5.x/fec.tar.gz

This is a call for testers for a netgraph module that can be used to
aggregate 2 or 4 ethernet interfaces into a single interface. Basically,
it lets you do things like the following:

# kldload ./ng_fec.ko
# ngctl mkpeer fec dummy fec
# ngctl msg fec0: add_iface '"dc0"'
# ngctl msg fec0: add_iface '"dc1"'
# ngctl msg fec0: add_iface '"dc2"'
# ngctl msg fec0: add_iface '"dc3"'
# ngctl msg fec0: set_mode_inet

The fec module will work with *any* combination of interfaces, not
just multiport ethernet cards, however the port failover mechanism
will not work unless the interface supports ifmedia and is able to
report the link status. Cards that use the fxp, de, xl, tl, rl, sis,
dc, wb, ste, sf, vr, ti and sk drivers should work. Yes, that means
you can aggregate RealTek cards and gigabit ethernet cards together.

The channel bonding is done using the Cisco fast etherchannel mechanism.
The default hashing mechanism uses the MAC address, however you can
select IP address hashing as well. IPv4 and IPv6 address *should* work,
though I must admit I've been using IPv4 until now. If someone actually
has a Cisco switch that implements fast ethetchannel, I'd be interested
to know if it works with this module. At the moment, my test environment
consist of two machines with multiport ethernet cards wired up using
four crossover cables.

Each link is checked once every second to see if the link is still up.
An attempt to send a packet over a dead link will cause the packet to
be shifted over to the next link in the bundle.

There are tarballs for 4.x and 5.x systems. The 4.x tarball should
work on 4.2-RELEASE or later. The 5.x one will work on -current. Both
source and pre-compiled modules for x86 are provided. This code should
work on the alpha as well.

You can create more than one bundle by using more than one mkpeer
command with ngctl(8). You can delete interfaces from a bundle using
the del_iface command, which works just like the add_iface command.
The fec0 pseudo-interface will inherit the MAC address of the first
real interface to be added to the bundle, and that same MAC address
will be propagated to all subsequent interfaces that are added. The
MAC addresses are restored when an interface is removed from a bundle.
Once the bundle is created, you can manipulate the fec0 interface
as though it were a real ethernet interface. You must have either 2
or 4 NICs in the bundle.

Share, enjoy, test, and report back to me any problems you encounter.

-Bill


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




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