[RFE] Port binding event extended information for Nova

Bug #1821058 reported by Rodolfo Alonso
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
neutron
Confirmed
Wishlist
Rodolfo Alonso

Bug Description

The information provided in this RFE will be submitted in a spec.

There are several cases in the Nova/Neutron/os-vif interaction where the knowledge of the neutron core plugin or ML2 driver would be useful to facilitate a more robust handling of guest networking.

For example, in Icehouse, a external event mechanism was introduced to allow neutron to notify Nova of network changes and VIF plugging. As the occasion on which these events are emitted is dependent on the driver that bound the port and Nova does not have knowledge of that. Therefore, Nova cannot rely on the event to synchronize the operation between Nova and neutron, which has lead to a race condition in the past.

This RFE proposes to add new information in "vif_details" to be sent to os-vif/Nova:
- bound_drivers: a map between the binding level and the bound driver
- connectivity: to define the type of driver (layer 2 or layer 3).
- network_events: an abstract semantic, commonly defined between Nova and Neutron, to define network events. Nova will use those events to know the VIF status and the drivers will provide this information in a standard way.

Tags: rfe-approved
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Related fix proposed to neutron-specs (master)

Related fix proposed to branch: master
Review: https://review.openstack.org/645173

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Related fix proposed to neutron-lib (master)

Related fix proposed to branch: master
Review: https://review.openstack.org/645288

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Related fix proposed to neutron (master)

Related fix proposed to branch: master
Review: https://review.openstack.org/645645

Miguel Lavalle (minsel)
Changed in neutron:
importance: Undecided → Wishlist
status: New → Confirmed
tags: added: rfe
Miguel Lavalle (minsel)
tags: added: rfe-triaged
removed: rfe
description: updated
Revision history for this message
Miguel Lavalle (minsel) wrote :

This RFE was discussed and approved by the drivers team, under the assumption that the spec will be developed following the following principles:

1) neutron/ the ml2 drivers to declare the semantic of what event sent to Nova mean to them
2) and then teach nova to deal with that
3) but not teach nova about the 50 or so neutron backends

tags: added: rfe-approved
removed: rfe-triaged
Changed in neutron:
assignee: nobody → Rodolfo Alonso (rodolfo-alonso-hernandez)
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Related fix merged to neutron-lib (master)

Reviewed: https://review.opendev.org/645288
Committed: https://git.openstack.org/cgit/openstack/neutron-lib/commit/?id=c26573f847958fc090ba55b9c086a1cc5756b15d
Submitter: Zuul
Branch: master

commit c26573f847958fc090ba55b9c086a1cc5756b15d
Author: Rodolfo Alonso Hernandez <email address hidden>
Date: Thu Mar 21 18:01:46 2019 +0000

    Add new vif_details parameters

    Added two new vif_details parameters:
      - connectivity: informs about the back-end connectivity level (l2,
        l3 or not specified).
      - bound_drivers: a dict of binding level to driver name.

    Change-Id: I7786516672af795ac7f192504102a7388c6b7d80
    Related-Bug: #1821058

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Related fix merged to neutron-specs (master)

Reviewed: https://review.opendev.org/645173
Committed: https://git.openstack.org/cgit/openstack/neutron-specs/commit/?id=fde298d0a179987a4195c8e12a66a2aa968ddfb6
Submitter: Zuul
Branch: master

commit fde298d0a179987a4195c8e12a66a2aa968ddfb6
Author: Rodolfo Alonso Hernandez <email address hidden>
Date: Thu Mar 21 13:39:13 2019 +0000

    Port binding event extended information for Nova

    There are several cases in the Nova/Neutron/os-vif interaction
    where the knowledge of the neutron core plugin or ML2 driver
    would be useful to facilitate a more robust handling of guest
    networking.

    For example, in Icehouse, a external event mechanism was
    introduced to allow neutron to notify Nova of network changes
    and VIF plugging. As the occasion on which these events are
    emitted is dependent on the driver that bound the port and Nova
    does not have knowledge of that. Therefore, Nova cannot rely on
    the event to synchronize the operation between Nova and neutron,
    which has lead to a race condition in the past.

    Change-Id: I57f4df31bee83b818f2c0123577d11a8e07c0191
    Related-Bug: #1821058

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Related fix merged to neutron (master)

Reviewed: https://review.opendev.org/645645
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=a70f07deb155eef450d59ccd897730298f360a0a
Submitter: Zuul
Branch: master

commit a70f07deb155eef450d59ccd897730298f360a0a
Author: Rodolfo Alonso Hernandez <email address hidden>
Date: Fri Mar 22 16:11:04 2019 +0000

    Add "connectivity" parameter in vif_details

    Added "connectivity" parameter to mech driver vif_details. The default
    value is "legacy". The in-tree drivers (Linux Bridge, Open vSwitch, SR-IOV
    and MacVTap) have "l2" connectivity.

    Change-Id: I45480986fc89e0b2f475ee0ceb13d8742fb8c530
    Related-Bug: #1821058

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Related fix proposed to neutron (master)

