View on GitHub Star

Gradiant 5G Charts

A curated collection of 5G/6G related Helm Charts

Open5GS and srsLTE

5G end to end communication demo with Open5GS and srsRAN-5G with ZMQ.

This setup uses 2 helm charts generated by Gradiant: open5gs and srsran-5g-zmq. These charts are packaged and available at Gradiant’s DockerHub repo: https://hub.docker.com/u/gradiant

If you want to have the repo in local you can pull it:

helm pull oci://registry-1.docker.io/gradiant/open5gs --version 2.2.0
helm pull oci://registry-1.docker.io/gradiant/srsran-5g-zmq --version 1.0.0

Deployment NGC and registration of subscribers

First, deploy the NGC (open5gs) using the ngc-values.yaml file provided in order to overwrite some of the default values of the Open5GS chart:

helm install open5gs oci://registry-1.docker.io/gradiant/open5gs --version 2.2.0 --values https://gradiant.github.io/5g-charts/docs/open5gs-srsran-5g-zmq/ngc-values.yaml 

These new values will:

Once this deployment has been completed, the subscriber’s registration can be verified following 2 different approaches:

kubectl exec deployment/open5gs-mongodb -ti -- bash

mongo

use open5gs

db.subscribers.find().pretty()

Deployment RAN

Now, deploy the RAN (srsran-5g-zmq).

helm install srsran-5g-zmq oci://registry-1.docker.io/gradiant/srsran-5g-zmq --version 1.0.0

Thus, this deployment will not only launch the gNodeB, but it will also enable the launching of 1 UE using srsUE from the srsran-4g image.

It is important to notice that the default values of MCC, MNC, TAC, SST and SD set for the eNB match those configured in the open5gs chart. Also, the IMSI, KI and OPc given for the UE match the ones provided in the open5gs-dbctl command.

In addition, take into account that the value given for amf.hostname must match the name of the correponding AMF service deployed by the open5gs chart. Therefore, in case you use a differente release name for the open5gs chart, make sure that this value is set accordingly.

Verify deployment

Connection between SMF and UPF (C-Plane and U-Plane of NGC)

Check that the SMF gets associated with the UPF’s address:

kubectl logs deployment/open5gs-smf -f

Connection between AMF and gNodeB

Check that the AMF accepts and adds the gNodeB:

kubectl logs deployment/open5gs-amf -f

UE’s connectivity

Check the AMF logs to watch the UE get authorized and attached:

UE attached to network

Check that the UE got successfully attached to the network:

kubectl logs deployments/srsran-5g-zmq srsran-5g-zmq-ue

UE attached to network

Hence, check that the UE created a tunnel interface (tun_srsue):

kubectl exec deployments/srsran-5g-zmq -c srsran-5g-zmq-ue -ti -- bash

ip addr

UE's tunnel interface

Check that the UE has connectivity through this interface:

ping gradiant.org -I tun_srsue

UEs connectivity

Moreover, if using traceroute, check that the first hop is 10.45.0.1 (UPF’s side of the tunnel created):

traceroute google.com -i tun_srsue

UEs connectivity

Therefore, the UE’s traffic can be captured in the UPF. The installation of tcpdump in the corresponding pod is needed in order to complete this check:

kubectl exec deployment/open5gs-upf -ti -- bash

apt update && apt install tcpdump

tcpdump -i ogstun

Capturing traffic in the UPF

Clean

Clean the deployment for this demo by uninstalling the 2 helm charts previously installed:

helm uninstall srsran-5g-zmq

helm uninstall open5gs