A 3GPP R16 compliant open source 5G core UPF (User Plane Function).

Overview

OpenUPF

A 3GPP R16 compliant open source UPF.

The OpenUPF is an open source project for 5th generation (5G) mobile core networks User Plane Function. The goal of this project is to implement the User Plane Function (UPF) defined in 3GPP Release 16 (R16) and beyond.

The software is mainly divided into three units: LBU (load balance unit), SMU (slow match unit) and FPU (fast pass unit).

OpenUPF uses DPDK to forward packets to acheive high througput.

OpenUPF Architecture

OpenUPF Architecture

Features list

Supported UP Function Features
Y (BUCP)Downlink Data Buffering in CP function is supported by the UP function.
Y (DDND)The buffering parameter 'Downlink Data Notification Delay' is supported by the UP function.
Y (DLBD)The buffering parameter 'DL Buffering Duration' is supported by the UP function.
Y (TRST)Traffic Steering is supported by the UP function.
Y (FTUP)F-TEID allocation / release in the UP function is supported by the UP function.
Y (PFDM)The PFD Management procedure is supported by the UP function.
Y (HEEU)Header Enrichment of Uplink traffic is supported by the UP function.
Y (TREU)Traffic Redirection Enforcement in the UP function is supported by the UP function.
Y (EMPU)Sending of End Marker packets supported by the UP function.
Y (PDIU)Support of PDI optimised signalling in UP function.
Y (UDBC)Support of UL/DL Buffering Control.
Y (QUOAC)The UP function supports being provisioned with the Quota Action to apply when reaching quotas.
N (TRACE)The UP function supports Trace.
Y (FRRT)The UP function supports Framed Routing.
Y (PFDE)The UP function supports a PFD Contents including a property with multiple values.
Y (EPFAR)The UP function supports the Enhanced PFCP Association Release feature.
Y (DPDRA)The UP function supports Deferred PDR Activation or Deactivation.
Y (ADPDP)The UP function supports the Activation and Deactivation of Pre-defined PDRs.
Y (UEIP)The UPF supports allocating UE IP addresses or prefixes.
Y (SSET)UPF support of PFCP sessions successively controlled by different SMFs of a same SMF Set.
N (MNOP)UPF supports measurement of number of packets which is instructed with the flag 'Measurement of Number of Packets' in a URR.
N (MTE)UPF supports multiple instances of Traffic Endpoint IDs in a PDI.
N (BUNDL)PFCP messages bunding is supported by the UP function.
N (GCOM)UPF support of 5G VN Group Communication.
N (MPAS)UPF support for multiple PFCP associations to the SMFs in an SMF set.
N (RTTL)The UP function supports redundant transmission at transport layer.
N (VTIME)UPF support of quota validity time feature.
N (NORP)UP function support of Number of Reports.
N (IPTV)UPF support of IPTV service
N (IP6PL)UPF supports UE IPv6 address(es) allocation with IPv6 prefix length other than default /64 (including allocating /128 individual IPv6 addresses).
N (TSCU)Time Sensitive Communication is supported by the UPF.
N (MPTCP)UPF support of MPTCP Proxy functionality.
N (ATSSS-LL)UPF support of ATSSS-LLL steering functionality.
N (QFQM)UPF support of per QoS flow per UE QoS monitoring.
N (GPQM)UPF support of per GTP-U Path QoS monitoring.
N (MT-EDT)SGW-U support of reporting the size of DL Data Packets.
N (CIOT)UPF support of CIoT feature, e.g. small data packet rate enforcement.
N (ETHAR)UPF support of Ethernet PDU Session Anchor Relocation.

Summary

Getting Started

Refer to Quick Start

Built With

License

This project is licensed under the Apache-2.0 Creative Commons License - see the LICENSE file for details

Contribution

  • Open pull request with improvements
  • Discuss ideas in issues
  • Spread the word
  • Reach out with any feedback

Supported By

Copyright © 2021 Shenzhen Panath Technology Co., Ltd.

Contact us

