← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 2044272] Re: Inconsistent IGMP configuration across drivers

 

Reviewed:  https://review.opendev.org/c/openstack/neutron/+/901753
Committed: https://opendev.org/openstack/neutron/commit/114ca0f1be8c10915d7e755e68ac2117f7db78e7
Submitter: "Zuul (22348)"
Branch:    master

commit 114ca0f1be8c10915d7e755e68ac2117f7db78e7
Author: Lucas Alvares Gomes <lucasagomes@xxxxxxxxx>
Date:   Wed Nov 22 13:05:24 2023 +0000

    Fix IGMP inconsistency across drivers
    
    Prior to this patch, ML2/OVS and ML2/OVN had inconsistent IGMP
    configurations. Neutron only exposed one configuration option for IGMP:
    igmp_snooping_enabled.
    
    Other features such as IGMP flood, IGMP flood reports and IGMP flood
    unregistered were hardcoded differently on each driver (see LP#2044272
    for a more details).
    
    These hardcoded values has led to many changes over the years tweaking
    them to work on different scenarios but they were never final because
    the fix for one case would break the other.
    
    This patch introduces 3 new configuration options for these other IGMP
    features that can be enabled or disabled on both backends. Operators
    can now fine tune their deployments in the way that will work for them.
    
    As a consequence of the hardcoded values for each driver we had to break
    some defaults and, in the case of ML2/OVS, if operators want to keep
    things as they were before this patch they will need to enable the new
    mcast_flood and mcast_flood_unregistered configuration options.
    
    That said, the for ML2/OVS there was also an inconsistency with the help
    string of igmp_snooping_enabled configuration option as it mentioned
    that enabling snooping would disable flooding to unregistered ports but
    that was not true anymore after the fix [0].
    
    [0] https://bugs.launchpad.net/neutron/+bug/1884723
    
    Closes-Bug: #2044272
    Change-Id: Ic4dde46aa0ea2b03362329c87341c83b24d32176
    Signed-off-by: Lucas Alvares Gomes <lucasagomes@xxxxxxxxx>


** Changed in: neutron
       Status: In Progress => Fix Released

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to neutron.
https://bugs.launchpad.net/bugs/2044272

Title:
  Inconsistent IGMP configuration across drivers

Status in neutron:
  Fix Released

Bug description:
  Currently there's only one configuration available for IGMP in
  Neutron: [ovs]/igmp_snooping_enable.

  By enabling this we will get different behaviors on ML2/OVN and
  ML2/OVS because the rest of the igmp configuration: "mcast-snooping-
  flood", "mcast-snooping-flood-reports" and "mcast-snooping-disable-
  flood-unregistered" are hard coded with different values in both
  drivers.

  For example, in the help string for the [ovs]/igmp_snooping_enable it
  says [0]:

  """
  ... Setting this option to True will also enable the Open vSwitch mcast-snooping-disable-flood-unregistered flag...

  """

  But that's only true for ML2/OVN nowadays where it was changed in 2020
  [1] to match the behavior of ML2/OVS. But, in 2021, ML2/OVS changed
  this behavior again [2] and now this has caused another issue with one
  of our customers.

  Right now, ML2/OVN will disable the flooding to unregistered ports and
  ML2/OVS will enable it.

  This back and forth changing IGMP values is not new [3], this patch
  for example disables the "mcast-snooping-flood-reports" in ML2/OVN
  where it was hard coded as enabled before. The patch [4] is what
  enabled "mcast-snooping-flood" and "mcast-snooping-flood-reports" for
  OVN provnet ports. Then patch [1] disabled "mcast-snooping-flood-
  reports" for OVN provnet ports... And so on... It's messy.

  The fact is that, since Neutron exposes only one configuration for
  IGMP but the backend offers a total of 4 config options we will never
  get it right. There will always be a use case that will have problems
  with these hard coded settings and we will have to keep changing it
  indefinitely.

  This LP is proposing making a definitive and final change for IGMP in
  Neutron by exposing all these knobs to the operators via config
  options. I know in OpenStack nowadays we strive to have fewer
  configuration options where possible but, I think this is one case
  where this should not be applicable because of the many ways multicast
  can be configured on each deployment.

  As part of this work tho, we will have to change the defaults of one
  of the drivers to make them consistent again and I would argue, given
  the help string for igmp_snooping_enable, that everything should be
  disabled by default.

  [0] https://github.com/openstack/neutron/blob/2be4343756863f252c8289e2ca3e7afe71f566c4/neutron/conf/agent/ovs_conf.py#L41-L46
  [1] https://review.opendev.org/c/openstack/neutron/+/762818
  [2] https://review.opendev.org/c/openstack/neutron/+/766360
  [3] https://review.opendev.org/c/openstack/neutron/+/888127
  [4] https://review.opendev.org/c/openstack/neutron/+/779258

To manage notifications about this bug go to:
https://bugs.launchpad.net/neutron/+bug/2044272/+subscriptions



References