LteX2App

Package: simu5g.x2

LteX2App

compound module

This module represents the container for all X2 applications that an e/gNodeB instantiates to enable X2 communications with its peer e/gNodeBs. Specifically, for each peer, this module contains two submodules:

  • a server that sends data to the peer X2App
  • a client that receives data from the peer X2App
client : X2AppClient

This module extends INET's SctpClient application by adding an output gate to send messages to the...

Source:
client: X2AppClient {
    @display("i=block/app;p=92,76");
} server : X2AppServer

This module extends the INET's SctpServer application by adding an input gate to receive messages...

Source:
server: X2AppServer {
    @display("i=block/app;p=163,76");
}

Usage diagram

The following diagram shows usage relationships between types. Unresolved types are missing from the diagram.

Used in compound modules

Name Type Description
eNodeB compound module

This module models an evolved Node B (eNB) of a 4G LTE network. It is a specialized device equipped with a Network Interface Card (NIC) that enables communication with the Ue devices connected to it. It serves as an access point that routes packets between the UEs and the 4G Core Network. Packets arriving from the UEs are tunneled to the appropriate next hop in the core network (e.g., the PDN Gateway, PGW) using the GPRS Tunneling Protocol (GTP). Conversely, packets received from the core network are detunneled and sent to the appropriate destination UE. In addition to the 4G NIC, this compound module includes a configurable number of wired interfaces to connect with routers of the core network or directly to the PgwStandard module, which serves as the IP module to perform forwarding, and the GtpUser module that handles GTP (de)tunneling. The latter utilizes the TrafficFlowFilter module to classify incoming packets and determine the next hop. Furthermore, it features a configurable number of LteX2App modules to facilitate peer-to-peer communications with other eNodeBs within the same LTE network.

Properties

Name Value Description
display i=block/app;bgb=258,148

Gates

Name Direction Size Description
sctpIn [ ] input 2
sctpOut [ ] output 2
x2ManagerIn input
x2ManagerOut output

Unassigned submodule parameters

Name Type Default value Description
client.localAddress string ""

comma separated list of addresses

client.localPort int 0

port number to listen on

client.connectAddress string

server address (may be symbolic)

client.connectPort int 5000

port number to connect to

client.startTime double 0s

time first session begins

client.numRequestsPerSession int 1

number of requests sent per session

client.numPacketsToReceive int 0
client.requestLength int 1452

length of a request (bytes)

client.thinkTime double 0s

time gap between requests

client.waitToClose double 0s

time to wait between last message sent and abort

client.reconnectInterval double 0s

if connection breaks, waits this much before trying to reconnect

client.inboundStreams int 17
client.outboundStreams int 1
client.echo bool false

echoes received packages when true

client.ordered bool true
client.queueSize int 0
client.prMethod int 0

0=NONE, 1=PR_TTL, 2=PR_RTX, 3=PR_PRIO, 4=PR_STRRST

client.prValue double 0

for PR-SCTP

client.streamReset bool false
client.streamRequestTime double 0s
client.streamResetType int 5

NO_RESET=5, RESET_OUTGOING=6, RESET_INCOMING=7, RESET_BOTH=8, SSN_TSN=9

client.streamToReset int 0
client.stopTime double -1s

time of finishing sending, negative values mean forever

client.primaryTime double 0s
client.newPrimary string ""
client.streamRequestLengths string ""
client.streamRequestRatio string ""
client.streamPriorities string ""
client.finishEndsSimulation bool false
client.binderModule string "binder"
server.localAddress string ""

comma separated list of addresses

server.localPort int 0

port number to listen on

server.echo bool false

echoes received packages when true

server.echoDelay double 0s
server.delayFirstRead double 0s
server.readingInterval double 0s
server.messagesToPush int 0
server.numPacketsToSendPerClient int 0

number of requests sent per session

server.numPacketsToReceivePerClient int 1
server.requestLength int 1452

length of a request (bytes)

server.thinkTime double 0s

time gap between requests

server.waitToClose double 0s

time to wait between last message sent and abort

server.finishEndsSimulation bool false
server.ordered bool true
server.inboundStreams int 17
server.outboundStreams int 1
server.queueSize int 0
server.prMethod int 0

0=NONE, 1=PR_TTL, 2=PR_RTX, 3=PR_PRIO, 4=PR_STRRST

server.prValue double 0

for PR-SCTP

server.streamReset bool false
server.streamRequestTime double 0s
server.streamToReset int 0
server.streamPriorities string ""
server.binderModule string "binder"

Source code

//
// This module represents the container for all X2 applications that an e/gNodeB instantiates
// to enable X2 communications with its peer e/gNodeBs. Specifically, for each peer,
// this module contains two submodules:
// - a server that sends data to the peer X2App
// - a client that receives data from the peer X2App
//
module LteX2App
{
    parameters:
        @display("i=block/app;bgb=258,148");

    gates:
        input sctpIn[2] @labels(SctpCommand/up);
        output sctpOut[2] @labels(SctpCommand/down);

        input x2ManagerIn @labels(X2Msg);
        output x2ManagerOut @labels(X2Msg);

    submodules:
        client: X2AppClient {
            @display("i=block/app;p=92,76");
        }
        server: X2AppServer {
            @display("i=block/app;p=163,76");
        }

    connections:

        //# client connections
        sctpIn[0] --> client.socketIn;
        sctpOut[0] <-- client.socketOut;

		//# server connections
        sctpIn[1] --> server.socketIn;
        sctpOut[1] <-- server.socketOut;

        //# X2 manager connections
        x2ManagerIn --> server.x2ManagerIn;
        x2ManagerOut <-- client.x2ManagerOut;
}

File: src/x2/LteX2App.ned