Issues
  • Do OpenUPF support ULCL?

    Do OpenUPF support ULCL?

    Hello,

    I’m planning to use OpenUPF by docker. Let me ask some questions related to ULCL.

    Do OpenUPF support ULCL? If so, please let me know: ・How can I configure it? ・How many UPF do I have to deploy for ULCL? (for example, we need to prepare three UPFs for ULCL.) ・Can I deploy multiple OpenUPF on the same host machine?

    I would appreciate it if you could tell me. Thank you for your help.

    opened by K-Nanako 2
  • Docker Build Documentation

    Docker Build Documentation

    Hi,

    I am currently trying to build the docker image but I am getting the following errors:

    $ sudo docker cp install/bin/ ${OPENUPF_IMAGE_NAME}:/opt/upf/bin
    lstat /home/ec2-user/openupf/install/bin: no such file or directory
    $ sudo docker cp install/lib/ ${OPENUPF_IMAGE_NAME}:/opt/upf/lib
    lstat /home/ec2-user/openupf/install/lib: no such file or directory
    
    $ ls
    build  CMakeLists.txt  config  core  doc  images  install  libs  LICENSE  README.md
    .
    .
    $ ls install/
    script
    

    There is no bin or lib in the install folder.

    opened by infinitydon 1
  • Build dpdk failed!

    Build dpdk failed!

    git clone '/home/itcast/openupf/build/script/../../libs/dpdk'... fatal: unable to access 'https://github.com.cnpmjs.org/DPDK/dpdk.git/': Failed connect to github.com.cnpmjs.org:443; Connection refused git clone '/home/itcast/openupf/build/script/../../libs/dpdk'... fatal: unable to access 'https://github.com.cnpmjs.org/DPDK/dpdk.git/': Could not resolve host: github.com.cnpmjs.org; Unknown error git clone '/home/itcast/openupf/build/script/../../libs/dpdk'... fatal: unable to access 'https://github.com.cnpmjs.org/DPDK/dpdk.git/': Could not resolve host: github.com.cnpmjs.org; Unknown error

    opened by 1614236604 2
  • AVX/AVX2 And Number Of Processor Cores

    AVX/AVX2 And Number Of Processor Cores

    Hi,

    I will like to ask if it is possible to disable AVX/AVX2 support (or any other dependent processor feature) while building the container image?

    Currently I have a server with SRIOV capable network cards but when I try to create the UPF-C, the k8s pod simply fails without any logs, so I am assuming that this is because the processor I am using does not support the AVX/AVX2 extensions (this is my guess because k8s did not show any logs at all).

    I decided to start the POD with bash alone and then start the process manually, below is the error I got:

    [[email protected] upf]# echo $UPF_RUNCONFIG
    /opt/upf/config/smu/smu_docker.ini
    [[email protected] upf]#
    [[email protected] upf]#
    [[email protected] upf]# /opt/upf/bin/smu
    Illegal instruction (core dumped)
    

    Also will it possible to deploy the UPF with just 8 cores? My hardware is Dell VEP 1445 and it only has 8 cores.

    opened by infinitydon 1
  • Configuring openUPF with Open5GS/Free5GC on Ubuntu OS

    Configuring openUPF with Open5GS/Free5GC on Ubuntu OS

    Hi, Have you ever tested openUPF with the open source cores Open5GS and Free5GC? Moreover, is it possible to set it up on Ubuntu?

    Best regards, Sabbir

    opened by Sabbir89 3
Owner
openupf
5GC Open UPF
openupf
A simple single header 64 and 32 bit hash function using only add, sub, ror, and xor.

K-HASH A simple single header 64 bit hash function using only add, sub, ror, and xor. This a just general-purpose hash function for like making hash m

null 68 Jan 12, 2022
Very Fast Non-Cryptographic Hash Function

KOMIHASH - Very Fast Hash Function Introduction The komihash() function available in the komihash.h file implements a very fast 64-bit hash function,

Aleksey Vaneev 70 Jun 13, 2022
A tool to collect the exceptions that can reach a C++ function

Exceptions Reporter This tool tries to answer this r/cpp question for a tool to find out, for a given function in my code base, which exceptions it ma

Niels Lohmann 18 Nov 8, 2021
C header to execute user-space functions in ring 0

r0e - Execute User Code in Ring0 This small header allows executing functions in your application in ring 0, i.e., with kernel privileges. Use cases i

Michael Schwarz 9 May 13, 2022
An open source library for C

Eric O Meehan C Library Introduction Eric O Meehan's C Library is an open source collection of tools for the C programming language. The project is in

Eric O Meehan 90 Jun 12, 2022
Open-source graph editor, with built-it step-by-step Dijkstra's Algorithm.

Visual Dijkstra - Simple visual graph editor, with built-in step-by-step Dijkstra's algorithm Visual Dijkstra is a free and open-source tool, designed

Samuele Girgenti 27 May 23, 2022
This project Orchid-Fst implements a fast text string dictionary search data structure: Finite state transducer (short for FST) in c++ language.This FST C++ open source project has much significant advantages.

Orchid-Fst 1. Project Overview This project Orchid-Fst implements a fast text string dictionary search data structure: Finite state transducer , which

Bin Ding 8 Jan 5, 2022
The open source edition of Raising the Bar: Redux's Division 1.2 release.

//===================================================================================================================================================

null 22 Apr 12, 2022
An open source initiative for implementing and testing algorithms in various programming languages.

Algorithms An open source initiative for implementing and testing algorithms in various programming languages. Contributing The idea here is to learn

Manipal's open source academic portal. 1 Nov 28, 2021
An open source UI re-implementation based on GTA:V, built for GTA: San Andreas.

V Hud: A work-in-progress user interface overhaul, for Grand Theft Auto: San Andreas, based on Grand Theft Auto: V. Project has been made in order to

