Introduction
Performance RIC benchmarking is a feature that aims to provide the performance metrics on both the RAN (Radio Access Network) and Near-RT RIC platform. It involves the communication of E2-simulator from RAN side to Near-RT RIC platform infrastructure that uses the xApp onboarded on RIC platform. The xApp that interacts messages with E2simulator through the Near RT RIC platform pods and records the time that provides metrics on latency/throughput on the RIC platform and on the xApp onboarded on RIC platform is termed as Bouncer xApp.
Features:
- The Bouncer xApp demonstrate RIC benchmarking using the E2 simulator communicating with Near-RT RIC platform .
- Bouncer xApp interacts with E2simulator using the Near- RT RIC platform for sending the RIC Subscription Request and receiving Response for the same.
- Bouncer xApp receives the RIC indication and sends the Control Message.
- This communication is stored in a file with timestamp to determine the latency/throughput as part of Performance RIC benchmarking purpose.
Architecture:
Prerequisites:
Near-RT RIC platform setup is required. Link for Near-RT RIC installation.
E2-interface (E2-Simulator) code needs to be deployed.
The Bouncer xApp needs to be deployed and onboarded on the Near RT RIC platform.
Building E2Sim(E2-interface):
Path: to build Dockerfile : ric_benchmarking/e2-interface/e2sim/e2sm_examples/kpm_e2sm/
build -f Dockerfile -t nexus3.o-ran-sc.org:10002/oran-ric/e2simul:2.0.0 .
docker push nexus3.o-ran-sc.org:10002/oran-ric/e2simul:2.0.0 .
Installing E2Sim(E2-interface):
helm install -n e2sim . --namespace test
kubectl logs <e2sim-pod> -n namespace --follow
The logs must show the entries in the end as below:
[E2AP] Unpacked E2AP-PDU: index = 2, procedureCode = 1
[E2AP] Received SETUP-RESPONSE-SUCCESS
This means the E2Sim(RAN) has connected to E2term pod of RIC Platform successfully, and ready to communicate with xApp. So now you can follow the steps to Deploy the Bouncer xApp.
If, not then it means the E2sim is not connected to E2term pod of RIC Platform and check the status of E2term pods and probe accordingly.
To delete a running E2sim pod:
kubectl delete deployment.apps/e2sim -n namespace
Go to path : ric_benchmarking/e2-interface/e2sim/e2sm_examples/kpm_e2sm/helm
helm del --purge e2sim
To restart the E2Sim pod:
Note: This is done only when either post re-deployment of RIC Platform Pods / RESTART of RIC platform Pods
kubectl -n test rollout restart deployment e2sim
Building xApp:
docker build -f Dockerfile -t nexus3.o-ran-sc.org:10002/oran-ric/bouncer_test:1.0.0 .
docker push nexus3.o-ran-sc.org:10002/oran-ric/bouncer_test:1.0.0
Preparing an xApp for onboarding:
Here we are preparing for API calls into the xApp On-Boarder by providing the locations of the xApp descriptors:
Onboarding of xApp:
STEP -1:
echo '{"config-file.json_url": "https://gerrit.o-ran-sc.org/r/gitweb?p=ric-app/bouncer.git;a=blob;f=Bouncer/init/config-file.json;hb=HEAD"}' > onboard.bouncer.url
STEP -2:
curl --location --request POST "http://$(hostname):32080/onboard/api/v1/onboard/download" --header 'Content-Type: application/json' --data-binary "@./onboard.bouncer.url"
To view onboarded charts:
curl --location --request GET "http://$(hostname):32080/onboard/api/v1/charts"
STEP -3: Deploying xApp
Deploy the xApp by invoking the xApp Manager's API.
Note: that the names of the xApp to be deployed must match with what the on-boarder has.
Once receiving the deploy API call, the xApp Manager will make API call into Helm/Kubernetes to deploy the xApp's Helm chart.
The Routing Manager is also involved if the xApp needs to process RMR messages, – it will complete the routes and send out route updates.
curl --location --request POST "http://$(hostname):32080/appmgr/ric/v1/xapps" --header 'Content-Type: application/json' --data-raw '{"xappName": "bouncer-xapp"}'
Now check the bouncer xApp pod: kubectl get pods -n ricxapp
To delete an onboarded xApp:
curl --location --request DELETE "http://$(hostname):32080/appmgr/ric/v1/xapps/bouncer-xapp"
Note: where the name: 'bouncer-xapp' is the name of your xApp.