[RFE] Strict minimum bandwidth support (egress)

Bug #1578989 reported by Miguel Angel Ajo on 2016-05-06
22
This bug affects 3 people
Affects Status Importance Assigned to Milestone
neutron
Wishlist
Bence Romsics

Bug Description

This RFE is a follow up of [1] and it's registered only for completion to provide visibility on the high level plan. - we cannot tackle this until [1] and [2] are in place. -

Minimum bandwidth support (opposed to bandwidth limiting), guarantees a port minimum bandwidth when it's neighbours are consuming egress traffic and can be throttled in favor of the guaranteed port.

Strict minimum bandwidth support requires scheduling cooperation, to avoid physical interfaces overcommit. This RFE assumes that the hypervisor side of it is handled as per [1]

Use cases
========

NFV/telcos are interested in this type of rules to make sure functions don't overcommit computes, and that any spawn of the same architecture will perform exactly as expected.

CSP could make use of it to provide guaranteed bandwidth for streaming, etc...

Notes
=====

This depends on the nova generic resource pool framework to be available [2], an specific resource (attached to compute nodes NIC_BW) being declared by neutron (as per discovery or admin setting on each host)

Also, a mechanism for nova scheduler to be able to understand the amount of resources consumed from a port will be necessary. Either as a detail that is provided in the port when nova is calling neutron for port creation/get, or as a separate call [3].

Nova dependencies
=================

Custom resource classes:
   Spec: https://review.openstack.org/#/c/312696/
   Code: https://review.openstack.org/#/q/topic:bp/custom-resource-classes

Nested resource providers:

   Spec: https://review.openstack.org/#/c/386710/
   Code: https://review.openstack.org/#/q/topic:bp/nested-resource-providers

  for example:
   NIC_BW_EGRESS.<physnet>
   NIC_BW_INGRESS.<physnet>

[1] https://bugs.launchpad.net/neutron/+bug/1560963
[2] http://lists.openstack.org/pipermail/openstack-dev/2016-February/086371.html
[3] http://lists.openstack.org/pipermail/openstack-dev/2016-April/091928.html

tags: added: qos rfe
Ryan Moats (rmoats) on 2016-05-06
Changed in neutron:
importance: Undecided → Wishlist
Assaf Muller (amuller) on 2016-06-16
Changed in neutron:
status: New → Confirmed
tags: added: rfe-postponed
tags: removed: rfe
Miguel Angel Ajo (mangelajo) wrote :

I'm assuming here I can toggle it, even this is going to be a long term effort, and we need to start by a spec to make some design decisions.

tags: added: rfe-approved
removed: rfe-postponed
Miguel Angel Ajo (mangelajo) wrote :

We may want to create a blueprint and spec for this to go into the detail, since this is a multi-cycle, nova-integration effort and we need to put several bricks in place to build it.

description: updated

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

Fix proposed to branch: master
Review: https://review.openstack.org/404647

Changed in neutron:
assignee: nobody → Rodolfo Alonso (rodolfo-alonso-hernandez)
status: Confirmed → In Progress

Change abandoned by Rodolfo Alonso Hernandez (<email address hidden>) on branch: master
Review: https://review.openstack.org/404647
Reason: Merged in https://review.openstack.org/#/c/401254/

Change abandoned by Armando Migliaccio (<email address hidden>) on branch: master
Review: https://review.openstack.org/404343
Reason: This review is > 4 weeks without comment, and failed Jenkins the last time it was checked. We are abandoning this for now. Feel free to reactivate the review by pressing the restore button and leaving a 'recheck' comment to get fresh test results.

Change abandoned by Kevin Benton (<email address hidden>) on branch: master
Review: https://review.openstack.org/404343
Reason: This review is > 4 weeks without comment, and failed Jenkins the last time it was checked. We are abandoning this for now. Feel free to reactivate the review by pressing the restore button and leaving a 'recheck' comment to get fresh test results.

Change abandoned by Kevin Benton (<email address hidden>) on branch: master
Review: https://review.openstack.org/402121
Reason: This review is > 4 weeks without comment, and failed Jenkins the last time it was checked. We are abandoning this for now. Feel free to reactivate the review by pressing the restore button and leaving a 'recheck' comment to get fresh test results.

Reviewed: https://review.openstack.org/396297
Committed: https://git.openstack.org/cgit/openstack/neutron-specs/commit/?id=28c17a56437cfa7e6c792160334406e6464d76e1
Submitter: Jenkins
Branch: master

commit 28c17a56437cfa7e6c792160334406e6464d76e1
Author: Miguel Angel Ajo <email address hidden>
Date: Thu Nov 10 16:20:04 2016 +0100

    Add a spec for strict minimum bandwidth support

    Integration to the nova placement API will allow us to
    provide guaranteed minimum bandwidth for ports.

    Change-Id: Iecdf70f3090910a4faabf077627cc2f973bfb5b6
    Related-Bug: #1578989
    Blueprint: strict-minimum-bandwidth-support

Fix proposed to branch: master
Review: https://review.openstack.org/511774

Change abandoned by Rodolfo Alonso Hernandez (<email address hidden>) on branch: master
Review: https://review.openstack.org/511510
Reason: Superseded by https://review.openstack.org/#/c/511936/