_AG 77 Jun 13, 2022
Source code of the paper "Lord of the Ring(s): Side Channel Attacks on the CPU On-Chip Ring Interconnect Are Practical"

Overview This repository contains the source code to reproduce the experiments of the paper: Lord of the Ring(s): Side Channel Attacks on the CPU On-C

null 125 May 3, 2022
FleakOS Kernel Source Tree

FleakOS FleakOS Kernel Source Tree Dependencies sudo apt-get install -y xorriso sudo apt-get install -y gcc-multilib sudo apt-get install -y nasm sudo

FleakOS 29 Dec 10, 2021
Redacted source code for exercises proposed in the Data Structures and Algorithms laboratory.

fsega_ie2_dsa Redacted source code for exercises proposed in the Data Structures and Algorithms laboratory. Usage The src/ directory contains a direct

Cezar Mathe 1 Dec 5, 2021
Nodable is node-able. The goal of Nodable is to provide an original hybrid source code editor, using both textual and nodal paradigm.

Nodable is node-able ! Introduction: The goal of Nodable is to provide an original hybrid source code editor, using both textual and nodal paradigm. I

Bérenger Dalle-Cort 142 May 26, 2022
osmo-upf - Osmocom User Plane Function Implementation

osmo-upf - Osmocom User Plane Function Implementation

Official Osmocom mirror 2 Jan 22, 2022
Simu5G - 5G NR and LTE/LTE-A user-plane simulation model for OMNeT++ & INET

5G NR and LTE/LTE-A user-plane simulation model, compatible with the INET Framework

Università di Pisa 73 Jun 25, 2022
Cloud Native Data Plane (CNDP) is a collection of user space libraries to accelerate packet processing for cloud applications.

CNDP - Cloud Native Data Plane Overview Cloud Native Data Plane (CNDP) is a collection of userspace libraries for accelerating packet processing for c

Cloud Native Data Plane 19 Jun 28, 2022
The PULP Ara is a 64-bit Vector Unit, compatible with the RISC-V Vector Extension Version 0.9, working as a coprocessor to CORE-V's CVA6 core

Ara Ara is a vector unit working as a coprocessor for the CVA6 core. It supports the RISC-V Vector Extension, version 0.9. Dependencies Check DEPENDEN

null 137 Jun 21, 2022
An EDA toolchain for integrated core-memory interval thermal simulations of 2D, 2.5, and 3D multi-/many-core processors

CoMeT: An Integrated Interval Thermal Simulation Toolchain for 2D, 2.5D, and 3D Processor-Memory Systems With the growing power density in both cores

MARG 5 Jun 1, 2022
Arduino core for GD32 devices, community developed, based on original GigaDevice's core

GD32 Arduino Core (New) This is a Arduino core is based off of the original GigaDevice core that was provided by the company in early June 2021 (see h

null 34 Jul 1, 2022
Data Plane Development Kit

DPDK is a set of libraries and drivers for fast packet processing. It supports many processor architectures and both FreeBSD and Linux. The DPDK uses

DPDK 1.9k Jun 28, 2022
A RGB-D SLAM system for structural scenes, which makes use of point-line-plane features and the Manhattan World assumption.

This repo proposes a RGB-D SLAM system specifically designed for structured environments and aimed at improved tracking and mapping accuracy by relying on geometric features that are extracted from the surrounding.

Yanyan Li 223 Jun 21, 2022
RP-VIO: Robust Plane-based Visual-Inertial Odometry for Dynamic Environments (Code & Dataset)

RP-VIO: Robust Plane-based Visual-Inertial Odometry for Dynamic Environments RP-VIO is a monocular visual-inertial odometry (VIO) system that uses onl

Karnik Ram 150 Jun 27, 2022
Recognize stairs with lidar. Project the laser points to X-Z plane and use least squares for linear fitting.

stairs_recogniton Recognize stairs with lidar. Project the laser points to X-Z plane and use least squares for linear fitting. Dependencies PCL 1.8 Ei

Junyi Ma 8 Jan 27, 2022
A data plane framework that supports any layer-7 protocols.

中文 meta-protocol-proxy Why MetaProtocol is needed? Almost all open source and commercial Service Meshes currently support only two Layer-7 protocols -

Aeraki 48 Jun 25, 2022
This is a fast module to probing an area in a 2d plane for physic objects

Godot AreaProber 2D Checking for neighbour colliders made easy AreaProber allows you to probe for colliders anywhere in your 2D game's world, no need

Strauji 8 Feb 14, 2022
LIDAR(Livox Horizon) point cloud preprocessing, including point cloud filtering and point cloud feature extraction (edge points and plane points)

LIDAR(Livox Horizon) point cloud preprocessing, including point cloud filtering and point cloud feature extraction (edge points and plane points)

hongyu wang 10 Apr 12, 2022