UALCMPApp

Package: simu5g.nodes.mec.UALCMP

UALCMPApp

simple module

This 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

This 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.nodes.mec.MECPlatform.MECServices.MECServiceBase.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
responseTime
requestQueueSize

Statistics

Name Title Source Record Unit Interpolation Mode Description
requestQueueSizeStat Request queue size requestQueueSize mean, vector
responseTimeStat Response time of foreground requests responseTime mean, vector

Source code

//
// This 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.
//
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.nodes.mec.MECPlatform.MECServices.MECServiceBase.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[requestQueueSize];
        @statistic[requestQueueSizeStat](title="Request queue size"; source="requestQueueSize"; record=mean,vector);
        @signal[responseTime];
        @statistic[responseTimeStat](title="Response time of foreground requests"; source="responseTime"; record=mean,vector);

    gates:
        output socketOut;
        input socketIn;

        output toMecOrchestrator;
        input fromMecOrchestrator;
}
File: src/nodes/mec/UALCMP/UALCMPApp.ned