Skip to content

Latest commit

 

History

History
87 lines (54 loc) · 4.88 KB

File metadata and controls

87 lines (54 loc) · 4.88 KB

Introduction

Build Status Docker Build and Test

jrt-controller is a real-time controller for network functions instrumented with the jbpf framework. Like jbpf, the controller is part of Project Janus and provides functionalities envisaged by the concept of real-time RIC in O-RAN.

Architectural overview

The overall jrt-controller architecture is shown in the figure below:

Architectural overview

A typical deployment consists of the following components:

  • Network function: An external, user-provided executable (e.g. virtualized RAN or any other network function) which we want to monitor and control and which has been instrumented using the jbpf framework.
  • jbpf library: An external library that provides the functionality of deploying and executing codeletes, sending output data (output API) and receiving control data (input API).
  • jrt-controller: The main component of this repository that runs user-provided applications (dApps in the O-RAN terminology), which consume telemetry data from the network functions and invoke control actions, all with latencies of a few microseconds.
  • jrt-ctl: This is a collection of tools to load/unload user applications and codelets (codelet life-cycle management and secure codelet store). It can be optionally integrated with other management frameworks (e.g. nRT-RIC or SMO in O-RAN terminology).

The jrt-controller can connect to any network function already instrumented with the jbpf framework without any changes.

For a high-level overview of the framework functionality, please read this.

Getting started

Instructions to build the controller

The first step is to initialize all git submodules:

./init_submodules.sh

Building on bare metal

A list of all the dependencies required for bare metal builds are listed in the Dockerfiles located here for several common Linux distributions.

To build you can use the following commands:

# source environment variables
source ./setup_jrtc_env.sh

mkdir build
cd build
cmake ../ && make

Doxygen documentation

You can generate the documentation using Doxygen. To do so, run the following:

make doc

The documentation will be generated in the $JRTC_OUT_DIR/docs/html directory, where $JRTC_OUT_DIR is automatically set when sourcing setup_jrtc_env.sh.

Further documentation

For more details about the capabilities of jrt-controller you can explore the documentation:

For more information, you can also check the following resources:

  • jbpf technical paper: A technical research paper that describes the motivation behind the framework. The paper is focused on 5G RAN instrumentation, but most concepts extend to arbitrary applications.
  • Distributed AI for RAN technical paper: A research paper that describes a blueprint for an AI-native RAN platform, and which could be realized using the jrt-controller and jbpf.

Related projects

  • jbpf: the userspace eBPF instrumentation and control framework used to instrument network functions that communicate with jrt-controller.

  • Sample integration with srsRAN, which consists of two parts:

  • jbpf-protobuf: The jbpf extension, used in jrt-controller, that demonstrates how to utilize protobuf serialization for sending and receiving data from codelets loaded in jbpf applications.

License

The jbpf framework is licensed under the MIT license.