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
}



  • No labels