Change abandoned by Rodolfo Alonso Hernandez (<email address hidden>) on branch: master
Review: https://review.openstack.org/511774
Reason: Superseded by https://review.openstack.org/#/c/512396/

Change abandoned by Rodolfo Alonso Hernandez (<email address hidden>) on branch: master
Review: https://review.openstack.org/512674
Reason: This patch will be merged with https://review.openstack.org/#/c/512396/

Change abandoned by Rodolfo Alonso Hernandez (<email address hidden>) on branch: master
Review: https://review.openstack.org/401254

Change abandoned by Rodolfo Alonso Hernandez (<email address hidden>) on branch: master
Review: https://review.openstack.org/508149
Reason: Nova spec not approved

Changed in neutron:
assignee: Rodolfo Alonso (rodolfo-alonso-hernandez) → nobody
Miguel Lavalle (minsel) wrote :

We will continue this in Rocky, when we have the required placement API functionality

Changed in neutron:
assignee: nobody → Miguel Lavalle (minsel)
Changed in neutron:
assignee: Miguel Lavalle (minsel) → Rodolfo Alonso (rodolfo-alonso-hernandez)
Changed in neutron:
assignee: Rodolfo Alonso (rodolfo-alonso-hernandez) → Miguel Lavalle (minsel)
Changed in neutron:
assignee: Miguel Lavalle (minsel) → Rodolfo Alonso (rodolfo-alonso-hernandez)

Reviewed: https://review.openstack.org/511936
Committed: https://git.openstack.org/cgit/openstack/neutron-lib/commit/?id=9ef0860033796ce38c29e9b541898b42fbb913c5
Submitter: Zuul
Branch: master

commit 9ef0860033796ce38c29e9b541898b42fbb913c5
Author: Rodolfo Alonso Hernandez <email address hidden>
Date: Fri Oct 13 18:47:55 2017 +0100

    Rehome placement client to neutron-lib

    The placement client is going to be used by other services aside from
    segments; e.g. QoS plugin. It makes sense to move this file to a common
    place, like neutron-lib.

    Closes-Bug: #1723452
    Partial-Bug: #1578989

    Change-Id: I2f7d204828a620152ec9e005e057fc7fd77f9126

Changed in neutron:
assignee: Rodolfo Alonso (rodolfo-alonso-hernandez) → Miguel Lavalle (minsel)
Changed in neutron:
assignee: Miguel Lavalle (minsel) → Rodolfo Alonso (rodolfo-alonso-hernandez)
Miguel Lavalle (minsel) on 2018-01-22
Changed in neutron:
assignee: Rodolfo Alonso (rodolfo-alonso-hernandez) → Miguel Lavalle (minsel)
Changed in neutron:
assignee: Miguel Lavalle (minsel) → Slawek Kaplonski (slaweq)
Changed in neutron:
assignee: Slawek Kaplonski (slaweq) → Miguel Lavalle (minsel)
Changed in neutron:
assignee: Miguel Lavalle (minsel) → Slawek Kaplonski (slaweq)
Changed in neutron:
assignee: Slawek Kaplonski (slaweq) → Miguel Lavalle (minsel)
Changed in neutron:
assignee: Miguel Lavalle (minsel) → Slawek Kaplonski (slaweq)

Reviewed: https://review.openstack.org/512396
Committed: https://git.openstack.org/cgit/openstack/neutron-lib/commit/?id=874cf4f550e9c10c8b03af6d735642bc61a589e6
Submitter: Zuul
Branch: master

commit 874cf4f550e9c10c8b03af6d735642bc61a589e6
Author: Rodolfo Alonso Hernandez <email address hidden>
Date: Mon Oct 16 20:24:55 2017 +0100

    Add new Resource Provider functions to placement client

    Added list_resource_providers function, which allows to retrieve
    a list of Resource Providers filtering by UUID or parent UUID.

    Added get_resource_provider function, which allows to retrieve an
    specific Resource Provider by its UUID.

    This feature depends on Nova Nested Resource Providers.

    Depends-On: I4db74e4dc682bc03df6ec94cd1c3a5f5dc927a7bi

    Change-Id: I6eb42b9a53c8001c5f14d4d1c9a98e060148ae21
    Partial-Bug: #1578989
    Co-Authored-By: Slawek Kaplonski <email address hidden>

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

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

commit f0a9959a7fd98b091a17a29544eacdbd6dd37337
Author: Lajos Katona <email address hidden>
Date: Tue Mar 20 14:00:29 2018 +0100

    Fix placement calls in placement client

    Based on the placement api-ref fix the already implemented placement API
    calls in the placement client of neutron-lib.

    Fixed/changed parts:
    - Add version header to create_resource_provider
    - Change create_inventory to update_resource_provider_inventories, as
    the http request is a PUT not a POST, and add exception to handle the
    case when the rp is not found.
    - Change update_inventory to update_resource_provider_inventory, to make
    the method name in sync with placement API ref.
    - Fix the failing unit tests, and cover the negative case for
    update_resource_provider_inventories.

    Change-Id: I336c57e734f91795038c5ba9074970d1f5522da2
    Related-Bug: #1578989

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

