Capacity based NSI/NSSI Selection - OOF changes
NOTE : This documentation is still in progress and not the final version.
SEQUENCE DIAGRAM :
Steps :
SO request OOF for NSI/NSSI selection
OSDF fetches the optimization policies for the requested NST/NSST
OSDF request HAS(conductor) for optimization
HAS fetches the list of NSIs/NSSIs from AAI
Using the NSI/NSSI id that it fetched from AAI, HAS requests DCAE(Slice Analysis MS) with attributes present in the service profile
DCAE returns current utilization of the resources by the requested NSIs/NSSIs
Based on the current utilization, HAS run the optimization to choose the suitable NSI/NSSI
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:
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.
Find the difference between the response from DCAE and the requested config for the NSI (ulThptPerSlice in DCAEResponse - ulThptPerSlice in ServiceProfile, similarly for dlThptPerSlice)
If the difference is > 0, allow for NSI reuse
RAN NSSI Selection:
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
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)
If the difference is > 0, allow for RAN NSSI reuse
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:
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
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)
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.
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.