Capacity based NSI/NSSI Selection - OOF changes

NOTE : This documentation is still in progress and not the final version.

SEQUENCE DIAGRAM :

Steps : 

  1. SO request OOF for NSI/NSSI selection

  2. OSDF fetches the optimization policies for the requested NST/NSST

  3. OSDF request HAS(conductor) for optimization

  4. HAS fetches the list of NSIs/NSSIs from AAI

  5. Using the NSI/NSSI id that it fetched from AAI, HAS requests DCAE(Slice Analysis MS) with attributes present in the service profile

  6. DCAE returns current utilization of the resources by the requested NSIs/NSSIs

  7. Based on the current utilization,  HAS run the optimization to choose the suitable NSI/NSSI

  8. The selected NSI/NSSI is returned to OSDF, which forwards it to SO

Step 7 - Optimization to be done considering the following points : 

NSI Selection:

  1. Find the configuration requested for the NSI for the current request from AAI ( Fetch Service Profile).  This step is not required as Service Profile comes as an input to OOF for NSI Selection.

  2. Find the difference between the response from DCAE and the requested config for the NSI (ulThptPerSlice in DCAEResponse - ulThptPerSlice in ServiceProfile, similarly for dlThptPerSlice)

  3. If the difference is > 0, allow for NSI reuse

RAN NSSI Selection:

  1. Find the configuration requested for the RAN NSSI for the current request from AAI ( Fetch AN Slice Profile)  Slice Profile need not be fetched from AAI, it is an input to OOF for RAN NSSI Selection

  2. Find the difference between the response from DCAE and the requested config for the RAN NSSI (ulThptPerSlice in DCAEResponse - expDataRateUL in SliceProfile, similarly for dlThptPerSlice)

  3. If the difference is > 0, allow for RAN NSSI reuse

  4. For the moment, we can assume that the calculation for TN-FH and TN-MH slices returns true by default. But keep a place holder to do all these findings for TN-FH and TN-MH slices. We can enhance it later.

RAN NF NSSI Selection:

  1. Find the configuration requested for the RAN NF NSSI for the current request from AAI ( Fetch AN NF Slice Profile)  Slice Profile need not be fetched from AAI, it is an input to OOF for RAN NF NSSI Selection

  2. Find the difference between the response from DCAE and the requested config for the RAN NF NSSI (ulThptPerSlice in DCAEResponse - expDataRateUL in SliceProfile, similarly for dlThptPerSlice)

  3. If the difference is > 0, allow for RAN NF NSSI reuse

The optimization method to be done depends on the feasibility of the below two suggested methods : 

1 - Including the operand attribute and difference function in the constraint model of the HAS template to find the current throughput

2 - Passing only the difference attributes ( current throughput) to the constraint model of the existing HAS template by adding the difference attributes to the candidate list



The second method was found to be feasible and the implementation was proceeded with that.



SAMPLE HAS TEMPLATE :



HAS Template
{ "files": {}, "limit": 10, "name": "urllc_sample", "num_solution": "1", "template": { "constraints": { "URLLC_core_Threshold": { "demands": [ "URLLC_core" ], "properties": { "evaluate": [ { "attribute": "latency", "operator": "lte", "threshold": { "get_param": "latency" }, "unit": "ms" }, { "attribute": "uLThpt_difference", "operator": "gt", "threshold": "0" "unit": "" },                        { "attribute": "dLThpt_difference", "operator": "gt", "threshold": "0" "unit": "" }                     ] }, "type": "threshold" } }, "demands": { "URLLC_core": [ { "filtering_attributes": { "environment-context": "shared", "model-invariant-id": "21d57d4b-52ad-4d3c-a798-248b5bb9124a", "model-version-id": "bfba363e-e39c-4bd9-a9d5-1371c28f4d22", "service-role": "nsi", "max-number-of-UEs": "10" }, "inventory_provider": "aai", "inventory_type": "nsi", "unique": "true" } ] }, "homing_template_version": "2020-08-13", "optimization": { "goal": "minimize", "operation_function": { "operands": [ { "function": "attribute", "params": { "attribute": "latency", "demand": "URLLC_core" } } ], "operator": "sum" } } }, "timeout": 1200 }



Outgoing APIs

AAI API

Already present in the code. The below pages contain the details regd. the AAI APIs used.

NSI Selection

NSSI Selection

DCAE API

DCAE API is documented in this page - NSI/NSSI Selection based on resource occupancy levels - DCAE changes 

Sample Request to fetch the required parameter :

curl -X GET -H "authorization: Basic YWFpOktwOGJKNFNYc3pNMFdYbGhhazNlSGxjc2UyZ0F3ODR2YW9HR21KdlV5MlU=" -H "x-ecomp-instanceid:AAI" -H 'Accept:application/json' -k https://10.31.4.43:8080/api/v1/slices-config/

Sample Response :

{ 

    "sliceConfigDetails": [{ 

        "sliceIdentifier""5d9b3293-fa20-4776-bb41-92ba5e384419", 

        "aggregatedConfig": { 

            "dLThptPerSlice":27, 

            "uLThptPerSlice":30, 

            "maxNumberOfConns":300 

        } 

    }, 

    { 

        "sliceIdentifier""e316f4b2-01fa-479a-8522-64fe9c0c2971", 

        "aggregatedConfig": { 

            "dLThptPerSlice":40, 

            "uLThptPerSlice":25, 

            "maxNumberOfConns":400 

        } 

    }] 

} 

NOTE: sliceIdentifier – NSI/NSSI 

Impacted OOF modules

HAS-DATA component

HAS data component fetches the data from AAI and other inventory sources. A new inventory source for DCAE should be added, and it should be used during the NSI/NSSI selection flow.