xApp development

436 views
Skip to first unread message

Lukasz Kulacz

unread,
May 6, 2021, 5:26:58 AM5/6/21
to SD-RAN-Dev, Raphael Rosa, Adrian Kliks, Woojoong Kim

Hello,

 

I would like to create a xApp and run it with RIC (RiaB). As I am quite new to this topic, I am missing some key information/advice on how to start such a proces. So far I was able to run (inside the VM – Ubuntu 18.04) RiaB with ONOS PCI and RanSim, and with FB-AH xApp. I was able to:

  • access CLI
  • download some metrics (CLI)
  • set up the cell PCI (CLI), and observe the change
  • view e2t logs in grafana (after port forwarding)
  • run GUI (only of FB-AH and not in the same way as in instruction, localhost:30095 is not working for me)
  • run GUI for ONOS (but there was error with RanSim and nothing else was here)

I wonder how else you can interact with RiaB (e.g. is this grafana and „pod logs” the only way to observe something?)?

 

More importantly - getting closer to creating own xAPP - is there any tutorial, application template, description of how to approach it? How to run such an application (add to a running RIC) and how to remove it later?

 

Could I ask for a hint or indication of a person who would be able to help me at this initial stage?

 

Best Regards,

Łukasz Kułacz, M.Sc.
R&D ENGINNER

tel.: +48 695 687 303
lukasz...@rimedolabs.com
      

 

 

Adib Rastegarnia

unread,
May 9, 2021, 2:57:43 PM5/9/21
to SD-RAN-Dev, Lukasz Kulacz, Raphael Rosa, Adrian Kliks, Woojoong Kim
Hi Lukasz,

