NSI Selection











Sequence diagram

Interfaces

  1. NSI selection Request

    1. Input: Service profile

    2. NST details

    3. NSST details with subnet capabilities

    4. reuse: true/false

  2. Fetch Optimization policies

    1. Demand policy for NSI and Slice profiles

    2. Constraint policies for Selection

    3. Optimization policies for NSI selection and slice profile generation.

  3. NSI selection request - HAS

    1. Demand: NSI

    2. Constraint: Threshold policy, New policy(for CoverageArea )??

    3. Optimization: Maximize/minimize the service profile parameters

  4. Fetch NSI for AAI

    1. Input: NST info

    2. Output: List of NSIs as candidates

  5. Run Optimization

  6. Consolidated Solution based on the policy

    1. 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 }