Network bandwitdh resource provider

Registered by Rodolfo Alonso on 2017-09-04

This BP covers the activities to add a new resource provider to define the available bandwidth in a network device.

This resource provider will model the total amount of bandwidth available in a hardware device or a user define value, which will overwrite the value read from the compute agent driver. This available bandwidth will change depending on every new port created/deleted/modified with a minimum bandwidth QoS network policy defined.

The following diagram represents the resource provider tree (to be defined):
Host --> Socket --> NUMA node --> PCI device --> NIC --> Physical function --> Available BW.

Nova dependencies:

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

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

Neutron dependencies:

1) Strict minimum bandwidth:
- Spec: https://review.openstack.org/#/c/396297/

Blueprint information

Status:
Complete
Approver:
Matt Riedemann
Priority:
Medium
Drafter:
Rodolfo Alonso
Direction:
Approved
Assignee:
Balazs Gibizer
Definition:
Approved
Series goal:
Accepted for stein
Implementation:
Implemented
Milestone target:
milestone icon stein-3
Started by
Matt Riedemann on 2018-05-15
Completed by
Matt Riedemann on 2019-03-10

Related branches

Sprints

Whiteboard

Gerrit topic: https://review.openstack.org/#q,topic:bp/bandwidth-resource-provider,n,z

Addressed by: https://review.openstack.org/502306
    Network bandwitdh resource provider

Deferring to Rocky since the spec wasn't approved in time for Queens. -- mriedem 20171102

Approved for Rocky. -- mriedem 20180508

Addressed by: https://review.openstack.org/567267
    add resource_requests field to RequestSpec

Addressed by: https://review.openstack.org/567268
    transfer port.resource_request to the scheduler

Addressed by: https://review.openstack.org/568840
    Make placement.lib.RequestGroup a versioned object

Addressed by: https://review.openstack.org/569459
    Send resource allocations in the port binding

Addressed by: https://review.openstack.org/570078
    Reject interface attach with QoS aware port

Addressed by: https://review.openstack.org/570079
    Reject networks with QoS policy

Addressed by: https://review.openstack.org/570018
    Remove network info stubbing in functional test

Addressed by: https://review.openstack.org/570847
    Add bandwidth related standard resource classes

Addressed by: https://review.openstack.org/573317
    Test boot with more ports with bandwidth request

We're past feature freeze for Rocky, so this must be deferred. Please re-propose the spec for Stein if you'd like to work on it next cycle. -- melwitt 20180727

Addressed by: https://review.openstack.org/595243
    Network bandwidth resource provider

Re-approved for Stein. -- mriedem 20180907

Addressed by: https://review.openstack.org/616239
    Calculate port_id rp_uuid mapping for binding

Addressed by: https://review.openstack.org/616240
    Pass allocations to neturonv2 api

Addressed by: https://review.openstack.org/619527
    Extend RequestGroup object for mapping

Addressed by: https://review.openstack.org/619528
    Fill the RequestGroup mapping during schedule

Addressed by: https://review.openstack.org/619529
    Recalculate request group - RP mapping during re-schedule

Addressed by: https://review.openstack.org/621538
    DNM: troubleshoot cells v1 tests on gate

Addressed by: https://review.openstack.org/622421
    Remove port allocation during detach

Addressed by: https://review.openstack.org/623543
    Ensure that allocated PF matches the used PF

Addressed by: https://review.openstack.org/624080
    Refactor PortResourceRequestBasedSchedulingTestBase

Addressed by: https://review.openstack.org/625310
    Record requester in the InstancePCIRequest

Addressed by: https://review.openstack.org/625311
    Add pf_interface_name tag to passthrough_whitelist

Addressed by: https://review.openstack.org/625941
    Create RequestGroup from neutron port

Addressed by: https://review.openstack.org/625942
    Include requested_resources to allocation candidate query

Addressed by: https://review.openstack.org/630719
    Extend NeutronFixture to return port with resource request

Addressed by: https://review.openstack.org/630720
    Read port resource request from Neutron

Addressed by: https://review.openstack.org/630721
    Reject server create with port having resource request

Addressed by: https://review.openstack.org/630722
    Reject resize with port having resource request

Addressed by: https://review.openstack.org/630723
    Reject migrate with port having resource request

Addressed by: https://review.openstack.org/630724
    Reject evacuate with port having resource request

Addressed by: https://review.openstack.org/630725
    Reject unshelve with port having resource request

Addressed by: https://review.openstack.org/633776
    Fup for the bandwidth resource provider series

Addressed by: https://review.openstack.org/634767
    Follow up (#2) for the bw resource provider series

Addressed by: https://review.openstack.org/636360
    Support server create with ports having resource request

Addressed by: https://review.openstack.org/637953
    Refactor _heal_allocations_for_instance to make place for port healing

Addressed by: https://review.openstack.org/637954
    Refactor _heal_allocations_for_instance (2)

Addressed by: https://review.openstack.org/637955
    nova-manage: heal port allocations

Gerrit topic: https://review.openstack.org/#q,topic:bp/nova-cyborg-interaction,n,z

Addressed by: https://review.openstack.org/638207
    cache neutron ports in heal allocation

Addressed by: https://review.openstack.org/638370
    FUP for Id7827fe8dc27112e342dc25c902c8dbc25f63b94

Addressed by: https://review.openstack.org/638517
    Follow up for I0c764e441993e32aafef0b18049a425c3c832a50

Addressed by: https://review.openstack.org/638711
    Use Selection object to fill request group mapping

Addressed by: https://review.openstack.org/638847
    Add trait cache for multicreate

Addressed by: https://review.openstack.org/639159
    Fup for the bandwidth series

Addressed by: https://review.openstack.org/639608
    Handle placement error during re-schedule

Addressed by: https://review.openstack.org/639653
    Add remove_resources_from_instance_allocation to report client

Addressed by: https://review.openstack.org/641289
    Warn if group_policy is missing from flavor

Addressed by: https://review.openstack.org/641309
    Test macvtap port with resource request

Addressed by: https://review.openstack.org/641679
    Refactor bandwidth related functional tests

Addressed by: https://review.openstack.org/642064
    Documentation for bandwidth support

The 2.72 microversion adds support for guaranteed minimum bandwidth scheduling for QoS ports in Stein but there is more work to do in Train for move operation support (cold/live migrate, evacuate and unshelve), so I will mark this partially complete for Stein. -- mriedem 20190310

Addressed by: https://review.openstack.org/644810
    Update Network Bandwidth resource provider spec

Addressed by: https://review.openstack.org/645084
    Fix links to neturoin QoS minimum bandwidth doc

Addressed by: https://review.openstack.org/645749
    Move Stein implemented specs

Gerrit topic: https://review.opendev.org/#/q/topic:bp/bandwidth-resource-provider

Addressed by: https://review.opendev.org/641309
    Test macvtap port with resource request

Addressed by: https://review.opendev.org/641679
    Refactor bandwidth related functional tests

(?)

Work Items

Dependency tree

* Blueprints in grey have been implemented.

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.