Free5GC Compose K8s

This repository is a fork of the free5gc-compose repo. It extends the docker-compose deployment capability by also providing the instructions and manifests to run the containers in a Kubernetes cluster.

Original Compose Documentation

This repository is a docker compose version of free5GC for stage 3. It's inspire by free5gc-docker-compose and also reference to docker-free5GC.

You can setup your own config in config folder and docker-compose.yaml

Prerequisites

GTP5G kernel module

Due to the UPF issue, the host must be using kernel 5.0.0-23-generic. And it should contain gtp5g kernel module.

On you host OS:

git clone https://github.com/PrinzOwO/gtp5g.git
sudo apt install make gcc -y
cd gtp5g
make
sudo make install

Docker

Start Free5gc

Because we need to create tunnel interface, we need to use privileged container with root permission.

$ git clone https://github.com/free5gc/free5gc-compose.git
$ cd free5gc-compose
$ make base
$ docker-compose build
$ sudo docker-compose up # Recommend use with tmux to run in foreground mode
$ sudo docker-compose up -d # Run in background mode if needed

Troubleshooting

Sometimes, you need to drop data from DB:

$ docker exec -it mongodb mongo
> use free5gc
> db.subscribers.drop()
> exit # (Or Ctrl-D)

You can see logs for each service using docker logs command. For example, to access the logs of the SMF you can use:

docker logs smf

Please refer to the wiki for more troubleshooting information.

Integration with external eNB/UE simulators

The integration with the UERANSIM eNB/UE simulator is documented here.

You can also refer to this issue to find out how you can configure the UPF to forward traffic between the UERANSIM to the DN (eg. internet) in a docker environment.

Vagrant Box Option

You can setup a working environment without the fuss of updating your kernel version just by using a vagrant box. You can follow the instructions provided here: https://github.com/abousselmi/vagrant-free5gc

NF dependencies and ports

NF Exposed Ports Dependencies Dependencies URI
amf 8000 nrf nrfUri: https://nrf:8000
ausf 8000 nrf nrfUri: https://nrf:8000
nrf 8000 db MongoDBUrl: mongodb://db:27017
nssf 8000 nrf nrfUri: https://nrf:8000/,
nrfId: https://nrf:8000/nnrf-nfm/v1/nf-instances
pcf 8000 nrf nrfUri: https://nrf:8000
smf 8000 nrf, upf nrfUri: https://nrf:8000,
node_id: upf1, node_id: upf2, node_id: upf3
udm 8000 nrf nrfUri: https://nrf:8000
udr 8000 nrf, db nrfUri: https://nrf:8000,
url: mongodb://db:27017
n3iwf N/A amf, smf, upf
upf1 N/A pfcp, gtpu, apn pfcp: upf1, gtpu: upf1, apn: internet
upf2 N/A pfcp, gtpu, apn pfcp: upf2, gtpu: upf2, apn: internet
upfb (ulcl) N/A pfcp, gtpu, apn pfcp: upfb, gtpu: upfb, apn: intranet
webui 5000 db MongoDBUrl: mongodb://db:27017

Reference