commit a24bf9841d1c3717c0f38778c0c63acd7028dbcd
Author: Lajos Katona <email address hidden>
Date: Tue Mar 20 14:22:15 2018 +0100

    Add placement calls for bandwith resource provider

    Add placement calls that are necessary to report the necessary resource
    providers, traits, resource classes and inventories for bandwidth
    allocation in placement.

    Related-Bug: #1578989
    Change-Id: Ie3a14e5461d2d14ee77e1bd101943b7c28cf86f1

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

commit dca619fd9e581a1863073460cde5b4d34db9dfa0
Author: Bence Romsics <email address hidden>
Date: Wed May 9 13:53:58 2018 +0200

    QoS minimum bandwidth allocation in Placement API

    This spec describes how to model, from Neutron, a new resource provider
    in the Placement API to describe the bandwidth allocation.

    Based on a Rocky PTG discussion this is a re-work of the spec.

    Co-Authored-By: Rodolfo Alonso Hernandez <email address hidden>
    Co-Authored-By: Bence Romsics <email address hidden>
    Co-Authored-By: Balazs Gibizer <email address hidden>

    Related-Bug: #1578989
    Change-Id: Ib995837f6161bcceb09735a5601d8b79a25a7354
    See-Also: Ie7be551f4f03957ade9beb64457736f400560486

Reviewed: https://review.openstack.org/566047
Committed: https://git.openstack.org/cgit/openstack/neutron-lib/commit/?id=2b5d1fdd1f68a5231e57b8c55abfc84c9a6a48a0
Submitter: Zuul
Branch: master

commit 2b5d1fdd1f68a5231e57b8c55abfc84c9a6a48a0
Author: Lajos Katona <email address hidden>
Date: Wed May 2 16:30:26 2018 +0200

    Fix list_resource_providers filters

    list_resource_providers failed filtering as the filter parameters like
    name, or in_tree must be added to the url as query strings:
    /resource_providers?name=foo&in_tree=<uuid>

    Related-Bug: #1578989
    Change-Id: I794972e93dbcf7310154cc1cceef25b9df618450

Fix proposed to branch: master
Review: https://review.openstack.org/574781

Changed in neutron:
assignee: Slawek Kaplonski (slaweq) → Bence Romsics (bence-romsics)

Fix proposed to branch: master
Review: https://review.openstack.org/580387

Changed in neutron:
assignee: Bence Romsics (bence-romsics) → Lajos Katona (lajos-katona)

Fix proposed to branch: master
Review: https://review.openstack.org/580664

Changed in neutron:
assignee: Lajos Katona (lajos-katona) → Bence Romsics (bence-romsics)

Fix proposed to branch: master
Review: https://review.openstack.org/580665

Fix proposed to branch: master
Review: https://review.openstack.org/580666

Changed in neutron:
assignee: Bence Romsics (bence-romsics) → Lajos Katona (lajos-katona)
Changed in neutron:
assignee: Lajos Katona (lajos-katona) → Bence Romsics (bence-romsics)
Changed in neutron:
assignee: Bence Romsics (bence-romsics) → Lajos Katona (lajos-katona)
Changed in neutron:
assignee: Lajos Katona (lajos-katona) → Bence Romsics (bence-romsics)
Changed in neutron:
assignee: Bence Romsics (bence-romsics) → Lajos Katona (lajos-katona)
Changed in neutron:
assignee: Lajos Katona (lajos-katona) → Bence Romsics (bence-romsics)
Changed in neutron:
assignee: Bence Romsics (bence-romsics) → Lajos Katona (lajos-katona)
Changed in neutron:
assignee: Lajos Katona (lajos-katona) → Bence Romsics (bence-romsics)
Changed in neutron:
assignee: Bence Romsics (bence-romsics) → Lajos Katona (lajos-katona)
Changed in neutron:
assignee: Lajos Katona (lajos-katona) → Bence Romsics (bence-romsics)
Changed in neutron:
assignee: Bence Romsics (bence-romsics) → Lajos Katona (lajos-katona)
Changed in neutron:
assignee: Lajos Katona (lajos-katona) → Bence Romsics (bence-romsics)
Changed in neutron:
assignee: Bence Romsics (bence-romsics) → Lajos Katona (lajos-katona)
Changed in neutron:
assignee: Lajos Katona (lajos-katona) → Bence Romsics (bence-romsics)
Changed in neutron:
assignee: Bence Romsics (bence-romsics) → Lajos Katona (lajos-katona)
Changed in neutron:
assignee: Lajos Katona (lajos-katona) → Bence Romsics (bence-romsics)
Changed in neutron:
assignee: Bence Romsics (bence-romsics) → Lajos Katona (lajos-katona)
Changed in neutron:
assignee: Lajos Katona (lajos-katona) → Bence Romsics (bence-romsics)
Changed in neutron:
assignee: Bence Romsics (bence-romsics) → Lajos Katona (lajos-katona)
Changed in neutron:
assignee: Lajos Katona (lajos-katona) → Bence Romsics (bence-romsics)
Changed in neutron:
assignee: Bence Romsics (bence-romsics) → Lajos Katona (lajos-katona)
Changed in neutron:
assignee: Lajos Katona (lajos-katona) → Bence Romsics (bence-romsics)
Changed in neutron:
assignee: Bence Romsics (bence-romsics) → Lajos Katona (lajos-katona)
Changed in neutron:
assignee: Lajos Katona (lajos-katona) → Bence Romsics (bence-romsics)
Changed in neutron:
assignee: Bence Romsics (bence-romsics) → Lajos Katona (lajos-katona)
Changed in neutron:
assignee: Lajos Katona (lajos-katona) → Slawek Kaplonski (slaweq)
Changed in neutron:
assignee: Slawek Kaplonski (slaweq) → Lajos Katona (lajos-katona)
Changed in neutron:
assignee: Lajos Katona (lajos-katona) → Bence Romsics (bence-romsics)
Changed in neutron:
assignee: Bence Romsics (bence-romsics) → Lajos Katona (lajos-katona)
Changed in neutron:
assignee: Lajos Katona (lajos-katona) → Bence Romsics (bence-romsics)
Changed in neutron:
assignee: Bence Romsics (bence-romsics) → Lajos Katona (lajos-katona)
Changed in neutron:
assignee: Lajos Katona (lajos-katona) → Bence Romsics (bence-romsics)
Changed in neutron:
assignee: Bence Romsics (bence-romsics) → Lajos Katona (lajos-katona)
Changed in neutron:
assignee: Lajos Katona (lajos-katona) → Bence Romsics (bence-romsics)
tags: added: in-stable-rocky
Changed in neutron:
assignee: Bence Romsics (bence-romsics) → Lajos Katona (lajos-katona)
Changed in neutron:
assignee: Lajos Katona (lajos-katona) → Bence Romsics (bence-romsics)
Changed in neutron:
assignee: Bence Romsics (bence-romsics) → Lajos Katona (lajos-katona)
Changed in neutron:
assignee: Lajos Katona (lajos-katona) → Bence Romsics (bence-romsics)
Changed in neutron:
assignee: Bence Romsics (bence-romsics) → Lajos Katona (lajos-katona)
Changed in neutron:
assignee: Lajos Katona (lajos-katona) → Bence Romsics (bence-romsics)
Changed in neutron:
assignee: Bence Romsics (bence-romsics) → Lajos Katona (lajos-katona)
51 comments hidden view all 131 comments

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

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

