gNodeB

Package: simu5g.nodes

gNodeB

compound module

Implements a gNodeB for a 5G network. It extends the eNodeB module by providing 5G connectivity to NrUe modules. It can be used in either StandAlone (SA) or Non-StandAlone (NSA) 5G deployments. In the former case, it is directly connected to a Upf module. In the latter case, this module can be configured as a secondary node of a eNodeB module, thus enabling E-UTRA Dual Connectivity (EN-DC).

interfaceTable : InterfaceTable
[from inet] ↗

Keeps the table of network interfaces.

Source:
interfaceTable: InterfaceTable {
    parameters:
        @display("p=110,158;is=s");
} mobility : StationaryMobility
[from inet] ↗

This mobility module does nothing; it can be used for stationary nodes.

Source:
mobility: StationaryMobility {
    parameters:
        @display("p=110,343;is=s");
} cellInfo : CellInfo

Includes data structures and functions used to support local operations at the e/gNodeB, such as...

Source:
cellInfo: CellInfo {
    parameters:
        @display("p=110,244;is=s");
} collector : like IStatsCollector

BaseStationStatsCollector: Collects the radio network information of an eNodeB, which can be accessed by the ~RniService...

IStatsCollector: A module implementing this interface is a utility module that is accessed by the ~RniService of a...

Source:
collector: <default("BaseStationStatsCollector")> like IStatsCollector if hasRniSupport {
    @display("p=50,275;is=s");
} cellularNic : like ICellularNic

ICellularNic: Interface for the 3GPP Stack.

Source:
cellularNic: <default(hasD2D ? "LteNicEnbD2D" : "LteNicEnb")> like ICellularNic {
    parameters:
        @display("p=433,520");
        nodeType = parent.nodeType;
} pppIf : PppInterface
[from inet] ↗

This module implements a PPP network interface.

Source:
pppIf: PppInterface {
    parameters:
        @display("p=824,519");
} x2ppp[sizeof(x2)] : PppInterface
[from inet] ↗

This module implements a PPP network interface.

Source:
x2ppp[sizeof(x2)]: PppInterface {
    parameters:
        @display("p=980,519");
} pppMEHostIf : PppInterface
[from inet] ↗

This module implements a PPP network interface.

Source:
pppMEHostIf: PppInterface {
    @display("p=657,519");
} ipv4 : like INetworkLayer

Ipv4NetworkLayer [from inet] ↗: Network layer of an IPv4 node.

INetworkLayer [from inet] ↗

Source:
ipv4: <default("Ipv4NetworkLayer")> like INetworkLayer if hasIpv4 {
    parameters:
        @display("p=494,372;q=queue");
} ipv6 : like INetworkLayer

Ipv6NetworkLayer [from inet] ↗: Represents an IPv6 network layer (L3).

INetworkLayer [from inet] ↗

Source:
ipv6: <default("Ipv6NetworkLayer")> like INetworkLayer if hasIpv6 {
    parameters:
        @display("p=657,374;q=queue");
}

        //#
        //# Transport layer modules and corresponding application modules
        //#
		// =============== Udp ============== // app[numApps] : like IApp

IApp [from inet] ↗: Generic application interface.

Source:
app[numApps]: <> like IApp {
    parameters:
        @display("p=748,75,row,140");
} udp : Udp
[from inet] ↗

UDP protocol implementation, for IPv4 (~Ipv4) and IPv6 (~Ipv6).

Source:
udp: Udp {
    parameters:
        @display("p=682,212");
} tcp : Tcp
[from inet] ↗

TCP protocol implementation.

Source:
tcp: Tcp if hasTcp {
    parameters:
        @display("p=963,212");
}

	    // =============== X2AP ============== // x2App[numX2Apps] : LteX2App

Represents the container for all X2 applications that an e/gNodeB instantiates to enable X2...

Source:
x2App[numX2Apps]: LteX2App {
    parameters:
        @display("p=371,75,row");
} sctp : Sctp
[from inet] ↗

Implements the SCTP protocol.

Source:
sctp: Sctp {
    parameters:
        @display("p=494,211");
}

	    // message dispatcher for SAP between application and transport layer at : MessageDispatcher
