osmo-uecups (for UE Control/User Plane Separation) is a special-purpose project which emulates the UE/MME/SGW/SGSN side of GTP tunnels. This can be used in a variety of test use cases where a P-GW or GGSN (or GTP roaming hub) should be tested with a variety of GTP sessions/tunnels/bearers.

This project is currently under development, hence there's no documentation yet.

An initial announcment can be found in the Eclipse TITAN Forum at

Usage in PGW testing

The diagram below illustrates how the osmo-uecups-daemon is used in testing of a PGW:


osmo-uecups-daemon has the following functionality

  • receives instructions from the Test Suite via a JSON based "UECUPS" protcol
    • create_tun creates a tunnel and an associaed network namespace with tun device inside
    • destroy_tun destroys a previously created tunnel
    • start_program executes a specified command/program within the network namespace of the tunnel
    • reset_all_state deletes all tunnels, tun devices, network namespaces and kills all started programs
  • encapsulates packets arriving on the tun devices into GTP1U and sends them to the PGW
  • decapsulates GTP1u received from the PGW and passses them via the respective tun device [in the respective netns]

TTCN3 integration

There are the following TTCN3 modules for integration into TTCN3 test suites, specifically using Eclipse TITAN:

  • UECUPS_Types.ttcn contains abstract types used for the UECUPS protocol with the daemon (encoding/decoding of JSON performed automatically/implicitly by TITAN)
  • UECUPS_CodecPort.ttcn contains the definition of a transcoding port on top of the IPL4asp_PT (SCTP)
    • UECUPS_CodecPort_CtrlFunct.ttcn and are related helpers

For an example using all of the above, see the code in

Source Code

Source code can be found in git at

Add picture from clipboard (Maximum size: 48.8 MB)