Reviewed: https://review.openstack.org/619300
Committed: https://git.openstack.org/cgit/openstack/neutron-lib/commit/?id=74600f1d9c3a285a838d403ea9194ff9bd714163
Submitter: Zuul
Branch: master

commit 74600f1d9c3a285a838d403ea9194ff9bd714163
Author: Bence Romsics <email address hidden>
Date: Wed Aug 15 11:24:50 2018 +0200

    Placement client: clean up docstrings

    Many :raises: and :returns: are missing from the docstrings.
    This patch adds them and clarifies the wording in a few places.

    Change-Id: If642cf94b04f63bfaca1eb2f6c8c3c6e27c26c00
    Related-Bug: #1578989

Reviewed: https://review.openstack.org/619301
Committed: https://git.openstack.org/cgit/openstack/neutron-lib/commit/?id=5227491b8abfdabe8d6c3625f2bb544cc7cfb7e8
Submitter: Zuul
Branch: master

commit 5227491b8abfdabe8d6c3625f2bb544cc7cfb7e8
Author: Bence Romsics <email address hidden>
Date: Wed Nov 21 17:07:55 2018 +0100

    Placement client: do not swallow exceptions

    Placement client unconditionally swallowed many exceptions. I cannot
    tell why that was ever considered a good idea. I can imagine some
    users wanting to ignore some of those error conditions, but it should
    be the responsibility of the user to decide. The client should not
    unconditionally ignore all errors, but leave this choice for the user
    of the client.

    Particularly this placement client will be used by later patches for
    minimum-bandwidth-allocation-placement-api where we do want to know
    about some of these errors and retry placement operations when they
    fail.

    Change-Id: Ia14ba8cb273166fe3075328229f30d0cebae0480
    Related-Bug: #1578989

Reviewed: https://review.openstack.org/619302
Committed: https://git.openstack.org/cgit/openstack/neutron-lib/commit/?id=1e6a07c5fc8275b11044091cfbd0b580d3a0ebd3
Submitter: Zuul
Branch: master

commit 1e6a07c5fc8275b11044091cfbd0b580d3a0ebd3
Author: Bence Romsics <email address hidden>
Date: Wed Nov 21 17:12:51 2018 +0100

    Placement client: improve Placement 4xx exceptions

    For 4xx errors Placement sends back a complex JSON object describing
    the error. When turned into an exception that becomes a non-trivial
    attribute of the error object. Usual ways of logging an exception (that
    is LOG.exception) completely ignore that attribute, therefore the real
    error message is not logged. For example we only logged the fact that
    we received a BadRequest response and nothing else while Placement did
    provide a whole lot more detail. Here we dig out that error detail and
    re-throw a better exception with it.

    Change-Id: Id97116c1c298f54f898a746d6e3c96b1f412bb49
    Related-Bug: #1578989

Reviewed: https://review.openstack.org/616594
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=97c9c4656dd208fb34bd300bbcde058cfe9a1944
Submitter: Zuul
Branch: master

