From owner-freebsd-hackers Thu Feb 8 13:25:31 2001 Delivered-To: freebsd-hackers@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 618) id E8D7D37B6AA; Thu, 8 Feb 2001 13:25:09 -0800 (PST) Subject: call for testers: port aggregation netgraph module To: hackers@freebsd.org, net@freebsd.org Date: Thu, 8 Feb 2001 13:25:09 -0800 (PST) X-Mailer: ELM [version 2.4ME+ PL54 (25)] MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Message-Id: <20010208212509.E8D7D37B6AA@hub.freebsd.org> From: wpaul@FreeBSD.ORG (Bill Paul) Sender: owner-freebsd-hackers@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG 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