neutron/neutron
Rodolfo Alonso Hernandez f8a22c7d4a [OVS] Fix live-migration connection disruption
The goal of this patch is to avoid the connection disruption during
the live-migration using OVS. Since [1], when a port is migrated,
both the source and the destination hosts are added to the profile
binding information. Initially, the source host binding is activated
and the destination is deactivated.

When the port is created in the destination host (created by Nova),
the port was not configured because the binding was not activated.
The binding (that means, all the OpenFlow rules) was done when Nova
sent the port activation. That happend when the VM was already
running in the destination host. If the OVS agent was loaded, the
port was bound seconds later to the port activation.

Instead, this patch enables the OpenFlow rule creation in the
destination host when the port is created.

Another problem are the "neutron-vif-plugged" events sent by Neutron
to Nova to inform about the port binding. Nova is expecting one single
event informing about the destination port binding. At this moment,
Nova considers the port is bound and ready to transmit data.

Several triggers were firing expectedly this event:
- When the port binding was updated, the port is set to down and then
  up again, forcing this event.
- When the port binding was updated, first the binding is deleted and
  then updated with the new information. That triggers in the source
  host to set the port down and the up again, sending the event.

This patch removes those events, sending the "neutron-vif-plugged"
event only when the port is bound to the destination host (and as
commented before, this is happening now regardless of the binding
activation status).

This feature depends on [2]. If this Nova patch is not in place, Nova
will never plug the port in the destination host and Neutron won't be
able to send the vif-plugged event to Nova to finish the
live-migration process.

Because from Neutron cannot query Nova to know if this patch is in
place, a new temporary configuration option has been created to enable
this feature. The default value will be "False"; that means Neutron
will behave as before.

[1]https://bugs.launchpad.net/neutron/+bug/1580880
[2]https://review.opendev.org/c/openstack/nova/+/767368

Closes-Bug: #1901707

Change-Id: Iee323943ac66e566e5a5e92de1861832e86fc7fc
2021-01-13 11:13:41 +00:00
..
agent [OVS] Fix live-migration connection disruption 2021-01-13 11:13:41 +00:00
api Merge "Get sec group ids after address group update" 2021-01-09 02:00:45 +00:00
cmd Add script which can clean patch ports between bridges 2020-12-10 10:08:02 +00:00
common Merge "[ovn] Add neutron network to metadata namespace names" 2021-01-09 07:46:05 +00:00
conf [OVS] Fix live-migration connection disruption 2021-01-13 11:13:41 +00:00
core_extensions Remove usage of six.add_metaclass 2020-05-21 14:41:18 -04:00
db [OVS] Fix live-migration connection disruption 2021-01-13 11:13:41 +00:00
debug Fix neutron debug probe to use integration_bridge 2020-03-31 11:17:47 +00:00
extensions Merge "Add normalized_cidr column to SG rules" 2021-01-10 16:32:05 +00:00
hacking Remove "six" library 2020-07-28 16:55:52 +00:00
ipam Switch to new engine facade for IpamPluggableBackend and Ipam driver 2020-12-15 11:10:36 +00:00
locale Imported Translations from Zanata 2020-10-11 07:22:44 +00:00
notifiers [OVS] Fix live-migration connection disruption 2021-01-13 11:13:41 +00:00
objects Merge "Add normalized_cidr column to SG rules" 2021-01-10 16:32:05 +00:00
pecan_wsgi Log exception generated in Controller.prepare_request_body 2020-08-18 16:18:34 -03:00
plugins [OVS] Fix live-migration connection disruption 2021-01-13 11:13:41 +00:00
privileged Implement "FdbInterface" with Pyroute2 2020-12-24 17:00:06 +00:00
profiling Remove "six" library 2020-07-28 16:55:52 +00:00
quota Remove "six" library 2020-07-28 16:55:52 +00:00
scheduler Finish the new DB engine facade migration 2020-11-24 09:20:35 +00:00
server Re-use existing ProcessLauncher from wsgi in RPC workers 2020-02-07 14:51:06 +01:00
services Merge "Refactor the Neutron OSKenApp class" 2021-01-05 10:55:21 +00:00
tests [OVS] Fix live-migration connection disruption 2021-01-13 11:13:41 +00:00
__init__.py Remove usage of six.PY2 2020-05-22 12:59:01 -04:00
_i18n.py
auth.py
manager.py Remove usage of six.add_metaclass 2020-05-21 14:41:18 -04:00
neutron_plugin_base_v2.py Remove usage of six.add_metaclass 2020-05-21 14:41:18 -04:00
opts.py Ensure XenAPI options are loaded 2021-01-03 20:53:01 +09:00
policy.py Remove usage of six.text_type and six.string_type 2020-05-22 14:02:55 -04:00
service.py Re-use existing ProcessLauncher from wsgi in RPC workers 2020-02-07 14:51:06 +01:00
version.py
worker.py Change process name of neutron-server to match worker role 2019-03-01 14:18:09 -05:00
wsgi.py Remove usage of six.text_type and six.string_type 2020-05-22 14:02:55 -04:00