14 October 2015
Ildikó Vancsa, Ericsson
Gerald Kunzmann, DOCOMO Euro-Labs
Promise
Resource Reservation
Capacity Management
Architectural options
PROMISE architectural options - overview
Pure shim-layer
Consumer A
Consumer B
Shim-layer�(w/ allocation+reserv. logic+policies)
OpenStack�(Nova, Neutron, Cinder)
Pros & Cons:
+ flexible update of APIs possible
+ reservation and capacity mgmt in one place
+ multi-site support
- Feasibility of shim-layer for all I/Fs between � Consumer(s) and VIM(s) ?
- Synchronization gap/issue � between OpenStack and Shimlayer
- No support of e.g. affinity-rules etc. ?
Reservation + �alloc./termin. requests
Allocation/termination
Sync capacity
Pros & Cons:
+ removes limitation to force all signaling� via Shim-layer
+ multi-site support
- Requires reservation-related policies in OS�- Requires OS to handle ReservationId
- Sychronization gap/issue betwen OS and SL�- No support of e.g. affinity-rules etc. ?
Hybrid
Consumer A
Consumer B
Shim-layer�(w/ reserv. logic+policies)
OpenStack�w/ policies for dealing with reserved resources
Reservation�requests
Allocation/termination�(optional: using Reserv.Id)
ReservationId
Sync�capacity
Notify alloc/term
Super-VIM
Consumer A
Consumer B
Pros & Cons:
+ code maintained by OS
- Requires eXtended Blazar
- Requires OS to handle all reservation� policies/logic and reservation database
Reservation + �alloc./termin. requests
Shim-layer / Super-VIM�(w/ API translation)
OpenStack + BlazarX�w/ policies for dealing with reserved resources
Another �Resource Provider�w/ policies for dealing with reserved resources
demo B-release evolution path? target architecture?
Pure OpenStack
Consumer A
Consumer B
Pros & Cons:
+ no shim-layer required, i.e.� no sychronization gap etc.� and no limitations for signalling
+ code maintainted by OS
- Requires eXtended Blazar
- Requires OS to handle all reservation� policies/logic and reservation database
- no multi-site functionality per se?
Reservation + �alloc./termin. requests
OpenStack + BlazarX�w/ policies for dealing with reserved resources
Option 1 - pure shim-layer
Main benefit: no change in OpenStack required
Main disadvantages:
→ is this feasible in planned architecture?
Gaps:
Open issues/questions:
Pure shim-layer
Consumer A
Consumer B
Shim-layer�(w/ allocation+reserv. logic+policies)
OpenStack�(Nova, Neutron, Cinder)
Pros & Cons:
+ flexible update of APIs possible
+ reservation and capacity mgmt in one place
+ multi-site support
- Feasibility of shim-layer for all I/Fs between � Consumer(s) and VIM(s) ?
- Synchronization gap/issue � between OpenStack and Shimlayer
- No support of e.g. affinity-rules etc. ?
Reservation + �alloc./termin. requests
Allocation/termination
Sync capacity
Using option 1 we can realize demo for OPNFV Summit
Option 1 - flow chart - Reservation
Virtualised Resource Capacity
Consumer A
Shim Layer
Reservation
Shim Layer
Capacity Mgt
(start, end, capacity)
“end”: “2015-11-23T00:00:00Z”, “capacity”: {“instances”: 2, “addresses”: 1, “gigabytes”: 10}
2. query_capacity
(start, end, capacity)
“end”: “2015-11-23T00:00:00Z”,
“capacity”: 3 ‘available capacity’
3. OK
4. OK
(reservation_id)
Option1: compute allocation request - „no error“ case
Consumer
Res. Mgmt/ shim-layer
allocation_request�(reservation_id, name, flavour, …)
Check if reservation_id exists in timewindow
Check if capacity (reservation-usage) >
capacity(flavour)
Nova
Client
pkgcloud
client
createServer
(name, flavour, …)
Ceilometer
id
createEventAlarm(id, ...)
Allocation process
allocated
allocated
OKAY
compute.createclient
(username, password, authUrl, ...)
Option 2 - hybrid solution
Gaps:
Open issues/questions:
Peter: current Promise implementation is most closely aligned with this Hybrid option (2). Gerald disagrees as we don’t have notion of reservationID in OS yet, so reservationID cannot be used in allocation requests.
Hybrid
Consumer A
Consumer B
Shim-layer�(w/ reserv. logic+policies)
OpenStack�w/ policies for dealing with reserved resources
Pros & Cons:
+ removes limitation to force all signaling� via Shim-layer
+ multi-site support
- Requires reservation-related policies in OS�- Requires OS to handle ReservationId
- Sychronization gap/issue betwen OS and SL�- No support of e.g. affinity-rules etc. ?
Reservation�requests
Allocation/termination�(optional: using Reserv.Id)
ReservationId
Sync�capacity
Notify alloc/term
Option 2 - flow chart
Option 3 - pure OpenStack
Main advantages:
Disadvantages:
Pure OpenStack
Consumer A
Consumer B
Pros & Cons:
+ no shim-layer required, i.e.� no sychronization gap etc.� and no limitations for signalling
+ code maintainted by OS
- Requires eXtended Blazar
- Requires OS to handle all reservation� policies/logic and reservation database
- no multi-site functionality per se?
Reservation + �alloc./termin. requests
OpenStack + BlazarX�w/ policies for dealing with reserved resources
Option 3 - flow chart
Option 4 - Super-VIM
Super-VIM
Consumer A
Consumer B
Pros & Cons:
+ code maintainted by OS
- Requires eXtended Blazar
- Requires OS to handle all reservation� policies/logic and reservation database
Reservation + �alloc./termin. requests
Shim-layer / Super-VIM�(w/ API translation)
OpenStack + BlazarX�w/ policies for dealing with reserved resources
Another Resource Provider�w/ policies for dealing with reserved resources
Shim-layer is providing abstraction layer to provide:
Option 3 - flow chart
BACKUP SLIDES
Implementation Architecture
(To Be Updated)
Demo Implementation Status
Consumers (NFVO, VNFM)
OpenStack
Simulator, Release X/Y, Distro A/B�
Shim-layer�
OPNFV Promise Module
Capacity Mgt
Reservation
Capacity
Utilization
Policies
Allocation
NFV-MANO
Module
Pkgcloud
Query Capacity
{
“POST”: {
“description”: “Check available capacity information about
a specified resource collection”,
“input”: {
“synth”: “object”,
“leaf”: {
“capacity”: {
“type”: {
“enumeration”: {
“enum”: {
“total”: {
“value”: 0
},
“reserved”: {
“value”: 1
},
“usage”: {
“value”: 2
},
“available”: {
“value”: 3
....
“zone”: {
“type”: {
“instance-identifier”: {
“ct: instance-type”: “nfvi:AvailabilityZone”
}
}
},
“window”: {
“description”: “Matches entries that are within the specified start/end time window”,
“leaf”: {
“start”: {
“type”: “yang:date-and-time”
},
“end”: {
“type”: “yang:date-and-time”
},
“scope”: {
“type”: {
“enumeration”: {
“enum”: {
“exclusive”: {
“description”: “Matches entries that start AND end within the window”,
“value”: 0
},
“inclusive”: {
“description”: “Matches entries that start OR end within the window”,
“value”: 1
….
Create Reservation
{
“POST”: {
“description”: “Make a request to the reservation system to
reserve resources”,
“status”: “unavailable”,
“input”: {
“synth”: “object”,
“description”: “Information model capturing parameters for
describing a collection of resource capacity and resource
elements”
….
“start”: {
“type”: “yang:date-and-time”
},
“end”: {
“type”: “yang:date-and-time”
…
“container”: {
“capacity: {
“uses”: {},
“leaf”: {
“cores”: {
“type: “int16”,
“default”: “0”
},
“ram”: {
“type”: “int32”,
“default”: “0”,
“units”: “MB”
…
“leaf-list”: {
“elements”: {
“type”: {
“instance-identifier”: {
“ct:instance-type”: “nfvi:ResourceElement”,
“require-instance”: true
....
Promise – Resource Reservation
17
Name | Type | Description |
Start | Timestamp | Start time for consumption of the reserved resources |
End | Timestamp | End time for consumption of the reserved resources |
Expiry | Timestamp | If not all reserved resources are allocated between start_time and expiry, the VIM shall release the corresponding resources |
Amount | Number | Amount of the resources per resource element type (i.e. compute/network/storage) that need to be reserved |
Zone | Identifier | The zone where the resources need(s) to be reserved |
Attributes | List | Attributes of the resources to be reserved such as DPDK support, hypervisor, network link bandwidth, affinity rules, etc. |
Resources | List | Identifiers of existing resource elements to be reserved (such as images, flavors, virtual containers, networks, physical machines, etc.) |
�
Information Elements
Promise – Resource Reservation
18
�
Promise – Capacity Management
19
�
Information Elements
Name | Type | Description |
Notification | Identifier | Identifier issued by the VIM for the capacity change event notification |
Zone | Identifier | Identifier of the zone where capacity has changed |
Used/ Reserved/ Total Capacity | List | Used, reserved and total capacity information regarding the resource items subscribed for notification for which capacity change event occurred |
Name | Type | Description |
Zone | Identifier | Identifier of the zone where capacity is requested |
Attributes | List | Attributes of resource items to be notified regarding capacity change events |
Resources | List | Identifiers of existing resource items to be queried regarding capacity info (such as images, flavors, virtual containers, networks, physical machines, etc.) |
Promise – Capacity Management
20
