Skip to content
Snippets Groups Projects

Description

The purpose of this repository is to provide an updated version of the original OAI code base. The original code base can be found here: https://gitlab.eurecom.fr/oai/openairinterface5g. The updates to the OAI code base removed some latent bugs, added multi-UE scalability, and were tested with a standard bypass proxy between the UE(s) and eNB. This proxy is available at: https://github.com/EpiSci/oai-lte-multi-ue-proxy. With this package, various multi-UE scenarios can be tested without the overhead of PHY-layer features of underlying radios. This proxy was created to allow users to test and utilize EpiSci's updated version of the OAI code.

Where this all began:

OAI code was used to baseline this work. The initial framework for this development was started from the following commit: 362da7c9.

Included Fixes:

  • Ease of use of gprof and address sanitizer for debugging purposes
  • Updated json files to allow for GDB, real-time debugging capabilities
  • Updated logging features to minimally log only key connection milestones. This imroves scalability of multiple UEs.
  • Updated logging to include time stamp for timing analysis
  • Updated memory allocation procedures to correct size requirements
  • Added debugging features to handle signal terminations
  • nfapi.c pullarray8 fix invalid pointer math
  • Overlapping destination and source memory in memcpy, so updated to memmove to check for this bug
  • Advanced error checking mechanisms in critical pack and unpack functions
  • Created option for CPU assignment to UE to improve scalability
  • Added EPC integration to allow multiple individual UE entities to each have their USIM information parced by the executables
  • Updated random value seeds to minimize probability of error in generation of random values
  • Enables capability round robin scheduler if desired
  • Enables capability real time scheduler if desired
  • Added new standalone functions to the UE phy-layer (phy_stub_ue.c) to incorporate individual UE entities
  • Updated sending and packing functions in UE (lte_ue.c) to incorporate new standalone changes
  • Incorporated semaphores to control timing of incoming downlink packets
  • Implemented new queuing system to handle message exchange from UE to eNB and vice versa
  • Updated global value in nFAPI for size of subframe
  • Updated global value to increase scalability in system

Where to Start

RAN repository structure

The OpenAirInterface (OAI) software is composed of the following parts:

openairinterface5g
├── ci-scripts        : Meta-scripts used by the OSA CI process. Contains also configuration files used day-to-day by CI.
├── cmake_targets     : Build utilities to compile (simulation, emulation and real-time platforms), and generated build files.
├── common            : Some common OAI utilities, other tools can be found at openair2/UTILS.
├── doc               : Contains an up-to-date feature set list and starting tutorials.
├── executables       : Top-level executable source files.
├── LICENSE           : License file.
├── maketags          : Script to generate emacs tags.
├── nfapi             : Contains the NFAPI code. A local Readme file provides more details.
├── openair1          : 3GPP LTE Rel-10/12 PHY layer / 3GPP NR Rel-15 layer. A local Readme file provides more details.
│   ├── PHY
│   ├── SCHED
│   ├── SCHED_NBIOT
│   ├── SCHED_NR
│   ├── SCHED_NR_UE
│   ├── SCHED_UE
│   └── SIMULATION    : PHY RF simulation.
├── openair2          : 3GPP LTE Rel-10 RLC/MAC/PDCP/RRC/X2AP + LTE Rel-14 M2AP implementation. Also 3GPP NR Rel-15 RLC/MAC/PDCP/RRC/X2AP.
│   ├── COMMON
│   ├── DOCS
│   ├── ENB_APP
│   ├── F1AP
│   ├── GNB_APP
│   ├── LAYER2/RLC/   : with the following subdirectories: UM_v9.3.0, TM_v9.3.0, and AM_v9.3.0.
│   ├── LAYER2/PDCP/PDCP_v10.1.0
│   ├── M2AP
│   ├── MCE_APP
│   ├── NETWORK_DRIVER
│   ├── NR_PHY_INTERFACE
│   ├── NR_UE_PHY_INTERFACE
│   ├── PHY_INTERFACE
│   ├── RRC
│   ├── UTIL
│   └── X2AP
├── openair3          : 3GPP LTE Rel10 for S1AP, NAS GTPV1-U for both ENB and UE.
│   ├── COMMON
│   ├── DOCS
│   ├── GTPV1-U
│   ├── M3AP
│   ├── MME_APP
│   ├── NAS
│   ├── S1AP
│   ├── SCTP
│   ├── SECU
│   ├── TEST
│   ├── UDP
│   └── UTILS
└── targets           : Top-level wrappers for unitary simulation for PHY channels, system-level emulation (eNB-UE with and without S1), and realtime eNB and UE and RRH GW.