Skip to content

5G-MAG/rt-5gms-application-function

Repository files navigation

5GMS Application Function

Under Development Version License

Introduction

The 5GMS Application Function (AF) is a Network Function that forms part of the 5G Media Services framework as defined in ETSI TS 126.501.

Additional information can be found at: https://5g-mag.github.io/Getting-Started/pages/5g-media-streaming/

5GMS Downlink Application Function

A 5GMSd Application Function (AF), which can be deployed in the 5G Core Network or in an External Data Network, is responsible for managing the 5GMSd System. The AF is a logical function which embodies the control plane aspects of the system, including provisioning, configuration, and reporting, among others. A 5GMSd Application Provider provisions 5GMS functions using a RESTful HTTP-based provisioning interface at reference point M1d. Another RESTful HTTP-based configuration and reporting interface is exposed to UE-based 5GMSd Clients at reference point M5d.

About the implementation

This AF uses the Open5GS framework to implement the network function.

A list of currently supported features is available here.

Install dependencies

sudo apt install git python3-pip python3-venv python3-setuptools python3-wheel ninja-build build-essential flex bison git libsctp-dev libgnutls28-dev libgcrypt-dev libssl-dev libidn11-dev libmongoc-dev libbson-dev libyaml-dev libnghttp2-dev libmicrohttpd-dev libcurl4-gnutls-dev libnghttp2-dev libtins-dev libtalloc-dev libpcre2-dev curl wget default-jdk cmake
sudo python3 -m pip install meson
python3 -m pip install build pyOpenSSL

Downloading

Release tar files can be downloaded from https://github.com/5G-MAG/rt-5gms-application-function/releases.

The source can be obtained by cloning the github repository.

For example to download the latest release you can use:

cd ~
git clone --recurse-submodules https://github.com/5G-MAG/rt-5gms-application-function.git
cd rt-5gms-application-function
git submodule update

Building

The build process requires a working Internet connection as the API files are retrieved at build time.

To build the 5GMS Application Function from the source:

cd ~/rt-5gms-application-function
meson build
ninja -C build

Note: Errors during the meson build command are often caused by missing dependencies or a network issue while trying to retrieve the API files and openapi-generator JAR file. See the ~/rt-5gms-application-function/build/meson-logs/meson-log.txt log file for the errors in greater detail. Search for generator-5gmsaf to find the start of the API fetch sequence.

Installing

To install the built Application Function as a system process:

cd ~/rt-5gms-application-function/build
sudo meson install --no-rebuild

Running

The Application Function requires a 5GMS Application Server (release v1.1.2 or above) to be running. Please follow the instructions for installing and running the 5GMS Application Server before starting the Application Function.

The Application Function can be executed with the command:

/usr/local/bin/open5gs-msafd

This uses the installed configuration file at /usr/local/etc/open5gs/msaf.yaml. You can use the -c command line parameter to specify an alternative configuration file. For example:

/usr/local/bin/open5gs-msafd -c alternate-msaf.yaml

The source example configuration file can be found in ~/rt-5gms-application-function/src/5gmsaf/msaf.yaml.

Also see the Configuring the Application Function page for details on configuration.

Testing

Follow the Testing as a Local User page for setting up a test environment without requiring full system installation.

Testing: M1 Interface

The details of these tests change with different versions of the 5GMSd Application Function.

If you are testing the v1.2.x versions then please visit the Testing the M1 Interface on v1.2.0 page.

If you are testing the M1 interface on 5GMSd Application Function v1.3.0 to v1.4.0 then please visit the Testing the M1 Interface on v1.3.0 page.

For testing the M1 interface on 5GMSd Application Function v1.4.1 or later, then please visit the Testing the M1 Interface on v1.4.1 page.

Testing the M3 Interface

Depending on which version of the 5GMSd Application Function you wish to test, the commands to test the interface at reference point M3 change.

If you wish to test 5GMSd Application Function v1.1.x then please see the Testing the M3 Interface on v1.1.0 page.

For versions after v1.1.x (i.e. v1.2.0 and above) please use the Testing the M3 Interface on v1.2.0 page.

Testing: M5 Interface

The details of these tests change with different versions of the 5GMSd Application Function.

If you are testing versions up to v1.1.x then please visit the Testing: M5 Interface on v1.0.0 page.

If you are testing the M5 interface on 5GMSd Application Function v1.2.x please visit the Testing the M5 Interface on v1.2.0 page.

If you are testing the M5 interface on 5GMSd Application Function v1.3.0 or later please visit the Testing the M5 Interface on v1.3.0 page.

Testing with Postman

For detailed instructions on how to use the Postman Collection please refer to this documentation.

Development

This project follows the Gitflow workflow. The development branch of this project serves as an integration branch for new features. Consequently, please make sure to switch to the development branch before starting the implementation of a new feature.

Acknowledgements

The reference implementation of the Network Assistance and Dynamic Policies features was funded by the UK Government through the REASON project.