Related fix proposed to branch: master
Review: https://review.opendev.org/678027

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Related fix merged to neutron (master)

Reviewed: https://review.opendev.org/678027
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=380825fcf8e5bdba10c3b2758dfb772e28f9461e
Submitter: Zuul
Branch: master

commit 380825fcf8e5bdba10c3b2758dfb772e28f9461e
Author: Rodolfo Alonso Hernandez <email address hidden>
Date: Thu Aug 22 11:07:14 2019 +0000

    Check mech driver connectivity during port binding

    In [1] the concept of "connectivity" was introduced for the ML2 drivers.
    This parameter defines the mech driver connectivity type (layer 2, layer
    3 only or legacy - not defined).

    The spec defined in the blueprint allows to spawn a VM with ports
    without IP addresses. As commented in the Nova spec [2], those ports can
    be bound only to "l2" drivers.

    [1] https://review.opendev.org/#/c/645645/
    [2] https://review.opendev.org/#/c/641670/

    bp boot-vm-with-unaddressed-port
    Related-Bug: #1821058

    Change-Id: I438cbab43b45b5f7afc820b77fcf5a0e823d0eff

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Related fix proposed to neutron-lib (master)

Related fix proposed to branch: master
Review: https://review.opendev.org/c/openstack/neutron-lib/+/826501

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Related fix proposed to neutron (master)

Related fix proposed to branch: master
Review: https://review.opendev.org/c/openstack/neutron/+/826502

Revision history for this message
OpenStack Infra (hudson-openstack) wrote :

Related fix proposed to branch: master
Review: https://review.opendev.org/c/openstack/neutron/+/826512

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Related fix merged to neutron-lib (master)

Reviewed: https://review.opendev.org/c/openstack/neutron-lib/+/826501
Committed: https://opendev.org/openstack/neutron-lib/commit/c2166f9af6ccbe8fdaff6fc035291633539329dc
Submitter: "Zuul (22348)"
Branch: master

commit c2166f9af6ccbe8fdaff6fc035291633539329dc
Author: Rodolfo Alonso Hernandez <email address hidden>
Date: Wed Jan 26 17:23:54 2022 +0000

    Add "connectivity" property to "MechanismDriver"

    This property will return the type of the driver: "l2", "l3" or
    "legacy".

    bp boot-vm-with-unaddressed-port
    Related-Bug: #1959125
    Related-Bug: #1821058

    Change-Id: I5730c68e4e860028efa0541b0098c439c14524d7

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Related fix merged to neutron (master)

Reviewed: https://review.opendev.org/c/openstack/neutron/+/826512
Committed: https://opendev.org/openstack/neutron/commit/08bdc4ded10baba932c5690f0c567e5bc38f0ff3
Submitter: "Zuul (22348)"
Branch: master

commit 08bdc4ded10baba932c5690f0c567e5bc38f0ff3
Author: Rodolfo Alonso Hernandez <email address hidden>
Date: Wed Jan 26 17:30:01 2022 +0000

    Add "bound_drivers" information to port "vif_details"

    This new parameter "bound_drivers" is a dictionary with the binding
    levels and the driver name. E.g.:
      port['vif_details']['bound_drivers'] = {'0': 'openvswitch'}
      port['vif_details']['bound_drivers'] = {'0': 'ovn'}

    If the port is not bound, this key won't be present in "vif_details".
    This information is important for Nova, along with the VIF type, to
    adequate the port plugin strategy or to know what kind of plugin
    events are expected; currently, depending on the driver and the
    connection type, Neutron sends a different set of vif-plugged events.
    This is specially critical during live migration process, where the
    network communication should be halted as little as possible.

    Related-Bug: #1821058

    Change-Id: I1c42fa4f44cc2311e874b2b9bf2bd40ffd142e91

Revision history for this message
OpenStack Infra (hudson-openstack) wrote :

Reviewed: https://review.opendev.org/c/openstack/neutron/+/826502
Committed: https://opendev.org/openstack/neutron/commit/0fe6c0b8ca8a5704242766472d94d5ca86832363
Submitter: "Zuul (22348)"
Branch: master

commit 0fe6c0b8ca8a5704242766472d94d5ca86832363
Author: Rodolfo Alonso Hernandez <email address hidden>
Date: Wed Jan 26 17:37:07 2022 +0000

    Use the "connectivity" property of "MechanismDriver"

    The base class "MechanismDriver" now has a property called
    "connectivity". This patch overrides the default value in the
    in-tree drivers.

    The method "_check_drivers_connectivity" now uses this property
    that is available in all drivers.

    Depends-On: https://review.opendev.org/c/openstack/neutron-lib/+/826501

    Closes-Bug: #1959125
    bp boot-vm-with-unaddressed-port
    Related-Bug: #1821058

    Change-Id: I91734835b07d804365b46adfb26e984557107d80

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.