NSI Selection
Sequence diagram
Interfaces
NSI selection Request
Input: Service profile
NST details
NSST details with subnet capabilities
reuse: true/false
Fetch Optimization policies
Demand policy for NSI and Slice profiles
Constraint policies for Selection
Optimization policies for NSI selection and slice profile generation.
NSI selection request - HAS
Demand: NSI
Constraint: Threshold policy, New policy(for CoverageArea )??
Optimization: Maximize/minimize the service profile parameters
Fetch NSI for AAI
Input: NST info
Output: List of NSIs as candidates
Run Optimization
Consolidated Solution based on the policy
Solution List. Solution object can have NSI/Slice profiles
Note:
For the non-shared scenario, Only slice profiles will be generated. HAS need not fetch the existing NSIs.
Demand
Candidates:
NSI (AAI Inventory)
Slice profiles (Generator)
Demand Examples:
Note: Filtering attributes will have the upper and lower bounds for each subnet(based on capability set and service profile)
Note: Creation cost will come from policy
List of Constraints
Threshold Constraint (Matching NSI and slice profile tuple)
NSI Selection Policies
Demand Policy(NSI)
Demand name(NST)
For NSI
inventory provider (AAI)
Inventory type(nsi)
filtering attributes
Uniqueness
Passthrough attributes
For Slice profiles
inventory provider (Generator)
Inventory type(slice_profiles)
filtering attributes
Uniqueness
Passthrough attributes
Threshold Policy
Demand name(NST)
List of Constraints
Query policy
Existing (All service profile parameters)
Optimization policy
minimize latency
maximize throughput
minimize creation cost
maximize creation cost
HAS Candidates
NSI candidate
Slice profiles Candidate
Consumed APIs (AAI)
GET NSI info from AAI
{"service-instance": [{
"service-instance-id": "1a636c4d-5e76-427e-bfd6-241a947224b0",
"service-instance-name": "nsi_test_0211",
"service-type": "urllc",
"service-role": "nsi",
"service-function": "shared",
"model-invariant-id": "21d57d4b-52ad-4d3c-a798-248b5bb9124a",
"model-version-id": "bfba363e-e39c-4bd9-a9d5-1371c28f4d22",
"resource-version": "1581418601616",
"orchestration-status": "active",
"relationship-list": {
"relationship": [
{
"related-to": "service-instance",
"relationship-label": "org.onap.relationships.inventory.ComposedOf",
"related-link": "/aai/v16/business/customers/customer/5GCustomer/service-subscriptions/service-subscription/5G/service-instances/service-instance/4115d3c8-dd59-45d6-b09d-e756dee9b518",
"relationship-data": [
{
"relationship-key": "customer.global-customer-id",
"relationship-value": "5GCustomer"
},
{
"relationship-key": "service-subscription.service-type",
"relationship-value": "5G"
},
{
"relationship-key": "service-instance.service-instance-id",
"relationship-value": "4115d3c8-dd59-45d6-b09d-e756dee9b518"
}
],
"related-to-property": [
{
"property-key": "service-instance.service-instance-name",
"property-value": "nsi_test_0211"
}
]
}
]
},
"service-profiles": {
"service-profile": [
{
"profile-id": "cdad9f49-4201-4e3a-aac1-b0f27902c299",
"latency": 20,
"max-number-of-UEs": 0,
"coverage-area-TA-list": "[{\"province\":\"??\",\"city\":\"???\",\"county\":\"???\",\"street\":\"?????\"}]",
"ue-mobility-level": "stationary",
"resource-sharing-level": "0",
"exp-data-rate-UL": 100,
"exp-data-rate-DL": 100,
"activity-factor": 0,
"e2e-latency": 0,
"jitter": 0,
"survival-time": 0,
"exp-data-rate": 0,
"payload-size": 0,
"traffic-density": 0,
"conn-density": 0,
"resource-version": "1581418602494"
}
]
}
}]}
Optimization Policies
Demand policy
Demand policy
{
"OSDF_FRANKFURT.vnfPolicy_URLLC": {
"metadata": {
"policy-id": "OSDF_FRANKFURT.vnfPolicy_URLLC",
"policy-version": 1
},
"properties": {
"applicableResources": "any",
"identity": "vnf_URLLC",
"resources": [
"URLLC"
],
"scope": [
"OSDF_FRANKFURT",
"URLLC"
],
"services": [
"URLLC"
],
"vnfProperties": [
{
"attributes": {
"modelInvariantId": "bfbg3636-e39c-iidd-0987-27c28f4oo3",
"modelVersionId": "bfbg3636-e39c-iidd-0987-27c28f4d33",
"service-function": "shared",
"service-role": "nsi"
},
"inventoryProvider": "aai",
"inventoryType": "nsi",
"unique": "true"
},
{
"attributes": {
"core": {
"latency": {
"max": 20,
"min": 5,
"steps": 1
},
"reliability": {
"values": [
99.9,
99.999
]
}
},
"ran": {
"latency": {
"max": 20,
"min": 10,
"steps": 1
},
"reliability": {
"values": [
99.9,
99.9
]
}
},
"transport": {
"latency": {
"max": 20,
"min": 7,
"steps": 1
},
"reliability": {
"values": [
99.9,
99.99
]
}
}
},
"inventoryProvider": "generator",
"inventoryType": "slice_profiles",
"unique": "true"
}
]
},
"type": "onap.policies.optimization.resource.VnfPolicy",
"type_version": "1.0.0",
"version": "1.0.0"
}
}
Threshold Policy
{
"OSDF_FRANKFURT.Threshold_URLLC": {
"metadata": {
"policy-id": "OSDF_FRANKFURT.Threshold_URLLC",
"policy-version": 1
},
"properties": {
"geography": [],
"identity": "Threshold_URLLC",
"resources": [
"URLLC"
],
"scope": [
"OSDF_FRANKFURT",
"URLLC"
],
"services": [
"URLLC"
],
"thresholdProperties": [
{
"attribute": "latency",
"operator": "lte",
"threshold": {
"get_param": "latency"
},
"unit": "ms"
},
{
"attribute": "reliability",
"operator": "gte",
"threshold": {
"get_param": "reliability"
},
"unit": ""
}
]
},
"type": "onap.policies.optimization.resource.ThresholdPolicy",
"type_version": "1.0.0",
"version": "1.0.0"
}
}
{
"OSDF_FRANKFURT.queryPolicy_URLLC": {
"type": "onap.policies.optimization.service.QueryPolicy",
"version": "1.0.0",
"type_version": "1.0.0",
"metadata": {
"policy-id": "OSDF_FRANKFURT.queryPolicy_URLLC",
"policy-version": 1
},
"properties": {
"scope": [
"OSDF_FRANKFURT"
],
"services": [
"URLLC"
],
"geography": [
"US"
],
"identity": "queryPolicy_URLLC",
"queryProperties": [
{
"attribute": "latency",
"attribute_location": "latency"
},
{
"attribute": "reliability",
"attribute_location": "reliability"
}
]
}
}
}
Optimization Policy
{
"OSDF_FRANKFURT.minimizeCost_URLLC": {
"metadata": {
"policy-id": "OSDF_FRANKFURT.minimizeCost_URLLC",
"policy-version": 1
},
"properties": {
"geography": [],
"identity": "optimization",
"objective": "minimize",
"objectiveParameter": {
"operator": "sum",
"parameterAttributes": [
{
"operator": "product",
"parameter": "creation_cost",
"resources": [
"URLLC"
],
"weight": "1"
}
]
},
"resources": [
"URLLC"
],
"scope": [
"OSDF_FRANKFURT",
"REUSE"
],
"services": [
"URLLC"
]
},
"type": "onap.policies.optimization.resource.OptimizationPolicy",
"type_version": "1.0.0",
"version": "1.0.0"
}
}
{
"OSDF_FRANKFURT.maximizeCost_URLLC": {
"metadata": {
"policy-id": "OSDF_FRANKFURT.maximizeCost_URLLC",
"policy-version": 1
},
"properties": {
"geography": [],
"identity": "optimization",
"objective": "maximize",
"objectiveParameter": {
"operator": "sum",
"parameterAttributes": [
{
"operator": "product",
"parameter": "creation_cost",
"resources": [
"URLLC"
],
"weight": "1"
}
]
},
"resources": [
"URLLC"
],
"scope": [
"OSDF_FRANKFURT",
"CREATE_NEW"
],
"services": [
"URLLC"
]
},
"type": "onap.policies.optimization.resource.OptimizationPolicy",
"type_version": "1.0.0",
"version": "1.0.0"
}
}
Sample HAS Templates
{
"files": {},
"limit": 10,
"name": "urllc_sample",
"num_solution": "1",
"template": {
"constraints": {
"URLLC_Threshold": {
"demands": [
"URLLC"
],
"properties": {
"evaluate": [
{
"attribute": "latency",
"operator": "lte",
"threshold": {
"get_param": "latency"
},
"unit": "ms"
},
{
"attribute": "reliability",
"operator": "gte",
"threshold": {
"get_param": "reliability"
},
"unit": ""
},
{
"attribute": "coverage_area_ta_list",
"operator": "eq",
"threshold": {
"get_param": "coverage_area_ta_list"
},
"unit": ""
}
]
},
"type": "threshold"
}
},
"demands": {
"URLLC": [
{
"default_attributes": {
"creation_cost": 0.1
},
"filtering_attributes": {
"environment-context": "shared",
"model-invariant-id": "21d57d4b-52ad-4d3c-a798-248b5bb9124a",
"model-version-id": "bfba363e-e39c-4bd9-a9d5-1371c28f4d22",
"service-role": "nsi"
},
"inventory_provider": "aai",
"inventory_type": "nsi",
"unique": "true"
},
{
"default_attributes": {
"creation_cost": 0.9
},
"filtering_attributes": {
"core": {
"latency": {
"max": {
"get_param": "latency"
},
"min": {
"get_param": "core_latency"
},
"steps": 1
},
"reliability": {
"values": {
"get_param": "core_reliability"
}
}
},
"ran": {
"coverage_area_ta_list": {
"values": [
{
"get_param": "coverage_area_ta_list"
}
]
},
"latency": {
"max": {
"get_param": "latency"
},
"min": {
"get_param": "ran_latency"
},
"steps": 1
},
"reliability": {
"values": {
"get_param": "ran_reliability"
}
}
},
"transport": {
"latency": {
"max": {
"get_param": "latency"
},
"min": {
"get_param": "tn_latency"
},
"steps": 1
},
"reliability": {
"values": {
"get_param": "tn_reliability"
}
}
}
},
"inventory_provider": "generator",
"inventory_type": "slice_profiles",
"unique": "true"
}
]
},
"homing_template_version": "2020-08-13",
"optimization": {
"goal": "maximize",
"operation_function": {
"operands": [
{
"function": "attribute",
"params": {
"attribute": "creation_cost",
"demand": "URLLC"
}
}
],
"operator": "sum"
}
}
},
"timeout": 1200
}
{
"files": {},
"limit": 10,
"name": "urllc_sample",
"num_solution": "1",
"template": {
"constraints": {
"URLLC_Threshold": {
"demands": [
"URLLC"
],
"properties": {
"evaluate": [
{
"attribute": "latency",
"operator": "lte",
"threshold": {
"get_param": "latency"
},
"unit": "ms"
},
{
"attribute": "reliability",
"operator": "gte",
"threshold": {
"get_param": "reliability"
},
"unit": ""
},
{
"attribute": "coverage_area_ta_list",
"operator": "eq",
"threshold": {
"get_param": "coverage_area_ta_list"
},
"unit": ""
}
]
},
"type": "threshold"
}
},
"demands": {
"URLLC": [
{
"default_attributes": {
"creation_cost": 0.9
},
"filtering_attributes": {
"core": {
"latency": {
"max": {
"get_param": "latency"
},
"min": {
"get_param": "core_latency"
},
"steps": 1
},
"reliability": {
"values": {
"get_param": "core_reliability"
}
}
},
"ran": {
"coverage_area_ta_list": {
"values": [
{
"get_param": "coverage_area_ta_list"
}
]
},
"latency": {
"max": {
"get_param": "latency"
},
"min": {
"get_param": "ran_latency"
},
"steps": 1
},
"reliability": {
"values": {
"get_param": "ran_reliability"
}
}
},
"transport": {
"latency": {
"max": {
"get_param": "latency"
},
"min": {
"get_param": "tn_latency"
},
"steps": 1
},
"reliability": {
"values": {
"get_param": "tn_reliability"
}
}
}
},
"inventory_provider": "generator",
"inventory_type": "slice_profiles",
"unique": "true"
}
]
},
"homing_template_version": "2020-08-13",
"optimization": {
"goal": "maximize",
"operation_function": {
"operands": [
{
"function": "attribute",
"normalization": {
"end": 0,
"start": {
"get_param": "latency"
}
},
"params": {
"attribute": "latency",
"demand": "URLLC"
}
},
{
"function": "attribute",
"normalization": {
"end": {
"get_param": "reliability"
},
"start": 99.999
},
"params": {
"attribute": "reliability",
"demand": "URLLC"
}
}
],
"operator": "sum"
}
}
},
"timeout": 1200
}