[RFE] Port binding event extended information for Nova

Bug #1821058 reported by Rodolfo Alonso on 2019-03-20
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
neutron
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.

Miguel Lavalle (minsel) on 2019-03-22
Changed in neutron:
importance: Undecided → Wishlist
status: New → Confirmed
tags: added: rfe
Miguel Lavalle (minsel) on 2019-03-29
tags: added: rfe-triaged
removed: rfe
description: updated
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)

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

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

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

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

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

Other bug subscribers