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