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
- Start Free5gc
- Troubleshooting
- Integration with external eNB/UE simulators
- Vagrant Box Option
- NF dependencies and ports
- Reference
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
- Engine: to install docker on your favorite OS, you can follow instruction here: https://docs.docker.com/engine/install/
- Compose: you also need to install docker compose as detailed here: https://docs.docker.com/compose/install/
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 |