UalcmpApp

Package: simu5g.mec.ualcmp

UalcmpApp

simple module

Implements (part of) the Mx2 reference point defined by the ETSI GS MEC 016 V2.2.1 (2020-04) specification. A DeviceApp application module can use this API to request MEC app lifecycle operations (i.e., instantiation, termination, relocation). In particular, it provides the following methods:

  • GET /app_list: to retrieve information about available applications
  • POST /app_contexts: to request the creation of a new application context
  • DELETE /app_contexts/{contextId}: to request the deletion of an existing application context The application communicates directly with the MEC orchestrator without going through the protocol stack of the Ualcmp module.

Inheritance diagram

The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.

Used in compound modules

Name Type Description
Ualcmp compound module

Represents a host performing the functions of the User Application Lifecycle Management Proxy (UALCMP) defined by the ETSI Multi-access Edge Computing (MEC) specifications. It includes a complete network protocol stack and a UalcmpApp application module that implements the logic of the UALCMP entity. It is typically connected directly to a MEC orchestrator, and forwards to it the creation and deletion requests from the Device App modules of User Equipment. It can be configured to receive packets from a real, external Device App application via the external Ethernet interface submodule.

Parameters

Name Type Default value Description
binderModule string "binder"
serviceName string "Ualcmp"
requestQueueSize int 0
subscriptionQueueSize int 0
localAddress string ""

Local address; may be left empty ("")

localPort int 1000

localPort number to listen on

mecOrchestratorHostname string

Hostname of the reference orchestrator

requestServiceTime double 5us
subscriptionServiceTime double 10us
serverThreadClass string "simu5g.mec.platform.services.base.SocketManager"
tos int -1

If not -1, set the Type of Service (IPv4) / Traffic Class (IPv6) field of sent packets to this value

Properties

Name Value Description
display i=block/source
class UalcmpApp

Gates

Name Direction Size Description
socketOut output
socketIn input
toMecOrchestrator output
fromMecOrchestrator input

Signals

Name Type Unit Description
loadGeneratorNumBackgroundRequests
responseTime

Statistics

Name Title Source Record Unit Interpolation Mode Description
loadGeneratorNumBackgroundRequests Load Generator Background Requests Count mean, vector
responseTime Response time of foreground requests mean, vector

Source code

//
// Implements (part of) the Mx2 reference point defined by the ETSI GS MEC
// 016 V2.2.1 (2020-04) specification. A ~DeviceApp application module can use this API to
// request MEC app lifecycle operations (i.e., instantiation, termination, relocation).
// In particular, it provides the following methods:
//   - GET /app_list: to retrieve information about available applications
//   - POST /app_contexts: to request the creation of a new application context
//   - DELETE /app_contexts/{contextId}: to request the deletion of an existing application context
// The application communicates directly with the MEC orchestrator without going through the
// protocol stack of the ~Ualcmp module.
//
simple UalcmpApp like IApp
{
    parameters:
        @display("i=block/source");
        @class("UalcmpApp");

        string binderModule = default("binder");

        string serviceName = default("Ualcmp");
        int requestQueueSize = default(0);
        int subscriptionQueueSize = default(0);
        string localAddress = default(""); // Local address; may be left empty ("")
        int localPort = default(1000);     // localPort number to listen on

        // Hostname of the reference orchestrator
        string mecOrchestratorHostname;

        double requestServiceTime @unit(s) = default(5us);
        double subscriptionServiceTime @unit(s) = default(10us);

        string serverThreadClass = default("simu5g.mec.platform.services.base.SocketManager");

        int tos = default(-1); // If not -1, set the Type of Service (IPv4) / Traffic Class (IPv6) field of sent packets to this value

        @signal[loadGeneratorNumBackgroundRequests];
        @statistic[loadGeneratorNumBackgroundRequests](title="Load Generator Background Requests Count"; record=mean,vector);
        @signal[responseTime];
        @statistic[responseTime](title="Response time of foreground requests"; record=mean,vector);

    gates:
        output socketOut;
        input socketIn;

        output toMecOrchestrator;
        input fromMecOrchestrator;
}
File: src/simu5g/mec/ualcmp/UalcmpApp.ned