...
For each MultiVIM plugin, they configure operator configures the following information:
- For each VM flavor, the cost of that VM to the operator. Note that this costs includes the (potentially discounted) list price for the VM, support cost, and operations cost. The last one is definitely operator specific.
- They Operator also specify the cost for each feature: HA, etc
- Note that the operator is free to choose what time duration the cost metric is specified for each of the MultiVIM plugins (e.g., cost per hour, cost per month) since they will do it consistently for each of the VIMs.
MultiOOF → Multi-VIM/Cloud Policy API - Key Processing Steps
For each cloud owner
- Instance Type Handling
- Instance Type is passed in the capacity check API from OOF (Discuss) //Note, SO → MC passes OpenStack flavor name in the Heat Template/Env file
- Convert to appropriate instance type based on intent //e.g. "Infrastructure Resource Isolation for VNF" may result in a different instance type if the cloud owner supports "Burstable QoS"
- Parse OOF → MC Policy API
- For each cloud region // Public cloud could have different costs in different geographic locations
- net_value_cost = net_value_cost + cost_instance_type // cost per instance type is based on policy (for R3, it is picked up from Multi Cloud configuration file)
- net_value_cost = net_value_cost + cost_intent //e.g. "Infrastructure High Availability (HA) for VNF" may have additional cost
- Continue Capacity Check – Continue R2 Plan
- Private Clouds (OpenStack based)
- Capacity check per Tenant (OpenStack Project)
- returns yes or no
- Capacity check per Tenant (OpenStack Project)
- Public Clouds or Other Clouds
- Capacity check per tenant
- return yes always //assumption: public cloud has infinite capacity
- Capacity check per tenant
- Private Clouds (OpenStack based)
- If infra capacity is finite (Private cloud or Public cloud with reserved instances) // e.g. object of interest is OpenStack Project with a quota (upper limit) for cpu, mem and local disk
- Option A: (potentially supportable with OpenStack based clouds, other clouds to be investigated)
- normalized_cpu_per_object = (current_cpu_used_object + instance_type_cpu*number_of_instances_of vnfc)/total_cpu_object
- if normalized_cpu_per_object > 1, capacity check failed
- normalized_mem_per_object = (current_mem_used_object + instance_type_mem*number_of_instances_of_vnfc)/total_mem_object
- if normalized_mem_per_object > 1, capacity check failed
- normalized_disk_per_object = (current_disk_used_object + instance_type_disk*number_of_instances_of_vnfc)/total_disk_object
- if normalized_disk_per_object > 1, capacity check failed
- net_value_capacity = normalized_infra_capacity = wcpu*normalized_cpu_per_object + wmem*normalized_mem_object + wdisk*normalized_disk_per_object // wcpu, wmem, wdisk are specified in a multi-cloud configuration file; wcpu + wmem + wdisk = 1
- normalized_cpu_per_object = (current_cpu_used_object + instance_type_cpu*number_of_instances_of vnfc)/total_cpu_object
- Option B: (under study)
- normalized_instances_per_object = (current_used_reserved_instances + number_of_instances_of_vnfc)/total_reserved_instances
- net_value_capacity = normalized_instances_per_object
- Option A: (potentially supportable with OpenStack based clouds, other clouds to be investigated)
- MC → OOF return values per <Cloud Owner, Cloud Region> = {net_value_cost, capacity_check_boolean}
OOF → Multi-VIM/Cloud Policy API Multi-Cloud - Other
- Convert to appropriate instance type based on intent //e.g. "Infrastructure Resource Isolation for VNF" may result in a different instance type if the cloud owner supports "Burstable QoS"
- Example
- VNFC with "Guaranteed QoS"
- vCPU (Min/Max) - 16, Mem (Min/Max) - 32GB
- Same VNFC with "Burstable QoS", 25% oversubscription
- vCPU (Min) - 16, Mem (Min) - 32GB
- vCPU (Max) - 20, Mem (Max) - 40GB
- VNFC with "Guaranteed QoS"
- Example
SO → Multi-VIM/Cloud
- Get Cloud Region of interest
- Parse Template (e.g. OpenStack Heat Template)
- For each VNFC, instance type in the template
- Get from A&AI as follows
- Key: <VNFC, Instance Type, Cloud Region> in A&AI
- Value: <Policy JSON - only Intent portion>
- Parse Policy JSON
- Modify template according to Intent - intent examples below
- "Infrastructure High Availability (HA) for VNF"
- "Infrastructure Resource Isolation for VNF"
- Get from A&AI as follows
- For each VNFC, instance type in the template
OOF Processing - Key Processing Steps
Policy Management
- Store VNFC Policy in A&AI as follows
- Key: <VNFC (e.g. vGMux), Instance Type, Cloud Region>
- Value: <Policy JSON - only Intent portion>
OptimizationOOF Processing - Key Processing Steps
Each service specifies an service-specific objective function that is stored as part of the service-specific policy and is used by OOF to evaluate the candidates. For simplicity of the example, let’s consider service that consists only of one VNF instance. The objective function has two components:
...