Versions Compared

Key

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

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

SEQUENCE DIAGRAM :

...

Gliffy Diagram
bordertruemacroId66d4f70e-6da8-49a5-a04f-fe80302cbc93
displayNameCapacity based NSI/NSSI Selection
nameCapacity based NSI Selection
pagePin29

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 capacity utilization of the resources by the requested NSIs/NSSIs requested
  7. Based on the current capacity 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

Outgoing APIs

AAI api

Already present in the code. No need to change

DCAE api

DCAE api is documented here in this page.

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 :


Code Block
languagetext
titleHAS 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 Sample Request API :

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/current-throughput/

API Definition 

Get throughput from DCAE

...

Interface definition 

...

Description 

...

Content-Type 

...

application/json 

...

Operation 

...

GET 

...

URI 

...

/api/v1/current-throughput

Request Body 

...

Attribute 

...

Required 

...

Type 

...

Description 

...

sliceIdentifiers 

...

Y 

...

List<String> 

...

Identifier for the specific type of slices 

...

current-throughput

...

Y 

...

String

...

current throughput value expected from DCAE  

slices-config/

Sample Response :

...

{ 

    "

...

sliceConfigDetails": [{ 

        "

...

        "cb51e744-bfcf-4188-885a-e3e3c51ed53e" 

    ], 

    "current-throughput"  

} 

Response Codes 

...

Code 

...

Description 

...

200 

...

Data returned successfully 

...

400 

...

Bad Request (Error in request attributes) 

...

500 

...

Internal server error 

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

        "aggregatedConfig": { 

            "dLThptPerSlice":27, 

            "uLThptPerSlice":30, 

            "maxNumberOfConns":300 

        } 

Response Body 

...

Attribute 

...

Required 

...

Type 

...

Description 

...

currentThroughputResponse 

...

Y 

...

currentThroughputResponse 

...

Response body containing the current throughput for the requested slices 

currentThroughputResponse - Sample Response 

Response Body - Sample 

{ 

    "sliceConfigDetails": [{ 

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

...

    }, 

    { 

        "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 (Please refer NST selection which also a similar flow. NST selection uses SDC to get the additional attributes)