Skip to content

Real time controller for network functions instrumented with the jbpf framework

License

Notifications You must be signed in to change notification settings

microsoft/jrt-controller

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Introduction

Build Status

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.

About

Real time controller for network functions instrumented with the jbpf framework

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published