On 05/08/14 22:16, Flavio Leitner wrote:
On Mon, Aug 04, 2014 at 12:08:48PM -0700, Andy Zhou wrote:
Zoltan,

Sorry it took a while to get back to you.  I am just coming up to
speed on OVS LACP implementation, so my understanding may not be
correct.  Please feel free to point them out If I am wrong.

According to wikipeida MC-LAG entry, there is no standard for it, they
are mostly designed and implemented by vendors.

After reading through the commit message, and comparing with the
802.1AX spec, I feel this seems like there is a bug in the MC-LAG
implementation/configuration issue. When the partner on port A comes
back again, should it wait for MC-LAG sync before using the default
profile to exchange states with OVS?

I agree that it sounds like a problem in the MC-LAG.  However, I also
agree that OVS could do better.

The aggregation selection policy is somewhat a gray area not defined
in any spec. The bonding driver offers ad_select= parameter which
allows to switch to the new aggregator only if, for instance, all the
ports are down in an active aggregator.

The Team driver implementing 802.3ad also provides the policy selection
parameter.  The default is to consider the prio in the LACPDU, but you
can also tell to not select any other aggregator if the current one is
still usable, or per bandwidth or per number of ports available.

My suggestion if we want to change something is to stick with bonding
driver default behavior regarding to select a new aggregator:
"""
table or 0

   The active aggregator is chosen by largest aggregate
   bandwidth.

   Reselection of the active aggregator occurs only when all
   slaves of the active aggregator are down or the active
   aggregator has no slaves.

   This is the default value.
"""
Documentation/networking/bonding.txt
As far as I understood, there isn't really a concept of aggregator in OVS, but "lead" in lacp_update_attached() is something similar. However it is recalculated at every iteration, and it is simply just the slave with the lower priority. Do you mean we should save "lead" into a new field in struct lacp, and select a new one only if lacp_partner_ready(lead) == false?

Zoli
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to