Public bug reported:

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 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

** Affects: neutron
     Importance: High
     Assignee: Lucas Alvares Gomes (lucasagomes)
         Status: New


** Tags: ovn ovs

** Changed in: neutron
   Importance: Undecided => High

** Description changed:

  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 nodes and
+ 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 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

-- 
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:
  New

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 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

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


-- 
Mailing list: https://launchpad.net/~yahoo-eng-team
Post to     : yahoo-eng-team@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yahoo-eng-team
More help   : https://help.launchpad.net/ListHelp

Reply via email to