[from inet] ↗

This module connects multiple applications, protocols and interfaces with each other and...

Source:
at: MessageDispatcher {
    parameters:
        @display("p=750,146;b=1000,5,,,,1");
} tn : MessageDispatcher
[from inet] ↗

This module connects multiple applications, protocols and interfaces with each other and...

Source:
tn: MessageDispatcher {
    parameters:
        @display("p=750,300;b=1000,5,,,,1");
} nl : MessageDispatcher
[from inet] ↗

This module connects multiple applications, protocols and interfaces with each other and...

Source:
nl: MessageDispatcher {
    parameters:
        @display("p=750,446;b=1000,5,,,,1");
} trafficFlowFilter : TrafficFlowFilter

Maps IP 4-Tuples to Traffic Flow Template (TFT) identifiers, which are used by the ~GtpUser module...

Source:
trafficFlowFilter: TrafficFlowFilter {
    parameters:
        @display("p=1172,80");
        ownerType = parent.nodeType;
} gtpUser : GtpUser

Implements a simplified version of the user plane of the GPRS Tunneling Protocol (GTP).

Source:
gtpUser: GtpUser {
    parameters:
        @display("p=1041,80");
        ipOutInterface = "cellular";
        gateway = parent.gateway;
} gtpUserX2 : GtpUserX2

Implements a simplified version of the user plane of the GPRS Tunneling Protocol (GTP) used for...

Source:
gtpUserX2: GtpUserX2 {
    parameters:
        @display("p=900,80");
}

Inheritance diagram

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

Used in

Name Type Description
ExtClientServer_bgCells network

ExtClientServerExample with background cells instead of external ones: one gNodeB served by a Upf core, a router in front of the Upf, one NrUe, and numBgCells BackgroundCell cells. The router has no simulated peer: the host it talks to, and the applications on the NrUe, are configured in the ini file.

ExtClientServerExample network

One gNodeB served by a Upf core, a router in front of the Upf, and one NrUe. numExtCells ExtCell cells can be added as interferers. The router has no simulated peer: the host it talks to, and the applications on the NrUe, are configured in the ini file.

ExtMecAppExample network

One gNodeB and one MecHost hung off the same intermediate Upf, behind an anchor Upf that carries the Ualcmp and, behind it, the MecOrchestrator, plus one NrUe. Nothing here is external: which node talks to a real host, and over which interface, is configured in the ini file.

ExtServerExample network

One gNodeB served by a Upf core, a router in front of the Upf, and two NrUe terminals. numExtCells ExtCell cells can be added as interferers. The router has no simulated peer: the host it talks to, and the applications on the UEs, are configured in the ini file.

ExtUeAppExample network

One gNodeB and one MecHost hung off the same intermediate Upf, behind an anchor Upf that carries the Ualcmp and, behind it, the MecOrchestrator, plus one NrUe. Nothing here is external: which node talks to a real host, and over which interface, is configured in the ini file.

ExtUeAppMecAppExample network

One gNodeB and one MecHost hung off the same intermediate Upf, behind an anchor Upf that carries the Ualcmp and, behind it, the MecOrchestrator, plus one NrUe. Nothing here is external: which node talks to a real host, and over which interface, is configured in the ini file.

MultiCell_Standalone network

Two gNodeB cells served by a 5G core: the anchor Upf faces the data network (a router and a server), an intermediate Upf feeds both gNodeBs, and an X2 link joins them. numUe NrUe terminals attach, and numBgCells BackgroundCell cells can be added as interferers.

MultiCell_withSecondaryGnb network

The two-cell version of SingleCell_withSecondaryGnb: two eNodeB masters, each paired over X2 with its own gNodeB secondary, and a further X2 link between the two masters. Both eNodeBs connect to the EPC PgwStandard, which faces a router and a server; neither gNodeB has a core-network link. numUe NrUe terminals attach, and numBgCells BackgroundCell cells can be added as interferers.

MultiMecHost network

Two gNodeB cells, each on an intermediate Upf of its own with a MecHost hung off it, so every cell has its own MEC host. Both intermediate Upf nodes meet at the anchor Upf, which carries the Ualcmp and, behind it, the MecOrchestrator. An X2 link joins the two gNodeBs. numUe NrUe terminals attach, and numBgCells BackgroundCell cells can be added as interferers.

