Connected AI testbed allows building flexible and realistic scenarios where different network topologies for 4G/5G and quickly deploy them.
If you find this project useful in your research, please consider citing:
@ARTICLE{9290141,
author={C. V. {Nahum} and L. {De Nóvoa Martins Pinto} and V. B. {Tavares} and P. {Batista} and S. {Lins} and N. {Linder} and A. {Klautau}},
journal={IEEE Access},
title={Testbed for 5G Connected Artificial Intelligence on Virtualized Networks},
year={2020},
volume={8},
number={},
pages={223202-223213},
doi={10.1109/ACCESS.2020.3043876}
}
This document is a quickstart and a getting started guide in one, intended for your first run-through of Connected AI testbed.
-
Free5GC: The free5GC is an open-source project for 5th generation (5G) mobile core networks. The source code of free5GC stage 1 can be downloaded from here.
-
OAI Radio Access Network (OAI-RAN): This project implements 4G LTE and 5G Radio Access Network. Both ENodeB and User Equipment (UE) are implemented.
-
Already today OAI offers several functional splits, for example between the Radio Cloud Center (RCC) and a Remote Radio Unit (RRU), know as C-RAN mode of the OAI eNB.
-
Also, OAI can be run in both monolithic ENodeB mode and nFAPI mode (which PNF runs PHY and VNF runs MAC,etc).
-
-
FlexRAN: A Flexible and programmable platform for Software-Defined Radio Access Networks.
Note: Please do not try if you don't have Free5GC and OAI-RAN Minimum Requirements as Free5GC and OAI needs lot of packages and its very sensitive to version numbers, linux kernel, etc.
OAI-RAN Kernel Requirements for RAN
Install Docker, Docker-Compose, and Kubernetes in all computers of your cluster.
We use the specific hardware and operating-system constraints below for our real-time operation:
-
Three computers with a Core i5-8400 CPU@2666~MHz processor with an operational system Ubuntu 16.04 LTS and a low latency kernel.
-
One USRP B210 http://www.ettus.com/product/details/UB210-KIT
In our setup, we associate each of the three machines with functions: cloud, edge and antenna
Step 1: create a Kubernetes Cluster.
Step 2: install Helm in your Master Node.
Step 3: Install a Container Network Interface (CNI):
kubectl apply -f https://docs.projectcalico.org/v3.11/manifests/calico.yaml
Step 4: Label the nodes as antenna, edge or cloud:
kubectl label nodes <nodename> environment=<node-label(for example: antenna, edge or cloud)>
Step 5: Clone this Git repository (and submodules):
git clone --recurse-submodules https://github.com/lasseufpa/connected-ai-testbed.git
Step 6: Build the OAI-RAN and Free5GC Docker images in all kubernetes cluster nodes
In README of /oai-ran-docker and /free5gc-docker-kube repos you will find a detailed explanation of how to perform the builds
The default configuration is the Core, Radio Cloud Center (RCC) and Remote Radio Unit (RRU) on individual nodes. To change, modify core.yaml
, ran.yaml
and/or flexran.yaml
according to the desired configuration.
Our testbed has two possibilities for the RAN: using real equipment and using an emulated version.
The version using equipment is "rcc-rru" and the emulated version is "vnf-pnf".
The option key is defined in the RAN configuration file
Run run.py
to create CORE, RAN, and/or FLEXRAN.
-c
: This option results in reading the indicate <.yaml> file and creating a Core that contain these file configuration.
-r
: This option results in reading the indicate <.yaml> file and creating a RAN that contain these file configuration.
-f
: This option results in reading the indicate <.yaml> file and creating a FlexRAN that contain these file configuration.
Usage example:
python3.6 run.py -c core.yaml -r ran.yaml -f flexran.yaml
python3.6 run.py -r ran.yaml
Multiple scenarios are created by associating IDs of modified CORE, RAN, and FLEXRAN yaml files.
To acess the Core User management visit:
http://<CORE NODE IP>: <WEBAPP service port>/
The default username and password are “admin” and “1423”.
For a user to enter the network it is necessary that the IMSI, security context (K, OPc, AMF), and APN of the user SIMCARD are compatible with those inserted in the database