commit 97c9c4656dd208fb34bd300bbcde058cfe9a1944
Author: Lajos Katona <email address hidden>
Date: Thu Sep 20 16:54:19 2018 +0200

    get_standard_device_mappings for mechdriver

    get_mappings for machanism drivers return back different dicts for
    different mechanism drivers. By adding get_standard_device_mappings
    method SRIOV and OVS mechanism drivers can return a mapping dict in a
    form like this one:
    {'physnet_name': ['device_or_bridge_1', 'device_or_bridge_2']}

    Change-Id: Ieddd9b3a4f3d7269aafc373f040c55b025f5c201
    Related-Bug: #1578989

Fix proposed to branch: master
Review: https://review.openstack.org/626210

Changed in neutron:
assignee: Lajos Katona (lajos-katona) → Bence Romsics (bence-romsics)

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

commit e78f82e64fbdc1feac6aaccb108aa5100b0f49ed
Author: Lajos Katona <email address hidden>
Date: Fri Jul 20 17:04:46 2018 +0200

    Fill port-resource-request

    port-resource-request is an admin-only, read-only attribute for neutron
    ports. The content of this field is filled from the QoS minimum
    bandwidth rule attached to the port.

    Change-Id: Ic9862a1b5e24eb798d67823ac3bacab9e54420d8
    Partial-Bug: #1578989
    See-Also: https://review.openstack.org/502306 (nova spec)
    See-Also: https://review.openstack.org/508149 (neutron spec)

Fix proposed to branch: master
Review: https://review.openstack.org/628176

Changed in neutron:
assignee: Bence Romsics (bence-romsics) → Lajos Katona (lajos-katona)

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

commit ecfbc141480c41d1579b1d7fb205c55de2c6e9d6
Author: Lajos Katona <email address hidden>
Date: Thu Jan 3 14:27:33 2019 +0100

    port-resource-request policy rule to constant

    Change-Id: I14a0b7615b0cda890d5f9a31945de4162737c6aa
    Partial-Bug: #1578989
    See-Also: https://review.openstack.org/502306 (nova spec)
    See-Also: https://review.openstack.org/508149 (neutron spec)

