Comment 16 for bug 1901707

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to neutron (stable/victoria)

Reviewed: https://review.opendev.org/c/openstack/neutron/+/790702
Committed: https://opendev.org/openstack/neutron/commit/44847d11ada9f067a0374a349aefefb628df1868
Submitter: "Zuul (22348)"
Branch: stable/victoria

commit 44847d11ada9f067a0374a349aefefb628df1868
Author: Rodolfo Alonso Hernandez <email address hidden>
Date: Thu Dec 3 11:58:35 2020 +0000

    [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

    Conflicts:
          zuul.d/tempest-multinode.yaml

    Change-Id: Iee323943ac66e566e5a5e92de1861832e86fc7fc
    (cherry picked from commit f8a22c7d4aa654eaad3b683073849c873ea3beff)