Comment 2 for bug 1917437

Revision history for this message
Pedro GuimarĂ£es (pguimaraes) wrote :

Hi @ksambor, I was reading through your change and one thing is not clear for me on neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/maintenance.py:

...
    for ls in self._nb_idl.ls_list().execute(check_error=True):
        mcast_eth, mcast_ip = '', ''
        if (ls.other_config.get(ovn_const.MCAST_SNOOP,
                                None) == value or not ls.name):
            continue
        for lsp in ls.ports:
            if lsp.type != ovn_const.LSP_TYPE_LOCALPORT:
                continue
            mcast_eth, mcast_ip = lsp.addresses[0].split() <<<-------
...

Which means that each Logical Switch (openstack network) will get the mcast eth and mcast ipv4 source addresses pointing to the last non localport on that switch. It seems to me that one of the VMs' ports would be selected in this case.
The risk, as pointed in the review, is if that chosen port is deleted.

There is no clear rule for the source MAC address but RFC 4541 [0] suggests that IP value can be 0.0.0.0 instead.

Given we can choose the same value across Logical Switches, I'd suggest we set both eth_src and ipv4_src via config options.

[0] https://datatracker.ietf.org/doc/html/rfc4541#section-2.1.1