Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Gliffy Diagram
size1200
nameCloud Agnostic Intent Execution Workflow
pagePin30

Cloud Agnostic Policy Design Considerations:

  • Organize Policy per group of Cloud Regions or Cloud Region
    • Different cloud regions have different cloud control plane instances and naturally parallelizeable from MC and OOF perspective
    • One or more of the cloud regions may not respond to the request in time and will be excluded

Cloud Policy Example (under discussion):

{

"service""cloudPolicy",
"policyName""oofMulti-cloudCasablanca.cloudPolicy_vCPE_VNF",
"description""Cloud Policy for vCPE VNF",
"templateVersion""0.0.1",
"version""oofMulti-cloudCasablanca",
"priority""3",
"riskType""test",
"riskLevel""2",
"guard""False",
"content": {

//Support the current simple capacity check API besides the intent-based framework for backward compatibility. If a cloud region does not support the policy-based interface, it is given a high net value assuming the current capacity api (yes/no) returns an yes. This ensures smooth migration to the new policy-based framework. 

"cloudRegion" : {

"id": "All",

"intent": {

"name": "Infrastructure High Availability (HA) for VNF", //realization thru OpenStack-based: anti-affinity, Azure: Fault Domain or Availability set

// rack-level anti-affinity etc. – ETSI (host-level, rack-level, availability zone ...)

}

"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

{"Burstable QoS": "TRUE", "Burstable QoS Oversubscription Percentage": "10"}, {"operator", "OR"}, {"Guaranteed QoS": "TRUE"}

}

"cloudCapacityUtilizaitonAttributes" : {

"current_allocated_capacity" : { {"cpu", "memory", "network"}: {"cloud": {"weight": "0.85", "threshold": "0.9"}, "tenant (resource slice)": {"weight": "0.85", "threshold": "0.9"
}, "host aggregate (resource cluster)": {"weight": "0.85", "threshold": "0.9"} } },

"average_utilization" : { {"cpu", "memory", "network"}: {"cloud": {"weight": "0.13"}, "tenant (resource slice)": {"weight": "0.13"}, "host aggregate (resource cluster)": {"weight": "0.13"} }, "time-window": "24", "unit": "hours" },

"peak_utilization" : { {"cpu", "memory", "network"}: {"cloud": {"weight": "0.02"}, "tenant (resource slice)": {"weight": "0.02"}, "host aggregate (resource cluster)": {"weight": "0.02"} }, "time-window": "24", "unit": "hours" }

//current_allocated_capacity, average_utilization and peak_utilization are normalized to 1

//For a given object such as tenant_cpu, sum of weights across all attributes (current_allocated_capacity, average_utilization & peak_utilization) must be 1

//E.g. net_value = cloud_cpu_current_allocated_capacity*0.85 + cloud_cpu_average_utilization*0.13 + cloud_cpu_peak_utilization*.02 + ...

//For a given object such as cloud_cpu, if the current_allocated_capacity "threshold" exceeds the specified value, return "high net value" 

}

}

"capacityProperty": { //enhanced from current capacity check // use cloud provider in – <cloud region id, cloud provider> – different cloud providers may need different capacities ...

// under discussion – "capabilityProperty": {SR_IOV, ...} 

// under discussion - host network bandwidth

"controller": "multicloud",

"request": "{\"vCPU\": {\"quantity\": {\"get_param\": \"REQUIRED_VCPU\"}, \"Memory\": {\"quantity\": {\"get_param\": \"REQUIRED_MEM\"}, \"unit\": \"GB\"}, \"Storage\": {\"quantity\": {\"get_param\": \"REQUIRED_DISK\"}, \"unit\": \"GB\"}}" //from R2 

...


"resources": ["vGMuxInfra"], //R2 support – single VF module assumption per VNF 

"applicableResources": "any",
"identity": "distance-vGMuxInfra",
"policyScope": ["vCPE", "US", "INTERNATIONAL", "ip", "vGMuxInfra"],
"policyType": "AllPolicy"

}

Follow up for Casablanca :--

  • Policy DB – is there any restriction on json objects store? - Matti to follow up with Ankit

...

  • Current R2

...

  • support – single VF module (VNFC) assumption per VNF for vCPE - follow up with Kang Xi to validate

Code Block
languagepy
themeEmacs
titleCloud Policy Example
linenumberstrue
//Support the current simple capacity check API besides the intent-based framework for backward compatibility. 
//If a cloud region does not support the policy-based interface, it is given a high net value assuming the current capacity api (yes/no) 
//returns an yes. This ensures smooth migration to the new policy-based framework. 
{
"service": "cloudPolicy",
"policyName": "oofMulti-cloudCasablanca.cloudPolicy_vCPE_VNF",
"description": "Cloud Policy for vCPE VNF",
"templateVersion": "0.0.1",
"version": "oofMulti-cloudCasablanca",
"priority": "3",
"riskType": "test",
"riskLevel": "2",
"guard": "False",
"content": 
{
	"cloudOwner" : 
	{
		"owner": "All",
		"intent": 
		{
			"name": "Infrastructure High Availability (HA) for VNF", given a high net value assuming the current capacity api (yes/no) 
//returns an yes. This ensures smooth migration to the new policy-based framework. 
{
"service": "cloudPolicy",
"policyName": "oofMulti-cloudCasablanca.cloudPolicy_vCPE_VNF",
"description": "Cloud Policy for vCPE VNF",
"templateVersion": "0.0.1",
"version": "oofMulti-cloudCasablanca",
"priority": "3",
"riskType": "test",
"riskLevel": "2",
"guard": "False",

"content": 
{
	"cloudOwner" : 
	{
		"owner": "All",
		"intent": 
		{
			"name": "Infrastructure High Availability (HA) for VNF", 
				//realization thru OpenStack-based: anti-affinity, Azure: Fault Domain or
    			//Availability set rack-level anti-affinity etc. – ETSI (host-level, rack-level, availability zone ...)
		}
		"intent": 
		{
			"name": "Infrastructure Resource Isolation for VNF", 
				// realization possible without dedicating CPU and Memory, refer to section on "Cloud Resource Partitioning for Differentiated QoS" 
				//realization thru OpenStack-based: anti-affinity, Azure: Fault Domain or
    			//Availability set rack-level anti-affinity etc. – ETSI (host-level, rack-level, availability zone ...) on how this can help in offering tiered services
			"qosProperty": 
			{
				{"Burstable QoS": "TRUE", "Burstable QoS Oversubscription Percentage": "10"}, {"operator", "OR"}, {"Guaranteed QoS": "TRUE"}
			}
		}
		"intentcloudCapacityUtilizaitonAttributes" : 
		{
			"name": "Infrastructure Resource Isolation for VNF", //current_allocated_capacity is normalized to 1
				//max 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 servicesvalue for cpu or memory is 1 if usage is greater than equal to limit
			"qosPropertycurrent_allocated_capacity" : //slight modifications from R2
			{
				{"Burstable QoS": "TRUE", "Burstable QoS Oversubscription Percentage": "10"}, {"operator{ 
				{"cpu", "ORmemory"},: {"Guaranteed QoS": "TRUE"}"tenant (OpenStack Project or Resource Slice)", 
			},

		}
		"cloudCapacityUtilizaitonAttributes" : 	// under discussion - elaborate capacity, utilization checks for various objects
		{
			//"current_allocated_capacity is normalized to 1" : 
			//max value for cpu or memory is 1 if usage is greater than equal to limit
			"current_allocated_capacity" : //slight modifications from R2
			{ 
				{"cpu", "memory"}: "tenant (OpenStack Project or Resource Slice)", 
			},

			// under discussion - elaborate capacity, utilization checks for various objects{ 
			//	{"cpu", "memory", "network"}: 
			//	{"cloud": {"weight": "0.85", "threshold": "0.9"}, 
			//	{"tenant (resource slice)": {"weight": "0.85", "threshold": "0.9" }, 
			//	{"host aggregate (resource cluster)": {"weight": "0.85", "threshold": "0.9"},
			//},
			//"currentaverage_allocated_capacityutilization" : 
			//{ 
			//	 { {"cpu", "memory", "network"}: 
			//	{"cloud": {"weight": "0.85", "threshold": "0.9"13"}, 
			//	{"tenant (resource slice)": {"weight": "0.85", "threshold": "0.9" 13"}, 
			//	{"host aggregate (resource cluster)": {"weight": "0.8513"} }, "thresholdtime-window": "0.924"},
			//, "unit": "hours" },
			//"averagepeak_utilization" : { {"cpu", "memory", "network"}: {"cloud": {"weight": "0.1302"}, "tenant (resource slice)": {"weight": "0.1302"}, "host 
			//	"host aggregate (resource cluster)": {"weight": "0.1302"} }, "time-window": "24", "unit": "hours" },
			
			//"peak_utilization" : { {"cpu", "memory", "network"}: {"cloud": {"weight": "0.02"}, "tenant (resource slice)": {"weight": "0.02"}, "host 
			//	aggregate (resource cluster)": {"weight": "0.02"} }, "time-window": "24", "unit": "hours" }
			
			//current_allocated_capacity, average_utilization and peak_utilization are normalized to 1current_allocated_capacity, average_utilization and peak_utilization are normalized to 1
			
			//For a given object such as tenant_cpu, sum of weights across all attributes (current_allocated_capacity, average_utilization & 
			//peak_utilization) must be 1
			//E.g. net_value = cloud_cpu_current_allocated_capacity*0.85 + cloud_cpu_average_utilization*0.13 + cloud_cpu_peak_utilization*.02 + ...
			
			//For a given object such as tenantcloud_cpu, sumif of weights across all attributes (the current_allocated_capacity "threshold" exceeds the specified value, average_utilization & 
			//peak_utilization) must be 1
			//E.g. net_value = cloud_cpu_current_allocated_capacity*0.85 + cloud_cpu_average_utilization*0.13 + cloud_cpu_peak_utilization*.02 + ...
			
			//For a given object such as cloud_cpu, if the current_allocated_capacity "threshold" exceeds the specified value, return "high net 
			//value" 
		}
	}

	//use cloud provider in – <cloud region id, cloud provider> – different cloud providers may need different capacities for the same VNF
	"cloudOwner" : 
	{ return "high net 
			//value" 
		}
	}

	//use cloud provider in – <cloud region id, cloud provider> – different cloud providers may need different capacities for the same VNF
	"cloudOwner" : 
	{
		"owner": "Azure",
		"capacityProperty": 
		{ 		 
			//under discussion – "capabilityProperty": {SR_IOV, ...} 
			//under discussion - host network bandwidth
		
			"controller": "multicloud",
			"request": //from R2
			"{\"vCPU\": {\"quantity\": {\"get_param\": \"REQUIRED_VCPU\"}, \"Memory\": {\"quantity\": {\"get_param\": \"REQUIRED_MEM\"}, 	
			\"unit\": 	\"GB\"}, \"Storage\": {\"quantity\": {\"get_param\": \"REQUIRED_DISK\"}, \"unit\": \"GB\"}}"
		}
		
		"owner": "AzureOpenStack",
		"capacityProperty": 
		{ 		 
			//under discussion – "capabilityProperty": {SR_IOV, ...} 
			//under discussion - host network bandwidth
		
			"controller": "multicloud",
			"request": //from R2
			"{\"vCPU\": {\"quantity\": {\"get_param\": \"REQUIRED_VCPU\"}, \"Memory\": {\"quantity\": {\"get_param\": \"REQUIRED_MEM\"}, 	
			\"unit\": 	\"GB\"}, \"Storage\": {\"quantity\": {\"get_param\": \"REQUIRED_DISK\"}, \"unit\": \"GB\"}}"
		}
		
		"owner}
}

"resources": ["vGMux"], //R2 support status – single VF module assumption per VNF 
"applicableResources": "any",
"identity": "OpenStackdistance-vGMux",
		"capacityPropertypolicyScope": 
		{ 		 
			//under discussion – "capabilityProperty": {SR_IOV, ...} 
			//under discussion - host network bandwidth
		
			"controller": "multicloud",
			"request": //from R2
			"{\"vCPU\": {\"quantity\": {\"get_param\": \"REQUIRED_VCPU\"}, \"Memory\": {\"quantity\": {\"get_param\": \"REQUIRED_MEM\"}, 	
			\"unit\": 	\"GB\"}, \"Storage\": {\"quantity\": {\"get_param\": \"REQUIRED_DISK\"}, \"unit\": \"GB\"}}"
		}
	}
}
"resources": ["vGMux"], //R2 support status – single VF module assumption per VNF 
"applicableResources": "any",
"identity": "distance-vGMux",
"policyScope": ["vCPE", "US", "INTERNATIONAL", "ip", "vGMux"],
"policyType": "AllPolicy"
}["vCPE", "US", "INTERNATIONAL", "ip", "vGMux"],
"policyType": "AllPolicy"
}


Net value computation per cloud: [Intent cost -- Configuration file for Private Cloud (e.g. OpenStack), API for Public Cloud (e.g. Azure)] 
-- Allocated CPU capacity per Tenant 	- max. 1
-- Allocated Memory capacity per Tenant - max. 1
-- Cost of "Infrastructure High Availability (HA) for VNF" 
-- Cost of "Infrastructure Resource Isolation for VNF"
	-- If "Burstable Qos" is supported, use the corresponding cost
	-- Else use the cost for "Guaranteed QoS"


Cloud Resource Partitioning for Differentiated QoS (Combined with Previous)

...