Call flow Diagram



@startuml
Autonumber
Skinparam sequenceArrowThickness 2
skinparam ParticipantPadding 5
skinparam BoxPadding 10

Box Setup Scripts #gold
    Participant POLSCR as “A1 script” <<RICAPP>>
	Participant DBSCR as "DB Set script" <<RICAPP>>
End box

Box “O-RAN RIC” #lightpink
    Participant A1TERM as “A1 MED” <<RIC>>
	Participant DBAAS as "DBAAS" <<RIC>>
    Participant TSXAPP as “TS xApp” <<RICAPP>>
	Participant QPDXAPP as "QP Driver xApp" <<RICAPP>>
	Participant QPXAPP as "QP xApp" <<RICAPP>>
End Box

DBSCR -> DBAAS : SDL Set to create UE and Cell test data
POLSCR -> A1TERM : Policy Type Create
POLSCR -> A1TERM : Policy Create
A1TERM -> TSXAPP : RMR Policy Create

Group Periodic loop for Handoff decision
TSXAPP -> DBAAS : Query UE Signal Strength
Note Right 
 TS xApp Wakes up
End Note
TSXAPP -> QPDXAPP : RMR UE List for Predictions
Note Left 
 TS xApp checks for low performing UEs
End Note
QPDXAPP -> DBAAS : Query UE and Cell data
QPDXAPP -> QPXAPP : RMR Prediction Request 
QPXAPP -> TSXAPP : RMR Prediction
Note Left 
 TS xApp checks for if neighbor throughput is better.  If so, log a CONTROL request
End Note
End 


@enduml





Status

To be tested


Delivery Status



OTFOAMNONRTRICRICPRICAPPO-DUTest ResultNotes

  1. SDL set up (RICP.DBaaS)








2. Policy Type Create

(RICP.A1)









3. Policy Create (RICP.A1)







4. RMR Policy Create (RICP.A1 → RICAPP.TS)







5. Query for UE Signal Strength (RICAPP.TS → RICP.DBaaS)







6. RMR UE List for Prediction (RICAPP.TS → RICAPP.QPD)







7. Query UE and Cell data (RICAPP.QPD → DBaaS)







8. RMR Prediction Request (RICAPP.QPD → RICAPP.QP)







9. RMR Prediction (RICAPP.QP → RICAPP.TS)









Test Manual


Pre-population of test data in DBAAS


In order to trigger the loop in the Traffic Steering use case, we must populate test data in DBAAS.  This includes both cell and UE entries.

This is done through a script.  Follow these directions to run the script:

git clone "https://gerrit.o-ran-sc.org/r/ric-app/ts"

cd ts/ts/test/populatedb

chmod a+x populate_db.sh

./populate_db.sh

This script will build a docker image locally and also install a helm chart in the kubernetes cluster to run the image.

The code that is run will write the necessary data to SDL


Onboarding and Deployment of xApps

The Use case involves three different xApps:


Each of them have a descriptor in their gerrit repo under the xapp-descriptor/ directory.

None of them have xapp specific controls and therefore no individual json schema

Here are the URLs for each which can be included in HTTP POST call to onboard tool

TS xApp:

https://gerrit.o-ran-sc.org/r/gitweb?p=ric-app/qp-driver.git;a=blob_plain;f=xapp-descriptor/config.json;hb=HEAD


QPDriver xApp:

https://gerrit.o-ran-sc.org/r/gitweb?p=ric-app/qp-driver.git;a=blob_plain;f=xapp-descriptor/config.json;hb=0a0dff549b933f049b05fc26ce2f0a13da853b78


QP xApp

https://gerrit.o-ran-sc.org/r/gitweb?p=ric-app/qp.git;a=blob_plain;f=xapp-descriptor/config.json;hb=HEAD


Here is the URL for the Xapp Onboarder in your environment.  The values 'ingress_host', 'ingress_port_http' and 'xapp_onboarder_path' refer to the hostname and port for reaching Kong ingress controller, and the ingress path assigned to xapp onboarder (likely the path is set to 'onboard').

http://{{ingress_host}}:{{ingress_port_http}}/{{xapp_onboarder_path}}/api/v1/onboard/download

As an example, the message body for the TS xapp is below.  This needs to be sent in a POST request with Content-Type equal to 'application/json'

{
        "config-file.json_url""https://gerrit.o-ran-sc.org/r/gitweb?p=ric-app/qp-driver.git;a=blob_plain;f=xapp-descriptor/config.json;hb=HEAD"
}


To subsequently deploy any of these xapps, use the following command:

curl --location --request POST "http://{{ingress_host}}:{{ingress_port_http}}/{{xapp_onboarder_path}}/ric/v1/xapps" --header 'Content-Type: application/json' --data-raw '{"xappName": "trafficxapp"}'

(where xappName would be later set to 'qpdriver' and 'qp' to deploy the QP Driver and QP xapps respectively)

Creation of Traffic Steering Policy Type and Policy Instance

TS xApp consumes an A1 Policy

Below are the steps for providing it with a policy.


Policy Type Create 

Copy the following into a file called create.json -

{"name" : "tsapolicy", "description" : "tsa parameters", "policy_type_id" : 20008, "create_schema" : { "$schema" : "http://json-schema.org/draft-07/schema#", "type" : "object", "properties" : { "threshold" : { "type" : "integer", "default" : 0 } }, "additionalProperties" : false } }

Then run:

curl -X PUT --header "Content-Type: application/json"  --data-raw @create.json   http://<Base URL for Kong>/a1mediator/a1-p/policytypes/20008


Policy Create

Run command:

curl -X PUT --header "Content-Type: application/json" --data "{\"threshold\" : 5}" http://<Base URL for Kong>/a1mediator/a1-p/policytypes/20008/policies/tsapolicy145