MultiMecHost_delay network

MultiMecHost with the two intermediate Upf nodes linked directly to each other, and with no X2 link between the gNodeBs. The length of that link -- and so its propagation delay -- follows the routersDelay parameter, which makes the distance between the two MEC hosts configurable.

MultiOperator network

Two operator networks side by side. Each has three gNodeB cells chained by X2, an intermediate Upf that feeds them and carries the operator's MecHost, an anchor Upf, and a Ualcmp with its MecOrchestrator. The two anchor Upf nodes meet at a shared router, the only node the operators have in common. numUe_A and numUe_B NrUe terminals attach to operator A and B respectively, and numBgCells BackgroundCell cells can be added as interferers.

RnisTest network

The topology of SingleMecHost -- one gNodeB and one MecHost on a shared intermediate Upf, with a Ualcmp and a MecOrchestrator behind the anchor Upf -- without its playground size parameters. numUes NrUe terminals attach to the gNodeB.

SingleCell_Standalone network

One gNodeB served by a 5G core: the anchor Upf faces the data network (a router and a server), and an intermediate Upf sits between it and the gNodeB. numUe NrUe terminals attach to the gNodeB, and numBgCells BackgroundCell cells can be added around it as interferers.

SingleCell_Standalone_D2D network

SingleCell_Standalone with its UEs split into three vectors, so that a configuration can address cellular terminals (ueCell), D2D transmitters (ueD2DTx) and D2D receivers (ueD2DRx) separately. The rest of the topology is the same: one gNodeB behind an intermediate and an anchor Upf, with a router and a server on the data network, plus numBgCells BackgroundCell interferers.

SingleCell_withSecondaryEnb network

The mirror image of SingleCell_withSecondaryGnb: here the gNodeB is the master node and the eNodeB is its secondary, so the UE is anchored on its NR stack and its LTE stack carries the secondary cell group. All data-plane traffic enters at the gNodeB.

SingleCell_withSecondaryGnb network

An EN-DC topology: an eNodeB master paired over X2 with a gNodeB secondary. The eNodeB is the only node with a core-network link -- an EPC PgwStandard facing a router and a server -- so all data-plane traffic enters there, and the gNodeB contributes its radio leg alone. numUe NrUe terminals attach to both, and numBgCells BackgroundCell cells can be added as interferers.

SingleMecHost network

One gNodeB and one MecHost hung off the same intermediate Upf, behind an anchor Upf that carries the Ualcmp and, behind it, the MecOrchestrator. numUes NrUe terminals attach to the gNodeB.

UrbanNetwork network (no description)

Extends

Name Type Description
eNodeB compound 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 LteUe 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.

Parameters

Name Type Default value Description
nodeType string "GNODEB"
gateway string "upf"
masterId int 0

ID of the master eNodeB. Used in case of Dual Connectivity

macNodeId int 1+simu5g_seq("eNodeB_macNodeId")
macCellId int macNodeId
txPower double 100mw
hasD2D bool false
hasIpv4 bool true
hasIpv6 bool false
numApps int 0
numX2Apps int 0

Number of X2 apps; set their types in the ini file, e.g. x2App[0..1].typename="X2AppClient"

hasUdp bool true
hasTcp bool firstAvailableOrEmpty("Tcp", "TcpLwip", "TcpNsc") != ""
hasSctp bool true
mecHost string ""
hasRniSupport bool false
extMeAppsAddress string ""
mcc string "001"
mnc string "01"

Test network

Properties

Name Value Description
networkNode
labels node
display i=device/antennatower;bgb=1260,600

Gates

Name Direction Size Description
ppp inout

Connection to the Core Network

radioIn input

Connection to the radio interface

x2 [ ] inout

Connection to the X2 interface

pppMEHost inout

Statistics

Name Title Source Record Unit Interpolation Mode Description
posX xCoord(mobilityPos(mobilityStateChanged)) vector?
posY yCoord(mobilityPos(mobilityStateChanged)) vector?

Unassigned submodule parameters

