...
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
// //Example 1: vCPE, Burstable QoS //vCPE: Infrastructure Resource Isolation for VNF with Burstable QoS // { "service": "cloudSelectionPolicy", "policyName": "oofMulti-cloudCasablanca.cloudSelectionPolicy_vCPE_VNF", "description": "Cloud Selection Policy for vCPE VNFs", "templateVersion": "0.0.1", "version": "oofMulti-cloudCasablanca", "priority": "3", "riskType": "test", "riskLevel": "2", "guard": "False", "content": { //Note on cloudOwner, cloudRegion usage: e.g. //"cloudOwner": "xyz", //can be a specific cloud owner such as Azure, VMware VIO, Wind River Titanium Cloud etc. //"cloudRegion": "1", //can be a specific cloud region for a cloud owner //If no cloudOwner is specified, policy applies to all cloudOwners //If no cloudRegion is specified, policy applies to all cloudRegions {//new in R3 "cloudOwner": "Azure", "cost-intent": { "dollarCostEvaluationVM-Type": "TRUE", //evaluate dollar cost per VM type if operator has configured a policy "dollarCostEvaluationVM-FeatureGroup": "TRUE" //evaluate dollar per group of features if operator has configured a policy //deployment-intent will be mapped to a cloud-specific realization which will be mapped to a feature group. } }, {//new in R3 "cloudOwner": "VMware VIO", //can be a specific cloud owner such as Azure, VMware VIO, Wind River Titanium Cloud etc. "deployment-intent": { "name": "Infrastructure Resource Isolation for VNF", // realization possible without dedicating CPU and Memory, refer to section on "Cloud Resource Partitioning for Differentiated QoS" // on how this can help in offering tiered services "qosProperty": { {"Burstable QoS": "TRUE", "Burstable QoS Oversubscription Percentage": "25"} } } }, } "resources": ["vgw", "vgmux"], //"vgw" is also interchangeably used as "vg" "applicableResources": "any", "identity": "cloud-atrributes", "policyScope": ["vCPE", "US", "INTERNATIONAL", "ip", "vgw", "vgmux"], "policyType": "AllPolicy" } // //Example 2: //vCPE: Infrastructure Resource Isolation for VNF with Guaranteed QoS // { "service": "cloudSelectionPolicy", "policyName": "oofMulti-cloudCasablanca.cloudSelectionPolicy_vCPE_VNF", "description": "Cloud Selection Policy for vCPE VNFs", "templateVersion": "0.0.1", "version": "oofMulti-cloudCasablanca", "priority": "3", "riskType": "test", "riskLevel": "2", "guard": "False", "content": { //Note on cloudOwner, cloudRegion usage: e.g. //"cloudOwner": "xyz", //can be a specific cloud owner such as Azure, VMware VIO, Wind River Titanium Cloud etc. //"cloudRegion": "1", //can be a specific cloud region for a cloud owner //If no cloudOwner is specified, policy applies to all cloudOwners //If no cloudRegion is specified, policy applies to all cloudRegions {//new in R3 "cloudOwner": "Azure", "cost-intent": { "dollarCostEvaluationVM-Type": "TRUE", //evaluate dollar cost per VM type if operator has configured a policy "dollarCostEvaluationVM-FeatureGroup": "TRUE" //evaluate dollar per group of features if operator has configured a policy //deployment-intent will be mapped to a cloud-specific realization which will be mapped to a feature group. } }, {//new in R3 "deployment-intent": { "name": "Infrastructure Resource Isolation for VNF", // realization possible without dedicating CPU and Memory, refer to section on "Cloud Resource Partitioning for Differentiated QoS" // on how this can help in offering tiered services "qosProperty": { {"Guaranteed QoS": "TRUE"} } } } } "resources": ["vgw", "vgmux"], //"vgw" is also interchangeably used as "vg" "applicableResources": "any", "identity": "cloud-atrributes", "policyScope": ["vCPE", "US", "INTERNATIONAL", "ip", "vgw", "vgmux"], "policyType": "AllPolicy" } // //Example 3: //vDNS: Infrastructure HA for VMs in a VNF & Infrastructure Resource Isolation for VNF with Burstable QoS // { "service": "cloudSelectionPolicy", "policyName": "oofMulti-cloudCasablanca.cloudSelectionPolicy_vDNS_VNF", "description": "Cloud Selection Policy for vDNS VNFs", "templateVersion": "0.0.1", "version": "oofMulti-cloudCasablanca", "priority": "3", "riskType": "test", "riskLevel": "2", "guard": "False", "content": { //Note on cloudOwner, cloudRegion usage: e.g. //"cloudOwner": "xyz", //can be a specific cloud owner such as Azure, VMware VIO, Wind River Titanium Cloud etc. //"cloudRegion": "1", //can be a specific cloud region for a cloud owner //If no cloudOwner is specified, policy applies to all cloudOwners //If no cloudRegion is specified, policy applies to all cloudRegions {//new in R3 "cloudOwner": "Azure", "cost-intent": { "dollarCostEvaluationVM-Type": "TRUE", //evaluate dollar cost per VM type if operator has configured a policy "dollarCostEvaluationVM-FeatureGroup": "TRUE" //evaluate dollar per group of features if operator has configured a policy //deployment-intent will be mapped to a cloud-specific realization which will be mapped to a feature group. } }, {//new in R3 "cloudOwner": "VMware VIO", //can be a specific cloud owner such as Azure, VMware VIO, Wind River Titanium Cloud etc. "deployment-intent": { "name": "Infrastructure Resource Isolation for VNF", // realization possible without dedicating CPU and Memory, refer to section on "Cloud Resource Partitioning for Differentiated QoS" // on how this can help in offering tiered services "qosProperty": { {"Burstable QoS": "TRUE", "Burstable QoS Oversubscription Percentage": "25"} } } }, {//new in R3 "deployment-intent": { "name": "Infrastructure High Availability (HA) for VNF", } }, } "resources": ["vDNS"], "applicableResources": "any", "identity": "cloud-atrributes", "policyScope": ["vDNS", "US", "INTERNATIONAL", "vDNS"], "policyType": "AllPolicy" } // //Example 4: //vDNS: Infrastructure HA for VMs in a VNF & Infrastructure Resource Isolation for VNF with Guaranteed QoS // { "service": "cloudSelectionPolicy", "policyName": "oofMulti-cloudCasablanca.cloudSelectionPolicy_vDNS_VNF", "description": "Cloud Selection Policy for vDNS VNFs", "templateVersion": "0.0.1", "version": "oofMulti-cloudCasablanca", "priority": "3", "riskType": "test", "riskLevel": "2", "guard": "False", "content": { //Note on cloudOwner, cloudRegion usage: e.g. //"cloudOwner": "xyz", //can be a specific cloud owner such as Azure, VMware VIO, Wind River Titanium Cloud etc. //"cloudRegion": "1", //can be a specific cloud region for a cloud owner //If no cloudOwner is specified, policy applies to all cloudOwners //If no cloudRegion is specified, policy applies to all cloudRegions {//new in R3 "cloudOwner": "Azure", "cost-intent": { "dollarCostEvaluationVM-Type": "TRUE", //evaluate dollar cost per VM type if operator has configured a policy "dollarCostEvaluationVM-FeatureGroup": "TRUE" //evaluate dollar per group of features if operator has configured a policy //deployment-intent will be mapped to a cloud-specific realization which will be mapped to a feature group. } }, {//new in R3 "deployment-intent": { "name": "Infrastructure High Availability (HA) for VNF", } }, {//new in R3 "deployment-intent": { "name": "Infrastructure Resource Isolation for VNF", // realization possible without dedicating CPU and Memory, refer to section on "Cloud Resource Partitioning for Differentiated QoS" // on how this can help in offering tiered services "qosProperty": { {"Guaranteed QoS": "TRUE"} } } } } "resources": ["vDNS"], "applicableResources": "any", "identity": "cloud-atrributes", "policyScope": ["vDNS", "US", "INTERNATIONAL", "ip", "vDNS"], "policyType": "AllPolicy" } |
...
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
//flexibility of having cloud owner and region in the new API provides fine grained control, addresses capacity/cost differences across different //cloud owners/regions and ensures backward compatibility OOF -> MC { "VNFC": "vgw", //"vgw" is also intechangeablyinterchangeably used as "vg" //new in R3 {//new in R3 "cloudOwner": "All", //can be a specific cloud owner such as Azure, VMware VIO, Wind River Titanium Cloud etc. "cloudRegion": "All", //can be a specific cloud region for a cloud owner "cost-intent": { "dollarCostEvaluationVM-Type": "TRUE", //evaluate dollar cost per VM type if operator has configured a policy "dollarCostEvaluationVM-FeatureGroup": "TRUE" //evaluate dollar per feature/group of features if operator has configured a policy //evaluate dollar per group of features if operator has configured a policy //deployment-intent will be mapped to a cloud-specific realization which will be mapped to a feature group. } }, {//new in R3 "cloudOwner": "VMware VIO", //can be a specific cloud owner such as Azure, VMware VIO, Wind River Titanium Cloud etc. "cloudRegiondeployment-intent": "All", //can be a specific cloud region for a cloud owner "deployment-intent": { "name": "Infrastructure Resource Isolation for VNF" { "name": "Infrastructure Resource Isolation for VNF", // realization possible without dedicating CPU and Memory, refer to section on "Cloud Resource Partitioning for Differentiated QoS" // on how this can help in offering tiered services "qosProperty": { {"Burstable QoS": "TRUE", "Burstable QoS Oversubscription Percentage": "25"} } } }, {//new in R3 "cloudOwner": "All", //can be a specific cloud owner such as Azure, VMware VIO, Wind River Titanium Cloud etc. "cloudRegion": "All", //can be a specific cloud region for a cloud owner "deployment-intent": { "name": "Infrastructure High Availability (HA) for VNF", } }, {//new in R3 + R2 "cloudOwner": "OpenStack", // new in R3, // different cloud owners may need different capacities for the same VNFC because of implementation differences "cloudRegion": "All", // new in R3, // different cloud regions for a cloud owner may need different capacities for the same VNFC due to different SW // versions and HW configuration {"Burstable QoS": "TRUE", "Burstable QoS Oversubscription Percentage": "25"} } } }, {//new in R3 + R2 "capacityProperty": //same as R2, presence of this means capacity check needs to be done for the <cloud owner, cloud region> { "request": "{\"vCPU\": {\"quantity\": {\"get_param\": \"REQUIRED_VCPU\"}, \"Memory\": {\"quantity\": {\"get_param\": \"REQUIRED_MEM\"}, \"unit\": \"GB\"}, \"Storage\": {\"quantity\": {\"get_param\": \"REQUIRED_DISK\"}, \"unit\": \"GB\"}}" } }, } //return netValue per <cloud owner, cloud region> //cloud regions which fail capacity check are not in this list MC -> OOF { { "cloudOwner": "OpenStack", "cloudRegion": "1", "netValue": "99" }, { "cloudOwner": "VIO", "cloudRegion": "5", "netValue": "100" }, { "cloudOwner": "Azure", "cloudRegion": "3", "netValue": "101" }, } |
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
// //Policy relevant to MC Azure Plugin // //<Service, VNFC> to instanceType Mapping { { "Service": "vCPE" "VNFC": "vgw", //"vgw" is also intechangeably used as "vg" "cloudOwner": "Azure", "instanceType": "x1", "AvailabilitySetFeatureGroup": "G1" //availability set is a realization of the Intent "Infra High Availability (HA) for VMs in a VNF" } } //workload deployment cost for instance type per cloud region { { "cloudRegion": "5", "instanceType": "x1", "featureGroup": "G1", "workloadDeploymentBaseVMCost": "100", "workloadDeploymentFeatureGroupCost": "0" }, { "cloudRegion": "10", "instanceType": "x1", "featureGroup": "G1", "workloadDeploymentBaseVMCost": "120" "workloadDeploymentFeatureGroupCost" "workloadDeploymentFeatureGroupCost": "0" }, } // //Policy Relevant to VIO plugin // //fixed workload deployment cost { "workloadDeploymentCost": "0100", }, } |
5a) MC Processing (need MC code changes)
...
- Parse OOF → MC Policy (Intent) API
- If a Cloud owner does not support a specific "deployment-intent"
- Drop all the cloud regions for the cloud owner from the candidate list
- For each cloud region // Public cloud could have different costs in different geographic locations
- Compute net_value based on cost
- net_value = net_value + workload_deployment_cost
- If Plugin of cloud owner supports cost based on "dollarCostEvaluationVM-Type" and/or "dollarCostEvaluationVM-FeatureGroup"
- The workload deployment cost is computed per <instance type, cloud region> based on workload deployment cost policy described in Step 5b).
- Instance Type is derived from <Service, VNFC, cloud owner>
- More details are in 5b)
- Implementation Notes:
- It is not mandatory for all plugins to implement this feature since the OOF → MC API has the flexibility of turning on this feature per <cloud owner, cloud region>
- The workload deployment cost is computed per <instance type, cloud region> based on workload deployment cost policy described in Step 5b).
- Else
- The workload deployment cost is computed as a fixed cost per plugin
- If Plugin of cloud owner supports cost based on "dollarCostEvaluationVM-Type" and/or "dollarCostEvaluationVM-FeatureGroup"
- net_value = net_value + workload_deployment_cost
- Capacity Check
- Private Clouds (OpenStack based)
- Perform capacity check per specified Tenant (OpenStack Project)
- The tenant is not currently passed in the OOF → MC API; this is figured out from simple mapping function; A simple mapping would be a tenant per <cloud owner, cloud region> as part of Multi-VIM plugin configuration.
- If Capacity check fails, drop the cloud region out of the candidate list
- Perform capacity check per specified Tenant (OpenStack Project)
- Public Clouds or Other Clouds
- Capacity check always succeeds //assumption: public cloud has infinite capacity
- Private Clouds (OpenStack based)
- Compute net_value based on cost
...
For R3, Workload Deployment Cost Policy can be stored in the form of configuration file(s) in the OOM K8S Persistent Volumes visible to the relevant MC plugin to simplify implementation. Beyond R3, this could be moved to the Policy DB. The details of the configuration are described below.
- Plugin of cloud owner can support cost based on "dollarCostEvaluationVM-Type" and/or "dollarCostEvaluationVM-FeatureGroup"
- Where workload
- deployment cost includes dollar cost of VM Instance Type (based on <Service, VNFC, cloud owner>) and dollar cost (or discount) of other cloud-specific feature groups corresponding to the intent expressed under the deployment-intent keyword in the OOF → MC API
- As an example, with respect to the deployment-intent, "Infrastructure Resource Isolation for VNF" with "Burstable QoS" can yield potential cost savings as compared to "Guaranteed QoS" by allowing smart over-subscription while still guaranteeing isolation
- Note that the operator is free to choose the method of calculating the cost which includes initial cost, support cost & operational cost.
- 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.
...