Switches, Hubs, and Modems
cancel
Showing results for 
Search instead for 
Did you mean: 

802.3ad trunk to Linux host

Sebastian Reitenbach
Occasional Contributor

802.3ad trunk to Linux host

Hi,

I want to connect a Linux host, running 2.6.X kernel, to the procurve switch:
ProCurve J4903A Switch 2824
Firmware revision I.08.87

the trunk is configured on the switch like this:
16 | srv4_eth1 100/1000T | Trk6 LACP
18 | srv5_eth1 100/1000T | Trk6 LACP

and on the Linux host in /etc/sysconfig/network/ifcfg-bond0:
STARTMODE='onboot'
BOOTPROTO='dhcp'

BONDING_MASTER='yes'
BONDING_SLAVE_0='eth0'
BONDING_SLAVE_1='eth1'
BONDING_MODULE_OPTS='mode=4'

modinfo bonding shows:
filename: /lib/modules/2.6.18.2-34-default/kernel/drivers/net/bonding/bonding.ko
license: GPL
version: 3.0.3
description: Ethernet Channel Bonding Driver, v3.0.3
author: Thomas Davis, tadavis@lbl.gov and many others
vermagic: 2.6.18.2-34-default SMP mod_unload 586 REGPARM gcc-4.1
supported: yes
depends:
srcversion: B2C9683F1ACABD424F3F70B
parm: arp_ip_target:arp targets in n.n.n.n form (array of charp)
parm: arp_interval:arp interval in milliseconds (int)
parm: xmit_hash_policy:XOR hashing method: 0 for layer 2 (default), 1 for layer 3+4 (charp)
parm: lacp_rate:LACPDU tx rate to request from 802.3ad partner (slow/fast) (charp)
parm: primary:Primary network device to use (charp)
parm: mode:Mode of operation : 0 for balance-rr, 1 for active-backup, 2 for balance-xor, 3 for broadcast, 4 for 802.3ad, 5 for balance-tlb, 6 for balance-alb (charp)
parm: use_carrier:Use netif_carrier_ok (vs MII ioctls) in miimon; 0 for off, 1 for on (default) (int)
parm: downdelay:Delay before considering link down, in milliseconds (int)
parm: updelay:Delay before considering link up, in milliseconds (int)
parm: miimon:Link check interval in milliseconds (int)
parm: max_bonds:Max number of bonded devices (int)

I also tried with the kernel parameter: lacp_rate set to slow and fast, but no difference.

When I attach tcpdump to the bond0 interface on the Linux host, then I see broadcasts and multicast packets arriving. The bond0 interface does not get a DHCP address, nor does it work with statically configured IP address.

When I change the switch configuration to use Trunk instead of LACP, and change the kernel parameters mode=0 of the bonding module on the Linux host, then everything is working fine.

Is 802.3ad known to work between such a switch and a Linux host?

kind regards
Sebastian
1 REPLY
rick jones
Honored Contributor

Re: 802.3ad trunk to Linux host

I'm not sure the extent to which the Linux bonding driver has been tested agaoinst ProCurve's LACP implementation, but I _would_ suggest using something other than bonding mode 0. Round robbin, particularly at higher link counts in the aggregate, is just asking for packet reordering issues, which will make TCP rather unhappy.

BTW, "X" in 2.6.X is pretty broad, and covers several years now. It would be good to narrow that down, considerably. Even though we can guess based on the modinfo you posted :)

When you try the various modes, what appears in dmesg? Anything logged on the switch? Do things work if you use a static IP rather than DHCP?
there is no rest for the wicked yet the virtuous have no pillows