Name Type Default value Description
interfaceTable.displayAddresses bool false

whether to display IP addresses on links

mobility.subjectModule string "^"

module path which determines the subject module, the motion of which this mobility model describes, the default value is the parent module

mobility.coordinateSystemModule string ""

module path of the geographic coordinate system module

mobility.displayStringTextFormat string "p: %p\nv: %v"

format string for the mobility module's display string text

mobility.updateDisplayString bool true

enables continuous update of the subject module's position via modifying its display string

mobility.constraintAreaMinX double -inf m

min x position of the constraint area, unconstrained by default (negative infinity)

mobility.constraintAreaMinY double -inf m

min y position of the constraint area, unconstrained by default (negative infinity)

mobility.constraintAreaMinZ double -inf m

min z position of the constraint area, unconstrained by default (negative infinity)

mobility.constraintAreaMaxX double inf m

max x position of the constraint area, unconstrained by default (positive infinity)

mobility.constraintAreaMaxY double inf m

max y position of the constraint area, unconstrained by default (positive infinity)

mobility.constraintAreaMaxZ double inf m

max z position of the constraint area, unconstrained by default (positive infinity)

mobility.initialX double uniform(this.constraintAreaMinX, this.constraintAreaMaxX)
mobility.initialY double uniform(this.constraintAreaMinY, this.constraintAreaMaxY)
mobility.initialZ double nanToZero(uniform(this.constraintAreaMinZ, this.constraintAreaMaxZ))
mobility.initialLatitude double nan deg
mobility.initialLongitude double nan deg
mobility.initialAltitude double 0m
mobility.initialHeading double 0deg
mobility.initialElevation double 0deg
mobility.initialBank double 0deg
mobility.initFromDisplayString bool true

enables one time initialization from the subject module's display string

mobility.updateFromDisplayString bool true

enables continuous update from the subject module's display string for dragging and rotating it

cellInfo.constraintAreaMinX double -1m/0

The minimum X-coordinate of the area constraint, unconstrained by default

cellInfo.constraintAreaMinY double -1m/0

The minimum Y-coordinate of the area constraint, unconstrained by default

cellInfo.constraintAreaMaxX double 1m/0

The maximum X-coordinate of the area constraint, unconstrained by default

cellInfo.constraintAreaMaxY double 1m/0

The maximum Y-coordinate of the area constraint, unconstrained by default

cellInfo.beaconInterval double 1s

Interval for sending broadcast messages (used for handover or DAS)

cellInfo.microCell bool false

Type of eNodeB (MICRO / MACRO) - valid only for eNodeBs

cellInfo.rbyDl int 12

Number of sub-carriers per RB in DL

cellInfo.rbyUl int 12

Number of sub-carriers per RB in UL

cellInfo.rbxDl int 7

Number of OFDM symbols per slot in DL

cellInfo.rbxUl int 7

Number of OFDM symbols per slot in UL

cellInfo.rbPilotDl int 3

Number of pilot Resource Elements per RB in DL

cellInfo.rbPilotUl int 0

Number of pilot Resource Elements per RB in UL

cellInfo.signalDl int 1

Number of signaling symbols for each Resource Block in DL

cellInfo.signalUl int 1

Number of signaling symbols for each Resource Block in UL

cellInfo.numPreferredBands int 1

Number of preferred bands to use (relevant only in PREFERRED mode)

cellInfo.binderModule string "binder"
collector.collectorType string

One of "eNBStatsCollector", "gNBStatsCollector", "ueStatsCollector", "NrUeStatsCollector"

pppIf.pcapRecorder.verbose bool true

whether to log packets on the module output

pppIf.pcapRecorder.pcapFile string ""

the PCAP file to be written

pppIf.pcapRecorder.fileFormat string "pcapng"
pppIf.pcapRecorder.snaplen int 65535

maximum number of bytes to record per packet

pppIf.pcapRecorder.dumpBadFrames bool true

enable dump of frames with hasBitError

pppIf.pcapRecorder.sendingSignalNames string "packetSentToLower"

space-separated list of outbound packet signals to subscribe to

pppIf.pcapRecorder.receivingSignalNames string "packetReceivedFromLower"

