yahoo-eng-team team mailing list archive
-
yahoo-eng-team team
-
Mailing list archive
-
Message #95887
[Bug 2111254] [NEW] [ovn] distributed fip missing external_mac
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