UalcmpApp

Package: simu5g.mec.ualcmp

simple module UalcmpApp

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.

simu5g.mec.ualcmp.UalcmpAppUalcmpAppsimple

Usage diagram

Inheritance 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

class

UalcmpApp

display

i=block/source

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