space-separated list of inbound packet signals to subscribe to

pppIf.pcapRecorder.dumpProtocols string "ethernetmac ppp ieee80211mac"

space-separated list of protocol names as defined in the Protocol class

pppIf.pcapRecorder.packetFilter object "*"

which packets are considered, matches all packets by default

pppIf.pcapRecorder.helpers string ""

usable PcapRecorder::IHelper helpers for accept packettype and store/convert packet as specified linktype currently available: "inet::AckingMacToEthernetPcapRecorderHelper"

pppIf.pcapRecorder.alwaysFlush bool false

flush the pcapFile after each write to ensure that all packets are captured in case of a crash

pppIf.pcapRecorder.displayStringTextFormat string "rec: %n pks"
pppIf.ppp.interfaceTableModule string

The path to the InterfaceTable module

pppIf.ppp.displayStringTextFormat string "rate: %b\nsent: %s, rcvd: %r\nqueue: %q, drop: %d"
pppIf.ppp.sendRawBytes bool false

when true packets are serialized into a sequence of bytes before sending out

pppIf.ppp.mtu int 4470B
pppIf.ppp.stopOperationExtraTime double -1s

extra time after lifecycle stop operation finished

pppIf.ppp.stopOperationTimeout double 2s

timeout value for lifecycle stop operation

x2ppp.pcapRecorder.verbose bool true

whether to log packets on the module output

x2ppp.pcapRecorder.pcapFile string ""

the PCAP file to be written

x2ppp.pcapRecorder.fileFormat string "pcapng"
x2ppp.pcapRecorder.snaplen int 65535

maximum number of bytes to record per packet

x2ppp.pcapRecorder.dumpBadFrames bool true

enable dump of frames with hasBitError

x2ppp.pcapRecorder.sendingSignalNames string "packetSentToLower"

space-separated list of outbound packet signals to subscribe to

x2ppp.pcapRecorder.receivingSignalNames string "packetReceivedFromLower"

space-separated list of inbound packet signals to subscribe to

x2ppp.pcapRecorder.dumpProtocols string "ethernetmac ppp ieee80211mac"

space-separated list of protocol names as defined in the Protocol class

x2ppp.pcapRecorder.packetFilter object "*"

which packets are considered, matches all packets by default

x2ppp.pcapRecorder.helpers string ""

usable PcapRecorder::IHelper helpers for accept packettype and store/convert packet as specified linktype currently available: "inet::AckingMacToEthernetPcapRecorderHelper"

x2ppp.pcapRecorder.alwaysFlush bool false

flush the pcapFile after each write to ensure that all packets are captured in case of a crash

x2ppp.pcapRecorder.displayStringTextFormat string "rec: %n pks"
x2ppp.ppp.interfaceTableModule string

The path to the InterfaceTable module

x2ppp.ppp.displayStringTextFormat string "rate: %b\nsent: %s, rcvd: %r\nqueue: %q, drop: %d"
x2ppp.ppp.sendRawBytes bool false

when true packets are serialized into a sequence of bytes before sending out

x2ppp.ppp.mtu int 4470B
x2ppp.ppp.stopOperationExtraTime double -1s

extra time after lifecycle stop operation finished

x2ppp.ppp.stopOperationTimeout double 2s

timeout value for lifecycle stop operation

pppMEHostIf.pcapRecorder.verbose bool true

whether to log packets on the module output

pppMEHostIf.pcapRecorder.pcapFile string ""

the PCAP file to be written

pppMEHostIf.pcapRecorder.fileFormat string "pcapng"
pppMEHostIf.pcapRecorder.snaplen int 65535

maximum number of bytes to record per packet

pppMEHostIf.pcapRecorder.dumpBadFrames bool true

enable dump of frames with hasBitError

pppMEHostIf.pcapRecorder.sendingSignalNames string "packetSentToLower"

space-separated list of outbound packet signals to subscribe to

pppMEHostIf.pcapRecorder.receivingSignalNames string "packetReceivedFromLower"

space-separated list of inbound packet signals to subscribe to

pppMEHostIf.pcapRecorder.dumpProtocols string "ethernetmac ppp ieee80211mac"

