All Projects → omec-project → upf-epc

omec-project / upf-epc

Licence: other
4G/5G Mobile Core User Plane

Programming Languages

go
31211 projects - #10 most used programming language
python
139335 projects - #7 most used programming language
C++
36643 projects - #6 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to upf-epc

go-pfcp
PFCP(Packet Forwarding Control Protocol) implementation in Golang.
Stars: ✭ 90 (-7.22%)
Mutual labels:  upf, 5g, pfcp
bts-ce
Boda Telecom Suite Community Edition (BTS-CE) - An open source vendor and technology agnostic telecommunication network management platform
Stars: ✭ 28 (-71.13%)
Mutual labels:  4g, 5g
bts-ce-lite
BTS-CE-Lite (Boda-Lite) is a cross platform vendor and technology agnostic telecommunication network management desktop application
Stars: ✭ 24 (-75.26%)
Mutual labels:  4g, 5g
hcloud-pricing-exporter
A prometheus exporter for the current pricing and costs of your HCloud account
Stars: ✭ 19 (-80.41%)
Mutual labels:  prometheus
observatorium
This repository contains the deployment configurations for the Observatorium instances
Stars: ✭ 129 (+32.99%)
Mutual labels:  prometheus
chomsky-normal-form
Convert a Context Free Grammar (CFG) to Chomsky Normal Form (CNF)
Stars: ✭ 17 (-82.47%)
Mutual labels:  cnf
magento2-prometheus-exporter
Simple Magento 2 Prometheus Exporter.
Stars: ✭ 40 (-58.76%)
Mutual labels:  prometheus
fauton
An ecosystem of packages to work with automaton and parsers (dfa/nfa/e-nfa/regex/cfg/pda)
Stars: ✭ 36 (-62.89%)
Mutual labels:  cnf
sip3-captain-ce
SIP3 Captain (Community Edition)
Stars: ✭ 73 (-24.74%)
Mutual labels:  dpdk
dpdk
A comprehensive rust binding for DPDK allowing high speed userspace networking across 256 cores and 32 NICs
Stars: ✭ 30 (-69.07%)
Mutual labels:  dpdk
hetzner exporter
Prometheus exporter for Hetzner
Stars: ✭ 16 (-83.51%)
Mutual labels:  prometheus
piccolo
Netty4长连接网关
Stars: ✭ 19 (-80.41%)
Mutual labels:  prometheus
chaos-exporter
Prometheus Exporter for Litmus Chaos Metrics
Stars: ✭ 25 (-74.23%)
Mutual labels:  prometheus
ginprom
Gin Prometheus metrics exporter inspired by https://github.com/zsais/go-gin-prometheus
Stars: ✭ 97 (+0%)
Mutual labels:  prometheus
Lecture2Gether
A tool for synchronized online streaming
Stars: ✭ 52 (-46.39%)
Mutual labels:  prometheus
Joint-User-Association-and-In-band-Backhaul-Scheduling-and-in-5G-mmWave-Networks
Matlab Simulation for T. K. Vu, M. Bennis, S. Samarakoon, M. Debbah and M. Latva-aho, "Joint In-Band Backhauling and Interference Mitigation in 5G Heterogeneous Networks," European Wireless 2016; 22th European Wireless Conference, Oulu, Finland, 2016, pp. 1-6. URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7499273&isnumber=7499250
Stars: ✭ 36 (-62.89%)
Mutual labels:  5g
nginx-prometheus
Turn Nginx logs into Prometheus metrics
Stars: ✭ 29 (-70.1%)
Mutual labels:  prometheus
skalogs-bundle
Open Source data and event driven real time Monitoring and Analytics Platform
Stars: ✭ 16 (-83.51%)
Mutual labels:  prometheus
freeradius exporter
FreeRADIUS Prometheus Exporter
Stars: ✭ 25 (-74.23%)
Mutual labels:  prometheus
mattermost-plugin-alertmanager
AlertManager Bot for Mattermost
Stars: ✭ 48 (-50.52%)
Mutual labels:  prometheus

upf

Go Report Card

Build Status

This project implements a 4G/5G User Plane Function (UPF) compliant with 3GPP TS 23.501. It follows the 3GPP Control and User Plane Separation (CUPS) architecture, making use of the PFCP protocol for the communication between SMF (5G) or SPGW-C (4G) and UPF. This UPF implementation is actively used as part of the Aether platform in conjunction with the SD-Core mobile core control plane.

Overview

UPF overview

