Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 10 Jul 2012 08:56:36 -0400
From:      Andrew Boyer <aboyer@averesystems.com>
To:        Adarsh Joshi <adarsh.joshi@qlogic.com>
Cc:        "freebsd-net@freebsd.org" <freebsd-net@freebsd.org>
Subject:   Re: lacp lagg port flags do not show correctly resulting in poor traffic distribution/performance
Message-ID:  <4C5FC147-2F49-4AE0-ADF3-C5381DE6580F@averesystems.com>
In-Reply-To: <5E4F49720D0BAD499EE1F01232234BA877435B2E28@AVEXMB1.qlogic.org>
References:  <5E4F49720D0BAD499EE1F01232234BA877435B2E28@AVEXMB1.qlogic.org>

next in thread | previous in thread | raw e-mail | index | archive | help

On Jul 9, 2012, at 8:38 PM, Adarsh Joshi wrote:

> Hi,
>=20
> I am trying to configure lacp lagg interfaces with 2 systems connected =
back to back as follows:
>=20
> Ifconfig lagg0 create
> Ifconfig lagg0 laggproto lacp laggport ql0 laggport ql1 192.168.100.1 =
netmask 255.255.255.0
>=20
> Sometimes, the lag interface comes up correctly but sometimes the =
laggport flags do not show properly. Instead of =
1c<ACTIVE,COLLECTING,DISTRIBUTING>, it shows values of 18. I have seen =
similar issues reported on various forums with no solution.
> Looking at the lagg driver code and reading the standard, I thought =
the laggport flags ( defined in if_lagg.h) are based on the =
LACP_STATE_BITS in file ieee8023ad_lacp.h. But the following ifconfig -v =
output does not make any sense to me.
>=20
> My concern is that when all the interfaces show flags as 1c, the =
traffic is distributed across both the interfaces uniformly and I get =
aggregated throughput. If not, the traffic flows only on 1 interface.
>=20
> Is this a bug? How do I solve this? Or am I doing something wrong?
>=20
> I am using Free-BSD 9.0 release.
>=20
> System 1:
> # ifconfig -v lagg0
>        lag id: [(8000,00-0E-1E-08-05-20,0213,0000,0000),
>                 (8000,00-0E-1E-04-2C-F0,0213,0000,0000)]
>        laggport: ql1 flags=3D18<COLLECTING,DISTRIBUTING> state=3D7D
>                [(8000,00-0E-1E-08-05-20,0213,8000,000F),
>                 (FFFF,00-00-00-00-00-00,0000,FFFF,0000)]
>        laggport: ql0 flags=3D1c<ACTIVE,COLLECTING,DISTRIBUTING> =
state=3D3D
>                [(8000,00-0E-1E-08-05-20,0213,8000,000E),
>                 (8000,00-0E-1E-04-2C-F0,0213,8000,000E)]
>=20
> System 2:
>=20
> # ifconfig -v lagg0
>        lag id: [(8000,00-0E-1E-04-2C-F0,0213,0000,0000),
>                 (FFFF,00-00-00-00-00-00,0000,0000,0000)]
>        laggport: ql1 flags=3D1c<ACTIVE,COLLECTING,DISTRIBUTING> =
state=3D7D
>               [(8000,00-0E-1E-04-2C-F0,0213,8000,000F),
>                 (FFFF,00-00-00-00-00-00,0000,FFFF,0000)]
>        laggport: ql0 flags=3D18<COLLECTING,DISTRIBUTING> state=3D3D
>                [(8000,00-0E-1E-04-2C-F0,0213,8000,000E),
>                 (8000,00-0E-1E-08-05-20,0213,8000,000E)]
>=20
>=20
> thanks
> Adarsh
>=20


I don't think you have a port flags problem per se; the flags are =
correctly displaying the state of the lagg.  Your problem is that your =
systems aren't negotiating the correct lagg configuration.  Each tuple =
after the laggport represents the [(actor state),(partner state)].  =
Ports ql0 have been able to talk to their partners (each other).  =
Neither ql1 port has seen a response from a partner, though.

You could try restarting the state machine on one box with 'ifconfig =
lagg0 laggproto lacp'.  To see the negotiation you'll need to rebuild =
your kernel with '#define LACP_DEBUG 1' added to the top of =
sys/net/ieee802.3ad_lacp.c.  Or upgrade to a newer stable snapshot that =
has the net.lacp_debug sysctl and turn it on.

Or just turn off LACP.  What does it get you in this configuration?

Hope this helps,
  Andrew

--------------------------------------------------
Andrew Boyer	aboyer@averesystems.com







Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4C5FC147-2F49-4AE0-ADF3-C5381DE6580F>