space-separated list of protocol names as defined in the Protocol class

pppMEHostIf.pcapRecorder.packetFilter object "*"

which packets are considered, matches all packets by default

pppMEHostIf.pcapRecorder.helpers string ""

usable PcapRecorder::IHelper helpers for accept packettype and store/convert packet as specified linktype currently available: "inet::AckingMacToEthernetPcapRecorderHelper"

pppMEHostIf.pcapRecorder.alwaysFlush bool false

flush the pcapFile after each write to ensure that all packets are captured in case of a crash

pppMEHostIf.pcapRecorder.displayStringTextFormat string "rec: %n pks"
pppMEHostIf.ppp.interfaceTableModule string

The path to the InterfaceTable module

pppMEHostIf.ppp.displayStringTextFormat string "rate: %b\nsent: %s, rcvd: %r\nqueue: %q, drop: %d"
pppMEHostIf.ppp.sendRawBytes bool false

when true packets are serialized into a sequence of bytes before sending out

pppMEHostIf.ppp.mtu int 4470B
pppMEHostIf.ppp.stopOperationExtraTime double -1s

extra time after lifecycle stop operation finished

pppMEHostIf.ppp.stopOperationTimeout double 2s

timeout value for lifecycle stop operation

udp.interfaceTableModule string

The path to the InterfaceTable module

udp.icmpModule string "^.ipv4.icmp"
udp.icmpv6Module string "^.ipv6.icmpv6"
udp.crcMode string "declared"
udp.defaultMulticastLoop bool true
tcp.crcMode string "declared"
tcp.advertisedWindow int 14*this.mss

in bytes, corresponds with the maximal receiver buffer capacity (Note: normally, NIC queues should be at least this size)

tcp.delayedAcksEnabled bool false

delayed ACK algorithm (RFC 1122) enabled/disabled

tcp.nagleEnabled bool true

Nagle's algorithm (RFC 896) enabled/disabled

tcp.limitedTransmitEnabled bool false

Limited Transmit algorithm (RFC 3042) enabled/disabled (can be used for TcpReno/TcpTahoe/TcpNewReno/TcpNoCongestionControl)

tcp.increasedIWEnabled bool false

Increased Initial Window (RFC 3390) enabled/disabled

tcp.sackSupport bool false

Selective Acknowledgment (RFC 2018, 2883, 3517) support (header option) (SACK will be enabled for a connection if both endpoints support it)

tcp.windowScalingSupport bool false

Window Scale (RFC 1323) support (header option) (WS will be enabled for a connection if both endpoints support it)

tcp.windowScalingFactor int -1

Window Scaling Factor to the power of 2. -1 indicates that manual window scaling is turned off.

tcp.timestampSupport bool false

Timestamps (RFC 1323) support (header option) (TS will be enabled for a connection if both endpoints support it)

tcp.mss int 536

Maximum Segment Size (RFC 793) (header option)

tcp.msl int 120s

Maximum Segment Lifetime

tcp.tcpAlgorithmClass string "TcpReno"

TODO: use the following @enum or similar, but it must allow new values for user defined algorithms (omnetpp-6.1 checks @enum strictly): @enum("TcpVegas", "TcpWestwood", "TcpNewReno", "TcpReno", "TcpTahoe", "TcpNoCongestionControl")

tcp.useDataNotification bool false

turn the notifications for arrived data on or off

tcp.dupthresh int 3

used for TcpTahoe, TcpReno and SACK (RFC 3517) DO NOT change unless you really know what you are doing

tcp.initialSsthresh int 0xFFFFFFFF

initial value for Slow Start threshold used in TahoeRenoFamily. The initial value of ssthresh SHOULD be set arbitrarily high (e.g.,to the size of the largest possible advertised window) Without user interaction there is no limit...

tcp.stopOperationExtraTime double 0s

extra time after lifecycle stop operation finished

tcp.stopOperationTimeout double 2s

timeout value for lifecycle stop operation

tcp.ecnWillingness bool false

true if willing to use ECN

tcp.dctcpGamma double 0.0625

A fixed estimation gain for calculating dctcp_alpha (RFC 8257 4.2)

x2App.client.localAddress string ""