The UPF implementation consists of two layers:

  • PFCP Agent: (pfcpiface) a Go-based implementation of the PFCP northbound API used to interact with the mobile core control plane.
  • Datapath: responsible for the actual data plane packet processing.

The PFCP Agent implements datapath plugins that translate PFCP messages to datapath-specific configurations. We currently support two datapath implementations:

  • BESS: a software-based datapath built on top of the Berkeley Extensible Software Switch (BESS) framework. Please see the ONFConnect 2019 talk for more details. You can also see demo videos here and here.
  • UP4: an implementation leveraging ONOS and P4-programmable switches to realize a hardware-based datapath.

The combination of PFCP Agent and UP4 is usually referred to as P4-UPF. While BESS-UPF denotes the combination of PFCP Agent and the BESS datapath.

PFCP Agent internally abstracts different datapaths using a common API, while the different plug-ins can use spcific southbound protocols to communicate with the different datapath instances. Support for new datapaths can be provided by implementing new plugins.

Feature List

PFCP Agent

  • PFCP Association Setup/Release and Heartbeats
  • Session Establishment/Modification with support for PFCP entities such as Packet Detection Rules (PDRs), Forwarding Action Rules (FARs), QoS Enforcement Rules (QERs).
  • UPF-initiated PFCP association
  • UPF-based UE IP address assignment
  • Application filtering using SDF filters
  • Generation of End Marker Packets
  • Downlink Data Notification (DDN) using PFCP Session Report
  • Integration with Prometheus for exporting PFCP and data plane-level metrics.
  • Application filtering using application PFDs (experimental).

BESS-UPF

  • IPv4 support
  • N3, N4, N6, N9 interfacing
  • Single & Multi-port support
  • Monitoring/Debugging capabilties using
    • tcpdump on individual BESS modules
    • visualization web interface
    • command line shell interface for displaying statistics
  • Static IP routing
  • Dynamic IP routing
  • Support for IPv4 datagrams reassembly
  • Support for IPv4 packets fragmentation
  • Support for UE IP NAT
  • Service Data Flow (SDF) configuration via N4/PFCP.
  • I-UPF/A-UPF ULCL/Branching i.e., simultaneous N6/N9 support within PFCP session
  • Downlink Data Notification (DDN) - notification only (no buffering)
  • Basic QoS support, with per-slice and per-session rate limiting
  • Per-flow latency and throughput metrics
  • Network Token Functions (experimental)

P4-UPF

P4-UPF implements a core set of features capable of supporting requirements for a broad range of enterprise use cases. See the ONF's blog post for an overview of P4-UPF. Refer to the SD-Fabric documentation for the detailed feature set.

Getting started

This repository provides code to build two Docker images: pfcpiface (the PFCP Agent) and bess (the BESS-based datapath).

To build all Docker images run:

make docker-build

To build a selected image use DOCKER_TARGETS:

DOCKER_TARGETS=pfcpiface make docker-build

The latest Docker images are also published in the OMEC project's DockerHub registry: upf-epc-bess, upf-epc-pfcpiface.

Installation

Please see INSTALL.md for details on how to set up the PFCP Agent with BESS-UPF.

To install the PFCP Agent with UP4 please follow the SD-Fabric documentation.

Configuration

Please see configuration_guide.md to learn more about configurations.

Testing

The UPF project currently implements three types of tests:

Unit tests for the PFCP Agent's code. To run unit tests use:

make test

E2E integration tests that verify the inter-working between the PFCP Agent and a datapath. We provide two modes of E2E integration tests: native and docker. The native mode invokes Go objects directly from the go test framework, thus it makes the test cases easier to debug. The docker mode uses fully Dockerized environment and runs all components (the PFCP Agent and a datapath mock) as Docker containers. It ensures the correct behavior of the package produced by the UPF project.

To run E2E integration tests for UP4 in the docker mode use:

make test-up4-integration-docker

To run E2E integration tests for BESS-UPF in the native mode use:

make test-bess-integration-native

NOTE! The docker mode for BESS-UPF and the native mode for UP4 are not implemented yet.

PTF tests for BESS-UPF verify the BESS-based implementation of the UPF datapath (data plane). Follow the included README to run PTF tests for BESS-UPF.

Contributing

The UPF project welcomes new contributors. Feel free to propose a new feature, integrate a new UPF datapath or fix bugs!

Before contributing, please follow the below guidelines:

Support

To report any other kind of problem, feel free to open a GitHub Issue or reach out to the project maintainers on the ONF Community Slack.

License

The project is licensed under the Apache License, version 2.0.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].