Thanks for your interests and trying ONF RIC. I try to give you some high level answers to your questions first which hopefully gives you some ideas about application development in this context. There are multiple questions that you should ask yourself when you want to develop an application in this domain: For example:
1- Do I want to develop an application for one of the use cases that we have service model plugins and their reference implementations (in RANSim or our CU or any other E2 nodes) or do I want to write an application for a use case that doesn't exist today? For the first case which is the easier path to exercise  writing  of an application, you just need to focus on writing application and you don't need to worry about compiling service model ASN.1 file , creating service model plugins (https://docs.sd-ran.org/master/onos-e2-sm/README.html), implementing the actual service model logic in RANSim or a real E2 node because you can already use whatever available and expand those implementations as needed. We provide SDKs for Golang (https://docs.sd-ran.org/master/onos-ric-sdk-go/README.html) and very soon Python that are high level abstractions around gRPC APIs that make interaction with different components of RIC (like E2T, config, topo) possible in a more convenient way. For example, an application can be simple as a main function which uses E2 SDK APIs to create a subscription to receive E2 indication messages from an E2 node which implements a service model like KPM (simulation or real hardware)  or it can be more complex which the app implements  some logic to process incoming indication messages, apply some decision making algorithms, and  use APIs like E2 control API to change the RAN environment behavior based on those decisions.  So you have freedom to organize your app however you want but as you know applications are deployed in k8s environment  so an application can be a k8s Deployment for example. You can look at our xApps helm charts (e.g. KPIMON xAPP, https://github.com/onosproject/sdran-helm-charts/tree/master/onos-kpimon) which gives you some ideas how you should create one of those charts using helm command. Of course you also need to containerize your app that can be deployed in k8s using helm. So to summarize the first path to writing an application:
  •  Choose the programming language, read SDK docs to understand the usage of it, look at our xApps to see how we use them in the xApps and try to create your app.
  •  Containerize your app, create helm chart for your app, and then install/uninstall using helm

For the second question (i.e. do I want to write an application for a use case that doesn't exist?):  Suppose you want to write an application for a use case that doesn't exist (i.e. we haven't implemented in ONF RIC as an example). This one is a little more complicated because you also need to implement the logic in an E2 node (simulation or hardware). In this case, the following high level steps required:
  • Create service model plugins based on ASN.1 definitions for that service model (our developers presented how you can do it in one of our previous community meetings so I would suggest to look at that video that gives you some ideas about that process). In this step, if the ASN.1 definition is also not available you also need to design and create one. PCI use case is an example that we define the service model ourselves to exercise E2 control API.
  • Load model plugin in E2T and if you want to use RANsim, you also need to load model plugin in RANsim.
  • Implement the logic of E2 node for that service model in RANsim or in hardware.
  • Use SDK to write an xApp for this new use case
  • Containerize your app, create helm chart for your app, and then install/uninstall using helm

I would suggest to try to write your app based on the use cases that we support (PCI, KPIMON) to exercise application development before trying to implement a completely new use case (our xApps: https://github.com/onosproject/onos-pci, https://github.com/onosproject/onos-kpimon) . I agree with you that a high level tutorial about creating xApps would be useful specially if someone is not completely familiar with k8s  and hopefully, we will provide such tutorials/app templates in future.


Thanks,
Adib

Woojoong Kim

unread,
May 10, 2021, 2:40:03 PM5/10/21
to SD-RAN-Dev, Adib Rastegarnia, Lukasz Kulacz, Raphael Rosa, Raphael Rosa
Hi Lukasz,

Since Adib answered really well, you can start with the point that Adib explained.

Apart from that, I have a few questions and suggestions like below:

1. You mentioned RiaB has ONOS-PCI, RAN-Simulator, and FB-AH applications. It should not be deployed simultaneously. If we use ONOS-PCI, FB-AH should not be deployed, and vice versa. Could you please share how you deployed? And, could you share the result of this command `kubectl get po -n riab`?

2. ONOS-GUI should be disabled at this point. Please turn that off.

3. AFAIK, we have a logging system showing on Grafana dashboard - @Raphael, could you explain how to use it?

4. Also, we are working on the Prometheus exporter and Grafana dashboard. It will be done for the next release.

5. When you try to see FB-AH GUI, could you share the steps that you did in detail? It seems like the SSH tunnel was not working.

Thanks,
Woojoong.

Nick H

unread,
Apr 4, 2022, 10:54:13 AM4/4/22
to SD-RAN-Dev, wooj...@opennetworking.org, ad...@opennetworking.org, Lukasz Kulacz, Raphael Rosa, rap...@opennetworking.org
Hi,

As per the OP, I'm also trying to instantiate onos-gui but within RIAB 1.4. 

Having gone through the various onos reference materials on deploying onos-gui, I keep ending up with a persistent "no matches for kind "Ingress in version networking.k8s.io/v1" console message when attempting to 'helm install' it.

Any guidance very welcome...

Many thanks,
Nick

Sean Condon

unread,
Apr 4, 2022, 10:58:28 AM4/4/22
to Nick H, wooj...@opennetworking.org, ad...@opennetworking.org, Lukasz Kulacz, Raphael Rosa, rap...@opennetworking.org
Hi Nick - can you point at the documentation you're using for RiaB 1.4 - I think onos-gui has fallen behind the latest deleopements in SD-RAN at this stage. thanks, Sean


--
You received this message because you are subscribed to the Google Groups "SD-RAN-Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to sdran-dev+...@opennetworking.org.
To view this discussion on the web visit https://groups.google.com/a/opennetworking.org/d/msgid/sdran-dev/6c2cacb6-e944-46da-aff7-e09f1b96cce3n%40opennetworking.org.


--
Sean Condon
Member of Technical Staff
Open Networking Foundation

Saurav Das

unread,
Apr 4, 2022, 3:05:13 PM4/4/22
to Sean Condon, Nick H, wooj...@opennetworking.org, ad...@opennetworking.org, Lukasz Kulacz, Raphael Rosa, rap...@opennetworking.org

Nick H

unread,
Apr 4, 2022, 3:56:51 PM4/4/22
to Saurav Das, Lukasz Kulacz, Raphael Rosa, Sean Condon, ad...@opennetworking.org, rap...@opennetworking.org, wooj...@opennetworking.org
Thanks Sean - I was using the base micro ONOS documents for ONOS-guidance as there was nothing in the SD-RAN repo.

Thanks Saurav - your reply explains the current position and absence in the current releases!

If anyone can point me at the latest roadmap for SD-RAN, that would be really appreciated.

Best,
Nick

Nick Hall
Head of Technology Integration
Inmarsat

Saurav Das

unread,
Apr 4, 2022, 9:21:36 PM4/4/22
to Nick H, Lukasz Kulacz, Raphael Rosa, Sean Condon, ad...@opennetworking.org, rap...@opennetworking.org, wooj...@opennetworking.org
We haven't documented it anywhere yet, but I talked about Roadmap at the end of our last community meeting

Thanks
Saurav

Nick H

unread,
Apr 5, 2022, 5:28:20 AM4/5/22
to Saurav Das, Lukasz Kulacz, Raphael Rosa, Sean Condon, ad...@opennetworking.org, rap...@opennetworking.org, wooj...@opennetworking.org
Many thanks Saurav. I’ll review your comments from the last community meeting.

Best,
Nick
Reply all
Reply to author
Forward
0 new messages