comma separated list of addresses

x2App.client.localPort int 0

port number to listen on

x2App.client.connectAddress string

server address (may be symbolic)

x2App.client.connectPort int 5000

port number to connect to

x2App.client.startTime double 0s

time first session begins

x2App.client.numRequestsPerSession int 1

number of requests sent per session

x2App.client.numPacketsToReceive int 0
x2App.client.requestLength int 1452

length of a request (bytes)

x2App.client.thinkTime double 0s

time gap between requests

x2App.client.waitToClose double 0s

time to wait between last message sent and abort

x2App.client.reconnectInterval double 0s

if connection breaks, waits this much before trying to reconnect

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

echoes received packages when true

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

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

x2App.client.prValue double 0

for PR-SCTP

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

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

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

time of finishing sending, negative values mean forever

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

comma separated list of addresses

x2App.server.localPort int 0

port number to listen on

x2App.server.echo bool false

echoes received packages when true

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

number of requests sent per session

x2App.server.numPacketsToReceivePerClient int 1
x2App.server.requestLength int 1452

length of a request (bytes)

x2App.server.thinkTime double 0s

time gap between requests

x2App.server.waitToClose double 0s

time to wait between last message sent and abort

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

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

x2App.server.prValue double 0

for PR-SCTP

x2App.server.streamReset bool false
x2App.server.streamRequestTime double 0s
x2App.server.streamToReset int 0
x2App.server.streamPriorities string ""
x2App.server.binderModule string "binder"
sctp.interfaceTableModule string
sctp.routingTableModule string
sctp.crcMode string "declared"
sctp.numGapReports int 3
sctp.rtoInitial double 3s
sctp.rtoMin double 1s
sctp.rtoMax double 60s
sctp.rtoAlpha double 0.125
sctp.rtoBeta double 0.250
sctp.maxBurst int 4
sctp.maxBurstVariant string "maxBurst"
sctp.initialWindow int 0
sctp.assocMaxRetrans int 10
sctp.pathMaxRetrans int 5
sctp.maxInitRetrans int 8
sctp.sackPeriod double 200ms
sctp.sackFrequency int 2
sctp.reactivatePrimaryPath bool false
sctp.sendQueueLimit int 0
sctp.validCookieLifetime double 10s
sctp.enableHeartbeats bool true
sctp.hbInterval double 30s
sctp.sendHeartbeatsOnActivePaths bool false
sctp.nagleEnabled bool true
sctp.naglePoint int 1468
sctp.fragPoint int 1452
sctp.fastRecoverySupported bool true
sctp.sctpAlgorithmClass string "SctpAlg"
sctp.ccModule int 0

RFC4960=0

sctp.osbWithHeader bool false
sctp.RTXMethod int 0

0=Once after 3 Sacks; 1=once per RTT; 2=Switch off Fast Retransmit; 3=Always after 3 Sacks

sctp.ssModule int 0
sctp.arwnd int 65535
sctp.swsLimit int 3000

Limit for SWS

sctp.udpEncapsEnabled bool false
sctp.natFriendly bool false
sctp.bytesToAddPerRcvdChunk int 0

for flowcontrol

sctp.bytesToAddPerPeerChunk int 0

for flowcontrol

sctp.tellArwnd bool false

for flowcontrol

sctp.messageAcceptLimit int 0

for flowcontrol

sctp.fairStart double 0s
sctp.fairStop double 0s
sctp.streamsToPaths string ""
sctp.startEndToEndDelay int 0
sctp.stopEndToEndDelay int 10
sctp.throughputInterval double 1
sctp.auth bool false
sctp.chunks string ""
sctp.padding bool false
sctp.addIP bool false
sctp.addTime double 0s
sctp.addAddress string ""
sctp.addIpType string "0"

SET_PRIMARY_ADDRESS=49156,ADD_IP_ADDRESS=49153,DELETE_IP_ADDRESS=49154

