Bug 1818741 - Allowed address pairs can't float between different VM's with DVR
Summary: Allowed address pairs can't float between different VM's with DVR
Keywords:
Status: CLOSED WONTFIX
Alias: None
Product: Red Hat OpenStack
Classification: Red Hat
Component: openstack-neutron
Version: 13.0 (Queens)
Hardware: Unspecified
OS: Unspecified
high
high
Target Milestone: ---
: ---
Assignee: Slawek Kaplonski
QA Contact: Eran Kuris
URL:
Whiteboard:
: 1891290 (view as bug list)
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2020-03-30 09:00 UTC by Brendan Shephard
Modified: 2024-06-13 22:32 UTC (History)
18 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
: 1850977 (view as bug list)
Environment:
Last Closed: 2021-02-16 21:58:07 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Issue Tracker OSP-31715 0 None None None 2024-03-25 15:47:58 UTC

Description Brendan Shephard 2020-03-30 09:00:46 UTC
Description of problem:
If allowed address pairs are used and the secondary IP is assigned to a single interface inside a VM. Currently, this will cause issues as described here:
https://bugzilla.redhat.com/show_bug.cgi?id=1818695 

This can be worked around in the case of Octavia by adding it to the ignored_device_owners list. However, this would still impact normal VM's that are using something like keepalived to float the IP address around as required. If the IP address were to be moved, and we were using ignored_device_owners, then the arp cache would never be updated to reflect the move. As such, it would break the HA Nature of the application.

Version-Release number of selected component (if applicable):
openstack-neutron-12.1.1-6.el7ost.noarch

How reproducible:
100%

Steps to Reproduce:
1. Create 2 VM's with allowed-address-pairs and 1 extra Port that matches the allowed-address-pair
2. Configure the extra port IP as a secondary IP on one of the VM's
3. Restart neutron_l3_agent
4. Under current situations this will break as described in https://bugzilla.redhat.com/show_bug.cgi?id=1818695. If we use HA Octavia as an example, we have added Octavia to the ignored_device_owners and fixed the initial problem.
5. Fail-over the FIP to a Standby Device. 


Actual results:
This change will not be updated in the ARP cache, as such the traffic will break. 

Expected results:
The ARP cache needs to be updated in such a way that it takes into account unbound ports and updates the MAC addresses more dynamically to reflect where the IP address actually lives.

Additional info:
This is going to be difficult to preempt since we can't know where the IP address is at any one time. keepalived could choose a host that we are not expecting. As such, the only solution I can think of is to rely on the ARP who-has responses seen on the DVR routers. We could use that response to update the ARP entries on each DVR qrouter namespace.

Comment 30 Richard Barrott 2020-10-06 00:22:55 UTC
Hi Slawek,
are there any updates on this BZ that we can communicate to the customer?

Thanks,

-Richard (dedicated TAM)

Comment 31 Slawek Kaplonski 2020-10-06 06:21:58 UTC
Hi Richard,

Patch https://review.opendev.org/601336 is still in review u/s and tbh most of the core reviewers were recently busy with other stuff related to release of stable/victoria so there wasn't much progress on that one.

Comment 34 Bernard Cafarelli 2020-11-02 15:01:14 UTC
*** Bug 1891290 has been marked as a duplicate of this bug. ***

Comment 55 Slawek Kaplonski 2021-02-17 07:28:07 UTC
Hi Mohammad,

It's not fixed in OSP-16 (and u/s master) for ML2/OVS and DVR.
It is however working fine for ML2/OVN backend which is default in OSP-16 and which has distributed routing running "out-of-the-box".


Note You need to log in before you can comment on or make changes to this bug.