Overview


O-RAN SC Software Development Kit

Enable xApp to:

  • Send messages
  • Access R-NIB and database
  • Talk to eNBs and gNBs
  • Define life-cycle
  • Report logs and status

Help developers:

  • Generate skeleton codes
  • Setup development and testing environments
  • Package, distribute and onboard their xApp

O-RAN SC SDK Components

  • Libraries, Interfaces and APIs
  • Tools
  • Documentation and Guides
  • Code Samples
  • Processes and Flows


Documentation, Code Repos, and Project Info

ORAN Libraries, Interfaces and APIs

RAN Inventory Management

R-NIB:

  • Inventory of RAN elements connected to the O-RAN SC
  • Service models (SMs) supported by each RAN element

Note: Load balanced connection management via replicated E2 Terms.

Other NIBs store UE-level metrics and aggregate metrics.


xApp O-RAN interfaces

E2:

  • Available E2SMs populated in R-NIB (in R5)
  • xApp constructs E2AP/SM message contents and sends/receives via RMR
  • RMR will route subscription requests to SubManager (for policy checking) and all messages to the correct E2T instance. (now)
  • REST-based subscription API (in R5)

A1:

  • Policy definition happens outside O-RAN SC
  • xApp specifies supported policy types in xApp descriptor
  • xApp receives policy instance creation/deletion via RMR
  • Frameworks: ”register handler for A1” (now)

O1-CM:

  • Initial and updated configuration via K8s config map
  • We believe this can be abstracted by the framework (xApp just registers a handler)
  • Still open discussion in O-RAN WGs on how LCM should be done.

O1-PM/FM:

  • xApp alarm api partially available in R4 (go only), stat api in R5.
  • (for now) AT&T xApps use VES, Nokia xApps use Prometheus.

Platform Libraries and APIs

Name

Purpose

LanguagesFrameworksAPIs
RMR

Policy driven messaging

C++, Python, Go

Yes

RIC Message Router – RMR

SDL

 shared data storage

C++, Go

Yes

O-RAN SC SDL C++ library User Guide

Log

Logging

C/C++, Python, Go

Yes


Alarm

Alarm Propagation

C++, Go

No

RIC Alarm System

Jaeger

Tracing

C++, Go

NoRIC tracing helper library

xAppFramework

Wrappers

C++, Python, Go

Yes

RIC xAPP C++ Framework


Tools

Name

Purpose

InputsProducesComments

xApp frameworks for C++, Python and Go

Code development

N/A

xApp skeleton codes

Can be extended to provides wrapping for most of the library APIs.

ASN.1 Compiler

Code development

ANS.1 module

C source code to serialize C structures

C++ wrappers for E2AP and E2SM are under development

xApp onboarder

Packaging and distribution

xApp descriptor

xApp helm charts

parameter override YAML

Defines the xApp descriptor format

Used by all xApp today

xApp builder docker images

Packaging and distribution

Docker file

xApp dev and distribution image

Preinstalled with all the libraries

E2 Simulator

Testing

E2 messages

Simulated responses

E2 messages playback

E2 based simulation

NRT-RIC one-click deployment

Testing

Recipe YAML

Fully functioning RIC platform

Each developer should have his/her own RIC dev environment

xApp health check tool

Life cycle management

Health check logics

xApp life cycle control loop

Currently K8S based

Can be extended to support A1 policy