Open Air Interface 5G Core On Kubernetes

Christopher Adigun
Level Up Coding
Published in
3 min readMay 8, 2021

--

Gradually we are seeing several open source solutions for 5G core. I was glad when I read about OAI releasing a cloud native open source 5G core.

What excites me about the OAI 5g core is that it comes ready with some containerization features:

  • Dockerfiles for building container images: when you take a look at the Dockerfiles you will agree with me that they did a good job!
  • Liveness and readiness scripts: This helps to ensure that only healthy PODs are used for traffic processing
  • Sample docker compose files: You can make use of the docker compose files to quickly bring up a 5G core, it also contains an additional container for NAT offload testing!

I adapted the docker compose to deploy the solution on a Kubernetes cluster. One thing you have to take note of is that there is a strict order of deploying the PODs:

Mysql DB → NRF → AMF →SMF →UPF

Because of this I decided to dive a bit into the world of operators, I decided to give Kudo a try. Kudo has a feature that allows for ordered creation of Kubernetes resources, below is the plan I used:

Status of how the components are deployed:

As you can see that the components are deployed in the right order, this ensures a clean startup:

N.B — There are other ways of doing this, I just decided to go the route of using Kudo for learning purposes, this might also be possible by using helm hooks.

The OAI developer helped to resolve some bugs when it comes to using ueransim to test this. I will like to appreciate their support in this regard, so yes you can use ueransim with OAI 5G core. The only issue I faced was that ping test to the UPF interface (called pdn interface according OAI logic) from the UE does not work but if you ping remote IPs via the UPF (with SNAT enabled) this works.

Some sample log output:

AMF Logs
SMF Logs
UERANSIM UE Logs

The OAI 5G core is still in development with many features planned for the upcoming months but so far the efforts has been great.

You can find more information about the required files at:

N.B — For this blog post, I had to use some specific branches due to the issues I faced, this was suggested by the OAI development team:

AMF — quectel branch
SMF — develop branch

I believe as time goes the develop branch should be used up until it is released finally.

P.S — If you want to learn about baremetal/on-prem kubernetes networking in depth using technologies like Multus, SR-IOV, Multiple network interfaces in pods etc then you can check my course on Udemy (you can use the coupon code on the course page to get a discount):

https://www.udemy.com/course/kubernetes-baremetal-networking-using-gns3/?referralCode=99D5F4AAFCF769E8DEB6

--

--