This is a small project for the Cellular Networks (CELL) module at Sorbonne Université. The project focuses on 5G-UPF Scaling using the following technologies:
- OAI-5G: OpenAirInterface for 5G core and RAN.
- Helm: A Kubernetes package manager for deploying and managing configurations.
- Kubernetes: Orchestrating containerized services.
- UERANSIM: Simulating User Equipment (UE) and RAN for testing 5G networks.
The objective of this project is to demonstrate dynamic scaling of the User Plane Function (UPF) within a 5G Core Network with a bash script.
- Deployment of 5G Core components with OAI-5G.
- Simulation of UEs and RAN using UERANSIM.
- Dynamic scaling of UPFs based on traffic demands.
- Integration with Helm charts for configuration management.
- Orchestration and management using Kubernetes.
- Clone this repository:
git clone /~https://github.com/v3locide/5g-upf-scaling.git cd 5g-upf-scaling
- Initialize the project:
cd OAI-5G bash init.sh
- In the same directory, install Helm:
bash get_helm.sh
- Deploy the 5G network:
cd OAI-5G/oai-5g-core # For every 5G component: helm install {network_function_name} {path_of_network_function} # Deploy UERANSIM: cd .. kubectl apply -f oai-ueransim.yaml
- Alternatively, you can run the Deploy.sh script at the root of this project.
- You might need to redeploy your 5G network (manually) if UERANSIM doesn't get an IP from the 5G network.
In order to scale the UPF instances in your 5G network based on incoming traffic:
- Open a new terminal at the root of this project.
- Run the Scaler.sh script and wait for it to start an iperf server:
bash Scaler.sh
- Open another terminal in the same directory, and access the UERANSIM pod:
kubectl exec -it {pod_name} -- bash
- Inside the UERANSIM pod, start an iperf client:
iperf -i 1 -B {UERANSIM_uesimtun0_addr} -c {UPF_tun0_addr} -t 30 -b 10M
This project was tested (and passed all the throughput tests) in an ideal environment with minimal server overload. If you're deploying this project in an overloaded server you might face the following issues:
- UERANSIM failing to get an IP from the 5G network.
- Failed pings from UERANSIMs and their respective UPFs.
- Connection timeouts with iperf.
- I made a demo video so you can see how the UPF scaling works: https://youtu.be/vMBYiu13dcg