Skip to content

1. xApp Framework In-depthΒΆ

To accelerate the development of xApps, Accelleran has created the xApp Framework which is available on GitHub: https://github.com/accelleran-ext/xapp-framework-package. In this repository, the xApp developer has access to the xApp Library under xapp_core/xapp_lib. Note that the actual code is distributed as a .zip file in the Releases section of the repository. The developer can explore the xApp Library files to get familiar with the different methods and abstractions available. We also cover what the xApp Library comes with in the xApp Library In-depth section.

The xApp Library also contains functionality that allows xApps to be developed using the Python AsyncIO framework, which can be more appropriate for applications that are event driven. The features offered are equivient to the non-Async functionality and is covered in the xApp Async Library In-depth section.

Also, in the repository, we provide an example xApp in the example folder. Here, we provide template Python files which use the xApp Library and include examples of usage. In the _example _folder we provide the Dockerfiles, readme and requirements files. The Dockerfiles (one for production and another for development mode) that can be used on the xApp example to build the xApp Core. An example README.md file used for documentation is also provided, more details on it can be found in the The xApp Documentation README.md section. The requirements.txt contains the python required packages for the xApp to run properly. This file is used during the build process of the xApp Core to install all the required packages in the Docker image, including the xApp Library. This is why credentials are also required to be passed to the build process, as explained in the Build your own xApp Dev Environment and Productize your xApp sections.

In the example/core folder, we provide the example python code. The xapp_main.py file is the main python file where the xApp is started. In this example file, you can check how the xApp Builder is used, how to retrieve data from Kafka, as well as different examples on the usage. Also, the configuration file xapp_metadata.json is provided in the example/core folder, on which more details can be found in the xApp Configuration In-depth section. The restapi.py python file is provided in the example/core folder that shows an example of how to add custom API endpoints to the xApp, more details can be found in the xApp REST API section.

The example xApp also has the xApp Helm Chart in the _example _folder which contains the necessary minimum to deploy the xApp Framework in Kubernetes and seamlessly integrate it with the dRAX RIC. Details on the xApp Helm Chart can be found in the xApp Helm Chart In-Depth section. The developer is of course free to explore the xApp Helm Chart and add features, such as adding more Docker images to be deployed along the xApp in advanced scenarios. We cover this in the How to add another microservice helm chart to the xApp section. The xapp_config.json and xapp_endpoints.json are configuration files created by the xApp Helm Chart and they will be stored in the _config _folder. More information about those configuration files and how to edit them can be found in the xApp Configuration In-depth section.

Finally, an example of how to develop an xApp using the AsyncIO framework can be found in the xapp_async_main.py file, also in the example/core folder.

The dRAX xApp Framework consists of the following components, which are shown below:

  1. The xApp Library - a Python library which interfaces with the dRAX RIC platform
  2. The xApp Database - Redis server for storage of configuration data
  3. The xApp Core - the core logic of the xApp written by the developer
  4. The xApp Helm Chart - a Helm Chart used to deploy the xApp and integrate it with dRAX RIC

dRAX xApps Framework

The xApp framework is built using a microservice oriented architecture. The xApp Database and the xApp Core are Docker images, which are deployed using a Helm Chart, and orchestrated via Kubernetes. The xApp Database is used to store the configuration of the xApp, and can be used by the developer to store other data. The xApp Core is a container that includes the xApp Library. The xApp Library is a Python library that is the main part of the xApp Framework. The xApp Library is created in a way that abstracts how the xApp interfaces with the dRAX RIC. Different hooks are pre-built, such as the connections to the dRAX Databuses (NATS, Kafka), the API endpoints for communication to the dRAX SMO layer (dRAX Dashboard), methods to send dRAX commands (handover, sub-band masking), etc. These methods abstract the lower level details (such as URLs, ports, generating protobuf command messages, etc.) so that the developer does not need to worry about them, and can focus on the functionality and algorithms they are implementing.