UPF in L25GC+ is developed on top of OpenNetVM, a high performance NFV platform based on DPDK and Docker containers.
The next branch tracks experimental builds (active development) whereas the opensource branch tracks verified stable releases.
L25GC+ disaggregates the UPF into two complementary NFs: UPF-C and UPF-U. The UPF-C acts as the N4 interface endpoint that communicates with the SMF to receive and update PDR rules and user session contexts. UPF-C and UPF-U share the PDRs and user session state, residing in OpenNetVM's shared memory. As a result, the N4 communication overhead is minimized and UPF-U can access PDRs at minimal cost. This disaggregation allows for rapid updates to PDRs and session state without impacting the user plane performance.
We've provided two scripts to install required dependencies, and configure your machine to run OpenNetVM. Required dependencies are installed by scripts/install.sh, and configuration is done by scripts/setup_runtime.sh.
From the onvm-upf folder, run the following two commands:
./scripts/install.sh
./scripts/setup_runtime.sh
If you are using
Ubuntu 20.04, you will need to perform additional setup.
We use the Meson build system to compile all components, including dpdk. From the onvm-upf parent folder run the following to setup build:
source ~/.bashrc
./scripts/build.sh
This will take care of the Meson build setup, compilation, and installation of onvm shared libriaries.
Afterwards you may need to run the following comand to update the linker.
ldconfig
Bind NIC to igb_uio (replace <pci_id> | <eth_if_id> with the actual PCI address | eth interface ID)
sudo python <dpdk>/usertools/dpdk-devbind.py --bind=igb_uio <pci_id> | <eth_if_id>You can use our provided startup script to launch onvm_mgr. This scripts assumes the onvm-upf folder is your working directory.
./scripts/start.sh -k PORTMASK -n NF-COREMASK [-m MANAGER CORES] [-r NUM-SERVICES] [-d DEFAULT-SERVICE] [-s STATS-OUTPUT] [-p WEB-PORT-NUMBER] [-z STATS-SLEEP-TIME]
We provide step-by-step instructions for manual installation.
| OS Distribution | Status | Notes |
|---|---|---|
| Ubuntu 24.04 | All dependencies available via apt or pip |
|
| Ubuntu 22.04 | ✅ Works out of the box | All dependencies available via apt or pip |
| Ubuntu 20.04 | ✅ Works out of the box | All dependencies available via apt or pip |
| Ubuntu 18.04 | Likely requires upgrading GCC, Python, and installing recent Meson manually |
| Component | Version | Installation Notes |
|---|---|---|
| DPDK | 24.07.0 |
Built from source using Meson |
| Pktgen-DPDK | 24.07.0 |
Compatible with the same DPDK version |
| dpdk-kmods | commit@9b182be |
Required only for igb_uio (optional) |
| Meson | >=0.58.0 |
Recommended: 0.61.2+; use pip3 install meson |
| Ninja | >=1.10.0 |
Usually installed via apt |