UnstructuredApp

Package: simu5g.apps.unstructured

compound module UnstructuredApp

An application of a UE whose session is of type Unstructured (the UE’s sessionType parameter, see LteUe): it sends and receives opaque payload through the UE’s cellular NIC, which carries it over the session to the data network (see UserPlaneNodeControl for the N6 end of the session). The traffic source and sink are built from queueing model elements, as INET’s EthernetApp’s; UnstructuredIo attaches them to the NIC. UnstructuredSourceApp and UnstructuredSinkApp only send and only receive. A UE has at most one such application, in its unstructuredApp submodule vector.

UnstructuredAppsource.out --> measurementStarter.in conditional: exists(source)?measurementStarter.out --> io.trafficInio.socketOut --> socketOutsocketIn --> io.socketInio.trafficOut --> measurementRecorder.inmeasurementRecorder.out --> sink.in conditional: exists(sink)?source: inet.queueing.source.ActivePacketSource (like IActivePacketSource) ActivePacketSource: An active packet source which pushes packets into the connected module. IActivePacketSource: Interface for active packet source modules. Source: source: <default("ActivePacketSource")> like IActivePacketSource if typename != "" { parameters: @display("p=200,150"); }sourcemeasurementStarter: inet.queueing.contract.IPacketFlow (like IPacketFlow) IPacketFlow: Interface for packet flows. Source: measurementStarter: <default("")> like IPacketFlow { parameters: @display("p=200,300"); }measurementStartersink: inet.queueing.sink.PassivePacketSink (like IPassivePacketSink) PassivePacketSink: A passive packet sink which is pushed with packets by the connected packet producer. IPassivePacketSink: Interface for passive packet sink modules. Source: sink: <default("PassivePacketSink")> like IPassivePacketSink if typename != "" { parameters: @display("p=500,150"); }sinkmeasurementRecorder: inet.queueing.contract.IPacketFlow (like IPacketFlow) IPacketFlow: Interface for packet flows. Source: measurementRecorder: <default("")> like IPacketFlow { parameters: @display("p=500,300"); }measurementRecorderio: simu5g.apps.unstructured.UnstructuredIo Attaches an application to the cellular NIC of a UE whose session is of type Unstructured (the UE... Source: io: UnstructuredIo { parameters: @display("p=350,450"); }io

Usage diagram

Inheritance diagram

Used in compound modules

Name

Type

Description

LteUe

compound module

Models a User Equipment (UE) in a 4G LTE network. It is a host equipped with an LTE Network Interface Card (NIC), allowing the UE to connect to an eNodeB module via the Radio Access Network (RAN) of the LTE network and communicate with any other host in the system. The UE is an INET StandardHost ↗ with the cellular NIC as an additional network interface of its link layer, so it has all the higher layers of the protocol stack, from the link layer to the application modules, and the configuration options of StandardHost ↗ (numApps, hasUdp, hasTcp, hasIpv4, hasIpv6, numEthInterfaces, etc.). Its Ethernet interfaces (eth[]) are utilized in real-time emulation mode to connect the UE to the real network (outside the simulator) via a virtual Ethernet interface.

Known subclasses

Name

Type

Description

UnstructuredSinkApp

compound module

An UnstructuredApp that only receives

UnstructuredSourceApp

compound module

An UnstructuredApp that only sends

Parameters

Name

Type

Default value

Description

interfaceTableModule

string

Relative module path of the interface table

Properties

Name

Value

Description

application

display

i=block/app

Gates

Name

Direction

Size

Description

socketIn

input

socketOut

output

Unassigned submodule parameters

Name

Type

Default value

Description

source ↗.displayStringTextFormat

string

“created %p pk (%l)”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

source ↗.packetNameFormat

string

“%a-%c”

See directives in module documentation

source ↗.packetRepresentation

string

“byteCount”

Determines the chunk of the packet data

source ↗.packetProtocol

string

“unknown”

source ↗.packetLength

int

source ↗.packetData

int

-1

source ↗.attachCreationTimeTag

bool

true

source ↗.attachIdentityTag

bool

true

source ↗.attachDirectionTag

bool

true

source ↗.clockModule

string

“”

Relative path of a module that implements IClock; optional

source ↗.initialProductionOffset

double

-1s

Initial duration before which packets are not produced. When negative, then produce packet in initialize()

source ↗.productionInterval

double

Elapsed time between subsequent packets pushed to the connected packet consumer

source ↗.scheduleForAbsoluteTime

bool

true

When a clock is used, “relative” means that setting the clock will not affect the simulation time of the event

sink ↗.displayStringTextFormat

string

“received %p pk (%l)”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

sink ↗.clockModule

string

“”

Relative path of a module that implements IClock; optional

sink ↗.initialConsumptionOffset

double

0s

Initial duration before which packets are not consumed

sink ↗.consumptionInterval

double

0s

Elapsed time between subsequent packets allowed to be pushed by the connected packet producer, 0 means any number of packets can be pushed at the same simulation time

sink ↗.scheduleForAbsoluteTime

bool

true

When a clock is used, “relative” means that setting the clock will not affect the simulation time of the event

io.interfaceTableModule

string

Relative module path of the interface table

io.interface

string

“cellular”

The name of the cellular NIC’s interface

Source code

//
// An application of a UE whose session is of type Unstructured (the UE's
// sessionType parameter, see ~LteUe): it sends and receives opaque payload through
// the UE's cellular NIC, which carries it over the session to the data network (see
// ~UserPlaneNodeControl for the N6 end of the session). The traffic source and sink
// are built from queueing model elements, as INET's EthernetApp's; ~UnstructuredIo
// attaches them to the NIC. ~UnstructuredSourceApp and ~UnstructuredSinkApp only send
// and only receive. A UE has at most one such application, in its unstructuredApp
// submodule vector.
//
module UnstructuredApp like IApp
{
    parameters:
        string interfaceTableModule;  // Relative module path of the interface table
        *.interfaceTableModule = default(absPath(this.interfaceTableModule));
        @application;
        @display("i=block/app");
    gates:
        input socketIn;
        output socketOut;
    submodules:
        source: <default("ActivePacketSource")> like IActivePacketSource if typename != "" {
            parameters:
                @display("p=200,150");
        }
        measurementStarter: <default("")> like IPacketFlow {
            parameters:
                @display("p=200,300");
        }
        sink: <default("PassivePacketSink")> like IPassivePacketSink if typename != "" {
            parameters:
                @display("p=500,150");
        }
        measurementRecorder: <default("")> like IPacketFlow {
            parameters:
                @display("p=500,300");
        }
        io: UnstructuredIo {
            parameters:
                @display("p=350,450");
        }
    connections allowunconnected:
        source.out --> measurementStarter.in if exists(source);
        measurementStarter.out --> io.trafficIn;
        io.socketOut --> socketOut;

        socketIn --> io.socketIn;
        io.trafficOut --> measurementRecorder.in;
        measurementRecorder.out --> sink.in if exists(sink);
}

File: src/simu5g/apps/unstructured/UnstructuredApp.ned