Neutron QoS API Extension

Change-Id: I3e2bc9a37879874ca21eb7efd0832894dc860892
This commit is contained in:
Sean M. Collins 2014-04-18 11:07:41 -04:00
parent d76bec4015
commit 80a03f16d5
1 changed files with 109 additions and 0 deletions

View File

@ -0,0 +1,109 @@
========================================
Neutron Quality of Service API Extension
========================================
A proposal to allow the users of Quantum network service the ability
to request a particular level of network QoS for their job. The
granularity of the request could be: Per network: All the VMs/hosts on
a particular network belonging to a particular tenant get a particular
level of QoS Per port: A VM/host connected to that port gets a
particular level of QoS
The definition of network QoS can involve many parameters and it is
difficult to standardize support for it across installations and Cloud
Service Providers (CSPs). Instead, the CSP could provide the option of
choosing a QoS category from a pre-configured list of categories which
that particular CSP supports. A common way to express such
categorization is through the use of “Platinum”, “Gold”, “Silver”,
“Bronze”, and “Best-effort” levels. Note, these categories are just
examples, the specific naming convention could be defined by the CSP,
and could have a different set of categories in this list. This
proposal does not aim to standardize on this convention itself (but
could be an option if it promotes interoperability, with the caveat
that their definition also has to be standardized in that case).
Even from a users perspective, it might be convenient and easier to
select the desired QoS from a CSP supplied list, rather than have to
articulate complex details of the QoS policy. The actual definition of
the network QoS to which each of these levels maps to might vary
between installations and CSPs, and could include bandwidth
guarantees, rate shaping/limiting, etc., and is left up to the CSP to
define (as stated before, this could be standardized, but could be
left open to begin with).
Extension API
In effect, the Quantum extensions would expose
An administrative API to,
Create/read/update/delete QoS categories
Verb
URI
Description
POST
/qoses
Create a new QoS category, the tenant-id here will be that of the administrator
Sample request/response,
Request:
POST /qoses.json
{
“qos”:
{
“type”: “ratelimit”,
“policy”: {“kbps”:“10240”} ,
“tenant_id”: “123434-34454-2343”,
“description”: “Gold level service”
}
}
Response:
{
“qos”:
{
“id”: “1234-5678-1234-5678”
}
}
Note that we use the “type” attribute inside the request to specify the type of constraints or quality of service mechanism that will be applied. The policy attribute will be used to specify type-specific actions that a Q
S category will implement. In this case, the ratelimit type has a policy that limits the bandwidth that a VM can burst to, in kbytes. user API to,
Obtain the supported QoS categories, with details about what each category includes
Verb
URI
Description
Get
/qoses
List the QoS categories in the system, the tenant-id here will be that of the user
Sample request/response,
Request:
GET /qoses.json
Response:
{
“qos”:
[
{“id”: “1234-5678-1234-5678”,
“description”: “Gold level service”,
“type”: “ratelimit”,
“policy”: {“kbps”:“10240”}
},
{“id”: “1235-5678-1234-5678”,
“description”: “Silver level service”,
“type”: “dscp”,
“policy”: “af32”
}
]
}
Create/read/update/delete a QoS policy referencing one of the categories list
Associate that QoS policy with a tenant
And/or, associate that QoS policy with a network
And/or, associate that QoS policy with a port
Get the QoS policie(s) associated with a tenant, network, and/or port