Change abandoned by Lajos Katona (<email address hidden>) on branch: master
Review: https://review.openstack.org/625253
Reason: BAsed on discussion in neutron meeting (see: http://eavesdrop.openstack.org/irclogs/%23openstack-meeting/%23openstack-meeting.2018-12-18.log.html#t2018-12-18T15:17:17)
this test should be in tempest repo, as it will test nova and neutron functioality as well.

Reviewed: https://review.openstack.org/598423
Committed: https://git.openstack.org/cgit/openstack/neutron-tempest-plugin/commit/?id=2f90465f73c42dac3eaf7e70c666d44d286e1a4b
Submitter: Zuul
Branch: master

commit 2f90465f73c42dac3eaf7e70c666d44d286e1a4b
Author: Lajos Katona <email address hidden>
Date: Thu Aug 23 14:04:56 2018 +0200

    tests for port-resource-request

    Change-Id: Ib72b01cb25ccdaa00b2b364dca7f8e485aaaf46b
    Depends-On: https://review.openstack.org/590363
    Partial-Bug: #1578989
    See-Also: https://review.openstack.org/502306 (nova spec)
    See-Also: https://review.openstack.org/508149 (neutron spec)

Fix proposed to branch: master
Review: https://review.openstack.org/630999

Changed in neutron:
assignee: Lajos Katona (lajos-katona) → Bence Romsics (bence-romsics)
Changed in neutron:
assignee: Bence Romsics (bence-romsics) → Lajos Katona (lajos-katona)
Changed in neutron:
assignee: Lajos Katona (lajos-katona) → Bence Romsics (bence-romsics)

Fix proposed to branch: master
Review: https://review.openstack.org/631793

Changed in neutron:
assignee: Bence Romsics (bence-romsics) → Lajos Katona (lajos-katona)

Reviewed: https://review.openstack.org/630662
Committed: https://git.openstack.org/cgit/openstack/neutron-tempest-plugin/commit/?id=7eb6725c80615dc0e2b46deb1f892f3af6a38d42
Submitter: Zuul
Branch: master

commit 7eb6725c80615dc0e2b46deb1f892f3af6a38d42
Author: Lajos Katona <email address hidden>
Date: Mon Jan 14 12:55:35 2019 +0100

    Make provider network creation more error proof

    Change-Id: I4bdd3e1effbc49cb3a1ada195c491e823619fa59
    Partial-Bug: #1578989
    See-Also: https://review.openstack.org/502306 (nova spec)
    See-Also: https://review.openstack.org/508149 (neutron spec)

Changed in neutron:
assignee: Lajos Katona (lajos-katona) → Bence Romsics (bence-romsics)

Reviewed: https://review.openstack.org/626210
Committed: https://git.openstack.org/cgit/openstack/neutron-lib/commit/?id=5dcccd2c668a0ae62aa04a6a5f3e390fb56e0053
Submitter: Zuul
Branch: master

commit 5dcccd2c668a0ae62aa04a6a5f3e390fb56e0053
Author: Bence Romsics <email address hidden>
Date: Wed Dec 19 15:49:52 2018 +0100

    New agent attribute: resources_synced

    Agents supporting the guaranteed minimum bandwidth feature need to share
    their resource view with neutron-server and in turn with Placement too.
    The resource information is synchronized to neutron-server via the
    periodic agent heartbeat therefore transient synchronization errors are
    fixed by the next heartbeat. But synchronization to Placement is not
    done periodically, but on a (mostly) on demand basis. Therefore to fix
    transient errors of the synchronization to Placement we must remember
    the success/failure of the last synchronization attempt.

    This change introduces a new boolean agent attribute: resources_synced

    This attribute is:
    * admin-only (just like the whole agent extension)
    * read-only (it is only updated by the internal synchronization process)

    If this attribute is not set then no synchronization to Placement ever
    happened (which is the natural state of agents not tracking their
    resources via Placement).

    If it is False, then another successful synchronization is needed before
    the contents of Placement can be considered up to date.

    If it is True, then this agent's resources are up to date in Placement.

    Change-Id: Ia3dea82fabe5e068192fbe931db8d341d3d37149
    Needed-By: https://review.openstack.org/630999
    Partial-Bug: #1578989
    See-Also: https://review.openstack.org/502306 (nova spec)
    See-Also: https://review.openstack.org/508149 (neutron spec)

Changed in neutron:
assignee: Bence Romsics (bence-romsics) → Lajos Katona (lajos-katona)
Changed in neutron:
assignee: Lajos Katona (lajos-katona) → Bence Romsics (bence-romsics)
Changed in neutron:
assignee: Bence Romsics (bence-romsics) → Lajos Katona (lajos-katona)
Changed in neutron:
assignee: Lajos Katona (lajos-katona) → Bence Romsics (bence-romsics)

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

commit b71eaf4256a2887fa80b61760c633e0d5c37340c
Author: Bence Romsics <email address hidden>
Date: Wed Feb 6 14:53:22 2019 +0100

    Exceptions for: Drive binding by placement allocation

    New exception types used in https://review.openstack.org/574783.

    Change-Id: I46d89ef6d7630ec2c44d619c022aa8bbb6e51b63
    Needed-By: https://review.openstack.org/574783
    Partial-Bug: #1578989
    See-Also: https://review.openstack.org/502306 (nova spec)
    See-Also: https://review.openstack.org/508149 (neutron spec)

Fix proposed to branch: master
Review: https://review.openstack.org/638666

Changed in neutron:
assignee: Bence Romsics (bence-romsics) → Lajos Katona (lajos-katona)

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

commit facc4e94cae64b6c79cd4538e452e838436eac0f
Author: Bence Romsics <email address hidden>
Date: Mon Feb 11 14:47:31 2019 +0100

    Reject QoS minimum bandwidth rule updates for bound ports as NotImplemented

    Updating QoS policies and rules backed by resources tracked in Placement
    is a complex task, which was left out of scope for the Stein release.
    Of course this is only relevant for policies/rules already in use on
    bound ports. Rules of unbound ports can still be updated freely.

    Please note this patch cannot catch all possible problems. There will
    always be a time window between the allocation committed to Placement
    and Nova sending the port binding request to Neutron. If the policy or
    rule is changed in this window we cannot do anything against it.

    APIImpact: Reject QoS minimum bandwidth policy/rule updates for bound
               ports as NotImplemented

    Change-Id: I477edb0ae35b385ac776a58195f22382e2fce4ed
    Partial-Bug: #1578989
    See-Also: https://review.openstack.org/502306 (nova spec)
    See-Also: https://review.openstack.org/508149 (neutron spec)

Reviewed: https://review.openstack.org/630999
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=648ab82a4bf07845b97c5cb62347fbde86cdc9d2
Submitter: Zuul
Branch: master

commit 648ab82a4bf07845b97c5cb62347fbde86cdc9d2
Author: Bence Romsics <email address hidden>
Date: Wed Dec 19 13:44:37 2018 +0100

    New agent attribute: resources_synced

    Agents supporting the guaranteed minimum bandwidth feature need to share
    their resource view with neutron-server and in turn with Placement too.
    The resource information is synchronized to neutron-server via the
    periodic agent heartbeat therefore transient synchronization errors are
    fixed by the next heartbeat. But synchronization to Placement is not
    done periodically, but on a (mostly) on demand basis. Therefore to fix
    transient errors of the synchronization to Placement we must remember
    the success/failure of the last synchronization attempt.

    This change implements the extension 'agent-resources-synced' and
    therefore extends the agent db model and object with a new attribute:
    'resources_synced'. This attribute in only meant to be updated
    internally. But it can be read via the API for debugging purposes.

    APIImpact: The agent resource has a new attribute: resources_synced.

    Change-Id: I757d659cea63c8172ca3618d1f581d10236f5e71
    Depends-On: https://review.openstack.org/626210
    Partial-Bug: #1578989
    See-Also: https://review.openstack.org/502306 (nova spec)
    See-Also: https://review.openstack.org/508149 (neutron spec)

Changed in neutron:
assignee: Lajos Katona (lajos-katona) → Bence Romsics (bence-romsics)

Reviewed: https://review.openstack.org/588319
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=4ab00d347126127758e12112e081886bb112810d
Submitter: Zuul
Branch: master

commit 4ab00d347126127758e12112e081886bb112810d
Author: Bence Romsics <email address hidden>
Date: Thu Aug 2 10:28:43 2018 +0200

    Class to represent Placement state and sync

    Represent the desired state of the Placement DB and provide a method to
    sync this state to Placement. This is unused as is. A later patch in
    the same series is going to use it. But it is broken out into its own
    file and patch, so the code is organized better and easier to review.

    Change-Id: I3728117f90b7fad2423c2a4276db214ec86c9d8e
    Depends-On: https://review.openstack.org/570847
    Depends-On: https://review.openstack.org/577220
    Depends-On: https://review.openstack.org/616194
    Partial-Bug: #1578989
    See-Also: https://review.openstack.org/502306 (nova spec)
    See-Also: https://review.openstack.org/508149 (neutron spec)

Reviewed: https://review.openstack.org/580672
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=9e8e987e6c3d2fa753701689b9ff5d1227fb3c24
Submitter: Zuul
Branch: master

commit 9e8e987e6c3d2fa753701689b9ff5d1227fb3c24
Author: Bence Romsics <email address hidden>
Date: Fri Jul 6 16:02:15 2018 +0200

    Placement reporting service plugin

    This service plugin synchronizes ML2 mechanism driver agents' resource
    information to Placement. To use this service an agent must add
    'resource_provider_bandwidths' to the 'configurations' field of its
    RPC heartbeat. It also may add 'resource_provider_inventory_defaults'
    to fine tune Placement inventory parameters. Again to use this service a
    mechanism driver must implement get_standrd_device_mappings() and allocate
    a UUID as mechanism driver property 'resource_provider_uuid5_namespace'.

    The synchronization is triggered by:
    * any new agent object in the DB
    * restart of an agent (via 'start_flag' in the RPC heartbeat)
    * if an agent's 'resources_synced' attribute is not True (None/False)

    The latter should autoheal transient errors of the synchronization
    process. That is if a sync attemp fails then we store
    resources_synced=False which triggers a sync retry at each new heartbeat
    message until a sync attempt finally succeeds and we can set
    resources_synced=True.

    Since this code functionally depends on ML2 we can also consider making
    it part of ML2, but at the moment it is a service plugin for better
    decoupling. Even if you load the service plugin the logic gracefully
    degrades for heartbeat messages not containing resource provider info.

    If needed the sync can be forced in multiple ways. First, if you restart
    an agent then the RPs belonging to that agent will be re-synced. You may
    also delete the agent by 'openstack network agent delete' and let the
    next heartbeat message re-create the agent object. On re-creation the
    RPs belonging to that agent will be re-synced. On the other hand a
    neutron-server restart does not trigger a re-sync in any way. Depending
    on the trade-off between the admin's needs to force re-syncs and the
    performance of (not absolutely necessary) Placement updates re-sync
    conditions may be further fine tuned.

    Example config for neutron-server:

    neutron.conf:
    [DEFAULT]
    service_plugins = placement

    Change-Id: Ia1ff6f7559ab77913ddb9c3b134420a401b8eb43
    Co-Authored-By: Lajos Katona <email address hidden>
    Depends-On: https://review.openstack.org/586567
    Partial-Bug: #1578989
    See-Also: https://review.openstack.org/502306 (nova spec)
    See-Also: https://review.openstack.org/508149 (neutron spec)

Changed in neutron:
assignee: Bence Romsics (bence-romsics) → Lajos Katona (lajos-katona)
Changed in neutron:
assignee: Lajos Katona (lajos-katona) → Slawek Kaplonski (slaweq)

Reviewed: https://review.openstack.org/574783
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=74c51a2e5390f258290ee890c9218beb5fdfd29c
Submitter: Zuul
Branch: master

commit 74c51a2e5390f258290ee890c9218beb5fdfd29c
Author: Bence Romsics <email address hidden>
Date: Tue Jun 26 11:16:54 2018 +0200

    Drive binding by placement allocation

    Drive the choice of mechanism driver during binding as inferred from
    the resource provider allocated by nova and as told to neutron via the
    port's binding:profile.

    As discussed on a neutron qos irc meeting some time ago
    this patch introduces a new assumption on bind_port() implementations.
    That is an implementation of bind_port() in any mech driver supporting
    Guaranteed Minimum Bandwidth bind_port() must not have a non-idempotent
    side effect. Because the last binding level will be redone for a 2nd
    time with a narrowed down list of mechanism drivers. And if the 2nd call
    does not give the same result as the first all kind of weird things can
    happen.

    Change-Id: I2b7573ec6795170ce45a13d5d0ad7844fb85182d
    Depends-On: https://review.openstack.org/574781
    Depends-On: https://review.openstack.org/635160
    Partial-Bug: #1578989
    See-Also: https://review.openstack.org/502306 (nova spec)
    See-Also: https://review.openstack.org/508149 (neutron spec)

Changed in neutron:
assignee: Slawek Kaplonski (slaweq) → Lajos Katona (lajos-katona)
Akihiro Motoki (amotoki) on 2019-03-12
Changed in neutron:
milestone: none → stein-rc1
Changed in neutron:
assignee: Lajos Katona (lajos-katona) → Bence Romsics (bence-romsics)

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

Reviewed: https://review.openstack.org/640390
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=252598b08827c0cd5e5c4174f84b4196c59f7493
Submitter: Zuul
Branch: master

commit 252598b08827c0cd5e5c4174f84b4196c59f7493
Author: Bence Romsics <email address hidden>
Date: Wed Feb 27 08:41:29 2019 +0100

    Networking guide: Guaranteed Minimum Bandwidth

    High-level overall and low-level neutron docs for the
    Guaranteed Minimum Bandwidth feature.

    Change-Id: I27224250956b3b940d6372bd46afbdd11e0ce284
    Closes-Bug: #1578989
    See-Also: https://review.openstack.org/502306 (nova spec)
    See-Also: https://review.openstack.org/508149 (neutron spec)

Changed in neutron:
status: In Progress → Fix Released

Reviewed: https://review.openstack.org/645104
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=7cccaf0616efe1f5b7d75d22ef0c3e1f7c649b16
Submitter: Zuul
Branch: master

commit 7cccaf0616efe1f5b7d75d22ef0c3e1f7c649b16
Author: Bence Romsics <email address hidden>
Date: Wed Mar 20 17:17:02 2019 +0100

    FUP Networking guide: Guaranteed Minimum Bandwidth

    Being so close to the rc1 deadline I didn't want to lose +2s of
    https://review.openstack.org/640390, so review comments are fixed here.

    Change-Id: Ic3353dd34bbc9fe6c1e03395d095067238fac844
    Related-Bug: #1578989
    Related-Change: https://review.openstack.org/640390
    See-Also: https://review.openstack.org/502306 (nova spec)
    See-Also: https://review.openstack.org/508149 (neutron spec)

This issue was fixed in the openstack/neutron 14.0.0.0rc1 release candidate.

Reviewed: https://review.openstack.org/645210
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=3e008fd51b12a81c404870a7fb1d01f82363907b
Submitter: Zuul
Branch: master

commit 3e008fd51b12a81c404870a7fb1d01f82363907b
Author: Bence Romsics <email address hidden>
Date: Thu Mar 21 16:36:04 2019 +0100

    FUP: Unit tests for https://review.openstack.org/636970

    I forgot to add unit tests to the original change.
    This patch adds the missing unit tests.

    Change-Id: If281f9a8c33864fa18a3b8a8de854816f5773efe
    Related-Bug: #1578989
    Related-Change: https://review.openstack.org/636970
    See-Also: https://review.openstack.org/502306 (nova spec)
    See-Also: https://review.openstack.org/508149 (neutron spec)

Reviewed: https://review.openstack.org/631793
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=092c6d68511b43fd975f6fccc4a697488966ff5e
Submitter: Zuul
Branch: master

commit 092c6d68511b43fd975f6fccc4a697488966ff5e
Author: Lajos Katona <email address hidden>
Date: Wed Jan 16 16:36:55 2019 +0100

    Agent configuration bandwidth report change

    Fullstack test for checking if agent configuration field's
    resource_provider_bandwidths changes after configuration file change and
    agent restart.

    Change-Id: I655777d27645d9a6eaf8b134d77cd2951404aef9
    Partial-Bug: #1578989
    See-Also: https://review.openstack.org/502306 (nova spec)
    See-Also: https://review.openstack.org/508149 (neutron spec)

Reviewed: https://review.openstack.org/638666
Committed: https://git.openstack.org/cgit/openstack/neutron-lib/commit/?id=3ec5a22c762544ff2cf36fc7d1e0214cb285ea1a
Submitter: Zuul
Branch: master

commit 3ec5a22c762544ff2cf36fc7d1e0214cb285ea1a
Author: Lajos Katona <email address hidden>
Date: Thu Feb 7 13:26:14 2019 +0100

    Add noauth option for placement client

    To make possible the fullstack testing of bandwidth reporting towards
    placement and syncing of resources, we have to start a small process, a
    fake placement that can answer back placement REST API requests.
    For this we have to add a noauth client to bypass keystone in case of
    fullstack testing.

    Change-Id: I199157e47f05f3b21eed15a1eb39b31a009030dd
    Needed-By: https://review.openstack.org/642527
    Partial-Bug: #1578989
    See-Also: https://review.openstack.org/502306 (nova spec)
    See-Also: https://review.openstack.org/508149 (neutron spec)

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

commit d4d2fbc30df45eadea724de8698023ec5ffbb6ba
Author: Lajos Katona <email address hidden>
Date: Mon Jan 21 10:44:18 2019 +0100

    Fullstack test for placement sync

    Fullstack test for placement reporter service plugin. To test it in
    fullstack environment a new stupid placement process is started which
    answers to placement REST API requests.

    Change-Id: I9dd9f6c9e8c8fcf1be1e91d49a59a00c2eb24026
    Depends-On: https://review.openstack.org/638666
    Partial-Bug: #1578989
    See-Also: https://review.openstack.org/502306 (nova spec)
    See-Also: https://review.openstack.org/508149 (neutron spec)

Displaying first 40 and last 40 comments. View all 131 comments or add a comment.
This report contains Public information  Edit
Everyone can see this information.

Duplicates of this bug

Other bug subscribers