gNodeB

Package: simu5g.nodes.NR

gNodeB

compound module

This module implements a gNodeB for a 5G LTE 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

Keeps the table of network interfaces.

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

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

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

This module includes data structures and functions used to support local operations at the...

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

BaseStationStatsCollector: This module collects the radio network information of an eNodeB, which can be accessed by the...

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

LteNicEnb: The LteNicEnb module is a network interface that provides LTE connectivity within an eNodeB.

ICellularNic: Interface for the 3GPP Stack.

Source:
cellularNic: <default("LteNicEnb")> like ICellularNic {
    parameters:
        @display("p=433,520");
        nodeType = parent.nodeType;
} pppIf : PppInterface

This module implements a PPP network interface.

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

This module implements a PPP network interface.

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

This module implements a PPP network interface.

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

Ipv4NetworkLayer: Network layer of an IPv4 node.

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

Ipv6NetworkLayer: Represents an IPv6 network layer (L3).

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: Generic application interface.

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

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

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

TCP protocol implementation.

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

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

This module represents the container for all X2 applications that an e/gNodeB instantiates to...

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

Implements the SCTP protocol.

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

	    // message dispatcher for SAP between application and transport layer at : MessageDispatcher

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

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

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

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

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

This module implements a simplified version of the user plane of the GPRS Tunneling Protocol (GTP).

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

This module implements a simplified version of the user plane of the GPRS Tunneling Protocol (GTP)...

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

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

ExtClientServer_bgCells

ExtClientServerExample network

ExtClientServerExample

ExtMecAppExample network (no description)
ExtServerExample network

ExtServerExample

ExtUeAppExample network (no description)
ExtUeAppMecAppExample network (no description)

Extends

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.

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 0

TODO: this is not a real parameter

macCellId int 0

TODO: this is not a real parameter

txPower double 100mw
hasIpv4 bool true
hasIpv6 bool false
numApps int 0
numX2Apps int 0

no of X2 apps. Specify the app types in INI file with x2App[0..1].typename="X2AppClient" syntax

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.broadcastMessageInterval 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.numRus int 0

Number of Remote Units

cellInfo.ruRange int 0

Range of Remote Units

cellInfo.ruStartingAngle double 0deg

Initial angle for remote units (used for graphical representation)

cellInfo.ruTxPower string "0;"

CSV string specifying the TX power for each remote unit (integer values)

cellInfo.antennaCws string "1;"

Codewords for each antenna, first position refers to the MACRO

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

it can be: "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.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

//
// This module implements a gNodeB for a 5G LTE 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("NRNicEnb");
}
File: src/nodes/NR/gNodeB.ned