sctp.packetDrop bool false
sctp.sackNow bool false
sctp.highSpeedCC bool false
sctp.checkSackSeqNumber bool false
sctp.nrSack bool false
sctp.disableReneging bool false
sctp.gapReportLimit int 100000000
sctp.gapListOptimizationVariant string "none"
sctp.smartOverfullSACKHandling bool false
sctp.allowQoSTracking bool false
sctp.qosTrackingInterval double 1.0s
sctp.cmtSendAllVariant string "normal"
sctp.cmtRetransmissionVariant string "normal"
sctp.cmtCUCVariant string "normal"
sctp.cmtBufferSplitVariant string "none"
sctp.cmtBufferSplittingUsesOSB bool false
sctp.cmtUseSFR bool true
sctp.cmtUseDAC bool true
sctp.cmtUseFRC bool true
sctp.cmtSmartT3Reset bool true
sctp.cmtSmartFastRTX bool true
sctp.cmtSmartReneging bool false
sctp.cmtSlowPathRTTUpdate bool false
sctp.cmtChunkReschedulingVariant string "none"
sctp.cmtChunkReschedulingThreshold double 0.5
sctp.cmtMovedChunksReduceCwnd bool true
sctp.movedChunkFastRTXFactor double 2.0
sctp.cmtSackPath string "standard"
sctp.strictCwndBooking bool false
sctp.cmtCCVariant string "off"

CMT Congestion Control Variant off = use over every path the default RFC4960 CC (New Reno) lia = First resource pooling congestion control RFC6356 adapted for SCTP - https://datatracker.ietf.org/doc/rfc6356/ olia = alternative MPTCP CC, adapted for SCTP- https://tools.ietf.org/html/draft-khalili-mptcp-congestion-control-05 cmtrpv1 = First resource pooling based CC for SCTP - https://www.tdr.wiwi.uni-due.de/fileadmin/fileupload/I-TDR/SCTP/Paper/AINA2010.pdf cmtrpv2 = Updated version of cmtrpv1 - https://www.tdr.wiwi.uni-due.de/fileadmin/fileupload/I-TDR/SCTP/Paper/ConTEL2011.pdf

sctp.cmtCCPathGroups string ""
sctp.rpPathBlocking bool false
sctp.rpScaleBlockingTimeout bool false
sctp.rpMinCwnd int 1
at.displayStringTextFormat string "processed %p pk (%l)"

determines the text that is written on top of the submodule

at.forwardServiceRegistration bool true
at.forwardProtocolRegistration bool true
tn.displayStringTextFormat string "processed %p pk (%l)"

determines the text that is written on top of the submodule

tn.forwardServiceRegistration bool true
tn.forwardProtocolRegistration bool true
nl.displayStringTextFormat string "processed %p pk (%l)"

determines the text that is written on top of the submodule

nl.forwardServiceRegistration bool true
nl.forwardProtocolRegistration bool true
trafficFlowFilter.binderModule string "binder"
trafficFlowFilter.bearerConfiguratorModule string "bearerConfigurator"

Where a core-network instance registers for QFI-rule delivery

trafficFlowFilter.fastForwarding bool true
gtpUser.binderModule string "binder"
gtpUser.interfaceTableModule string

Path to the InterfaceTable module

gtpUser.localPort int 31
gtpUser.tunnelPeerPort int 31
gtpUserX2.binderModule string "binder"
gtpUserX2.localPort int 32
gtpUserX2.tunnelPeerPort int 32

Source code

//
// Implements a gNodeB for a 5G network. It extends the ~eNodeB module
// by providing 5G connectivity to ~NrUe modules. It can be used in either StandAlone (SA) or
// Non-StandAlone (NSA) 5G deployments. In the former case, it is directly connected to a ~Upf
// module. In the latter case, this module can be configured as a secondary node of
// a ~eNodeB module, thus enabling E-UTRA Dual Connectivity (EN-DC).
//
module gNodeB extends eNodeB
{
    parameters:
        @networkNode();
        @display("i=device/antennatower;bgb=1260,600");
        collector.typename = default("GNodeBStatsCollector");
        gateway = default("upf"); // Change this path if the gateway node is inside a compound module
        nodeType = "GNODEB";        // DO NOT CHANGE
        cellularNic.typename = default(hasD2D ? "NrNicEnbD2D" : "NrNicEnb");
}
File: src/simu5g/nodes/gNodeB.ned