Public bug reported: Greetings,
Running neutron 2025.1 (26.0.0) and ovn 24.03.2, I found the following problem attaching a fip to a vip. The main issue was found when creating an octavia loadbalancer. Creating an octavia loadbalancer without any listeners, results in a vip port that is in status down. This is reflected in ovns nb and sb db as the virtual port is `up = false`. When a user now attaches a floating ip to this port than the nat entry in the nb db gets all the external_ids such as neutron:fip_external_mac set. But as the port is not up the external_mac is not getting set by neutron. That all makes sense to me as [1] is only executed when the port is up. Now the issue comes when I create an octavia listener. That internally configures keepalived and starts using the vip address. The vip port switches its state from down to up which is also reflected in nb and sb db with `up = true`. But neutron never sets the external_mac address. Running neutron in DEBUG mode I only see that neutron sees a `PortBindingUpdateVirtualPortsEvent` for the port when creating a listener. But if I understand the code correctly the external_mac is only set when going through `LogicalSwitchPortUpdateUpEvent`. I monitored the sb db for up changes while creating a listener and was able to see the change for my virtual port: ``` ovsdb-client monitor tcp:127.0.0.1:6642 OVN_Southbound Port_Binding up row action up ------------------------------------ ------ ----- eaf3b69a-89b5-4f4a-819a-be15d9f31021 old false new true ``` To me this seems like a bug in neutron where when the virtual port is not up while attaching a fip the external_mac is never set again. Does anyone got an idea where this issue might be? Thanks in advance Best Regards Max [1] https://github.com/openstack/neutron/blob/26.0.0/neutron/plugins/ml2/drivers/ovn/mech_driver/mech_driver.py#L1225-L1232 ** Affects: neutron Importance: Undecided Status: New ** Description changed: Greetings, Running neutron 2025.1 (26.0.0) and ovn 24.03.2, I found the following problem attaching a fip to a vip. The main issue was found when creating an octavia loadbalancer. Creating an octavia loadbalancer without any listeners, results in a vip port that is in status down. This is reflected in ovns nb and sb db as the virtual port is `up = false`. When a user now attaches a floating ip to this port than the nat entry in the nb db gets all the external_ids such as neutron:fip_external_mac set. But as the port is not up the external_mac is not getting set by neutron. That all makes sense to me as [1] is only executed when the port is up. Now the issue comes when I create an octavia listener. That internally configures keepalived and starts using the vip address. The vip port switches its state from down to up which is also reflected in nb and sb db with `up = true`. - But neutron never sets the external_mac address. + But neutron never sets the external_mac address. Running neutron in DEBUG mode I only see that neutron sees a `PortBindingUpdateVirtualPortsEvent` for the port when creating a listener. But if I understand the code correctly the external_mac is only set when going through `LogicalSwitchPortUpdateUpEvent`. I monitored the sb db for up changes while creating a listener and was able to see the change for my virtual port: ``` ovsdb-client monitor tcp:127.0.0.1:6642 OVN_Southbound Port_Binding up row action up ------------------------------------ ------ ----- eaf3b69a-89b5-4f4a-819a-be15d9f31021 old false - new true + new true ``` To me this seems like a bug in neutron where when the virtual port is not up while attaching a fip the external_mac is never set again. - - Running neutron 2025.1 (26.0.0). Does anyone got an idea where this issue might be? Thanks in advance Best Regards Max [1] https://github.com/openstack/neutron/blob/26.0.0/neutron/plugins/ml2/drivers/ovn/mech_driver/mech_driver.py#L1225-L1232 -- You received this bug notification because you are a member of Yahoo! Engineering Team, which is subscribed to neutron. https://bugs.launchpad.net/bugs/2111254 Title: [ovn] distributed fip missing external_mac Status in neutron: New Bug description: Greetings, Running neutron 2025.1 (26.0.0) and ovn 24.03.2, I found the following problem attaching a fip to a vip. The main issue was found when creating an octavia loadbalancer. Creating an octavia loadbalancer without any listeners, results in a vip port that is in status down. This is reflected in ovns nb and sb db as the virtual port is `up = false`. When a user now attaches a floating ip to this port than the nat entry in the nb db gets all the external_ids such as neutron:fip_external_mac set. But as the port is not up the external_mac is not getting set by neutron. That all makes sense to me as [1] is only executed when the port is up. Now the issue comes when I create an octavia listener. That internally configures keepalived and starts using the vip address. The vip port switches its state from down to up which is also reflected in nb and sb db with `up = true`. But neutron never sets the external_mac address. Running neutron in DEBUG mode I only see that neutron sees a `PortBindingUpdateVirtualPortsEvent` for the port when creating a listener. But if I understand the code correctly the external_mac is only set when going through `LogicalSwitchPortUpdateUpEvent`. I monitored the sb db for up changes while creating a listener and was able to see the change for my virtual port: ``` ovsdb-client monitor tcp:127.0.0.1:6642 OVN_Southbound Port_Binding up row action up ------------------------------------ ------ ----- eaf3b69a-89b5-4f4a-819a-be15d9f31021 old false new true ``` To me this seems like a bug in neutron where when the virtual port is not up while attaching a fip the external_mac is never set again. Does anyone got an idea where this issue might be? Thanks in advance Best Regards Max [1] https://github.com/openstack/neutron/blob/26.0.0/neutron/plugins/ml2/drivers/ovn/mech_driver/mech_driver.py#L1225-L1232 To manage notifications about this bug go to: https://bugs.launchpad.net/neutron/+bug/2111254/+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