SingleCell

Package: simu5g.simulations.lte.networks

SingleCell

network

The minimal LTE topology: one eNodeB connected to an EPC PgwStandard, which faces a router and a server, plus numUe LteUe terminals.

channelControl : LteChannelControl

Utility module that records the position of each LTE radio module in the network.

Source:
channelControl: LteChannelControl {
    @display("p=50,25;is=s");
} routingRecorder : RoutingTableRecorder
[from inet] ↗

Records changes in the routing tables (~Ipv4RoutingTable) and interface tables (~InterfaceTable) of...

Source:
routingRecorder: RoutingTableRecorder {
    @display("p=50,75;is=s");
} configurator : Ipv4NetworkConfigurator
[from inet] ↗

This module assigns IPv4 addresses and sets up static routing for an IPv4 network.

Source:
configurator: Ipv4NetworkConfigurator {
    @display("p=50,125;is=s");
} binder : Binder

The Binder module functions as a global repository of network-related information utilized...

Source:
binder: Binder {
    @display("p=50,175;is=s");
} bearerConfigurator : BearerConfigurator

Central configurator of the network's data radio bearers.

Source:
bearerConfigurator: BearerConfigurator {
    @display("p=50,225;is=s");
} carrierAggregation : CarrierAggregation

Implements the Carrier Aggregation (CA) functionality used at the Medium Access Control (MAC) layer...

Source:
carrierAggregation: CarrierAggregation {
    @display("p=50,275;is=s");
} server : StandardHost
[from inet] ↗

IPv4 host with SCTP, TCP, UDP layers and applications.

Source:
server: StandardHost {
    @display("p=212,118;is=n;i=device/server");
} router : Router
[from inet] ↗

IPv4 router that supports wireless, Ethernet, PPP and external interfaces.

Source:
router: Router {
    @display("p=321,136;i=device/smallrouter");
} pgw : PgwStandard

Implements a simplified EPC PDN Gateway (P-GW) of a 4G LTE network.

Source:
pgw: PgwStandard {
    @display("p=520,175;is=l");
} eNB : eNodeB

Models an evolved Node B (eNB) of a 4G LTE network.

Source:
eNB: eNodeB {
    @display("p=391,260;is=vl");
} ue[numUe] : LteUe

Models a User Equipment (UE) in a 4G LTE network.

Source:
ue[numUe]: LteUe {
    @display("p=783,278");
}

Usage diagram

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

Parameters

Name Type Default value Description
numUe int 1

Properties

Name Value Description
isNetwork
display i=block/network2;bgb=991,558;bgi=background/budapest

Unassigned submodule parameters

Name Type Default value Description
channelControl.pMax double 20mW

Maximum sending power used for this network (in mW)

channelControl.sat double -110dBm

Signal attenuation threshold (in dBm)

channelControl.alpha double 2

Path loss coefficient

channelControl.carrierFrequency double 2.4GHz

Base carrier frequency of all the channels (in Hz)

channelControl.numChannels int 1

Number of radio channels (frequencies)

routingRecorder.enabled bool true
configurator.minLinkWeight double 1E-3
configurator.configureIsolatedNetworksSeparatly bool false
configurator.config xml xml("")

XML configuration parameters for IP address assignment and adding manual routes

configurator.assignAddresses bool true

assign IP addresses to all interfaces in the network

configurator.assignUniqueAddresses bool true

avoid using the same address and raise an error if not possible

configurator.assignDisjunctSubnetAddresses bool true

avoid using the same address prefix and netmask on different links when assigning IP addresses to interfaces

configurator.addStaticRoutes bool true

add static routes to the routing tables of all nodes to route to all destination interfaces (only where applicable; turn off when config file contains manual routes)

configurator.addDefaultRoutes bool true

add default routes if all routes from a source node go through the same gateway (used only if addStaticRoutes is true)

configurator.addSubnetRoutes bool true

add subnet routes instead of destination interface routes (only where applicable; used only if addStaticRoutes is true)

configurator.addDirectRoutes bool true

add direct routes (i.e. directly connected interfaces) to the routing table (used only if addStaticRoutes is true)

configurator.optimizeRoutes bool true

optimize routing tables by merging routes, the resulting routing table might route more packets than the original (used only if addStaticRoutes is true)

configurator.dumpTopology bool false

print extracted network topology to the module output

configurator.dumpLinks bool false

print recognized network links to the module output

configurator.dumpAddresses bool false

print assigned IP addresses for all interfaces to the module output

configurator.dumpRoutes bool false

print configured and optimized routing tables for all nodes to the module output

configurator.dumpConfig string ""

write configuration into the given config file that can be fed back to speed up subsequent runs (network configurations)

binder.blerShift int 0
binder.maxDataRatePerRb double 1.16Mbps
binder.printTrafficGeneratorConfig bool false
bearerConfigurator.binderModule string "binder"
bearerConfigurator.staticDrbs object []

JSON array: [{coreNetwork, ue, drbId, profile, mappedQfis, filters, lcg, rlcMode, legs, pduSessionType, upperProtocol, isDefault, suppressSdapHeader, gbr, packetDelayBudget, packetErrorRate, qosPriorityLevel}, ...]; see banner comment for details

bearerConfigurator.onDemandDrbs object [ // JSON array, staticDrbs schema minus "drbId" (and "ue" optional): bearers created when traffic first matches them; the default value lets both stack kinds run unauthored; see banner comment for details {coreNetwork: "epc", filters: ["VoIP*"], lcg: 0, rlcMode: "UM"}, {coreNetwork: "epc", filters: ["gaming*"], lcg: 2, rlcMode: "UM"}, {coreNetwork: "epc", filters: ["VoDPacket*", "VoDFinishPacket*"], lcg: 1, rlcMode: "UM"}, {coreNetwork: "epc", isDefault: true, lcg: 3, rlcMode: "UM"}, {coreNetwork: "5gc", isDefault: true, suppressSdapHeader: true, lcg: 3, rlcMode: "UM"} ]
bearerConfigurator.drbProfiles object {}

JSON map of named field groups referenced by the staticDrbs entries' "profile" field, e.g. {voice: {rlcMode: "UM", gbr: true, ...}, ...}; see banner comment

bearerConfigurator.dlQfiRules object [{dscpAsQfi: true}]

QFI classification rules, delivered to their evaluation sites (see banner comment)

bearerConfigurator.ulQfiRules object []

JSON array of uplink QFI-assignment rules [{ue, filter, qfi|dscpAsQfi}, ...], delivered to the UEs' QoS-flow classifiers; [] = classify nothing

bearerConfigurator.amPerThreshold double 1e-4

QoS-derived RAN defaults for definitions that do not state rlcMode/lcg themselves (operator policy, not spec-mandated: 3GPP standardizes the QoS characteristics, the RAN chooses what to make of them)

bearerConfigurator.lcgPriorityBounds object [25, 50, 75]

Lcg derivation: qosPriorityLevel < bounds[k] -> LCG k, else LCG 3; strictly ascending, one bound between each pair of adjacent LCGs

carrierAggregation.componentCarrier.binderModule string "binder"
carrierAggregation.componentCarrier.carrierFrequency double 2GHz

Carrier Frequency (GHz)

carrierAggregation.componentCarrier.numBands int 6

Number of bands for this channel

carrierAggregation.componentCarrier.numerologyIndex int 0

Numerology index

carrierAggregation.componentCarrier.useTdd bool false
carrierAggregation.componentCarrier.tddNumSymbolsDl int 7
carrierAggregation.componentCarrier.tddNumSymbolsUl int 7
server.status.initialStatus string "UP"

TODO @signal, @statistic

server.pcapRecorder.verbose bool true

whether to log packets on the module output

server.pcapRecorder.pcapFile string ""

the PCAP file to be written

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

maximum number of bytes to record per packet

server.pcapRecorder.dumpBadFrames bool true

enable dump of frames with hasBitError

server.pcapRecorder.moduleNamePatterns string "wlan[*] eth[*] ppp[*]"

space-separated list of sibling module names to listen on

server.pcapRecorder.sendingSignalNames string "packetSentToLower"

space-separated list of outbound packet signals to subscribe to

server.pcapRecorder.receivingSignalNames string "packetReceivedFromLower"

space-separated list of inbound packet signals to subscribe to

server.pcapRecorder.dumpProtocols string "ethernetmac ppp ieee80211mac"

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

server.pcapRecorder.packetFilter object "*"

which packets are considered, matches all packets by default

server.pcapRecorder.helpers string ""

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

server.pcapRecorder.alwaysFlush bool false

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

server.pcapRecorder.displayStringTextFormat string "rec: %n pks"
server.interfaceTable.displayAddresses bool false

whether to display IP addresses on links

server.cb.displayStringTextFormat string "processed %p pk (%l)"

determines the text that is written on top of the submodule

server.cb.forwardServiceRegistration bool true
server.cb.forwardProtocolRegistration bool true
server.bl.displayStringTextFormat string "processed %p pk (%l)"

determines the text that is written on top of the submodule

server.bl.forwardServiceRegistration bool true
server.bl.forwardProtocolRegistration bool true
server.li.displayStringTextFormat string "processed %p pk (%l)"

determines the text that is written on top of the submodule

server.li.forwardServiceRegistration bool true
server.li.forwardProtocolRegistration bool true
server.eth.bitrate double
server.nl.displayStringTextFormat string "processed %p pk (%l)"

determines the text that is written on top of the submodule

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

determines the text that is written on top of the submodule

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

determines the text that is written on top of the submodule

server.at.forwardServiceRegistration bool true
server.at.forwardProtocolRegistration bool true
router.status.initialStatus string "UP"

TODO @signal, @statistic

router.pcapRecorder.verbose bool true

whether to log packets on the module output

router.pcapRecorder.pcapFile string ""

the PCAP file to be written

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

maximum number of bytes to record per packet

router.pcapRecorder.dumpBadFrames bool true

enable dump of frames with hasBitError

router.pcapRecorder.moduleNamePatterns string "wlan[*] eth[*] ppp[*]"

space-separated list of sibling module names to listen on

router.pcapRecorder.sendingSignalNames string "packetSentToLower"

space-separated list of outbound packet signals to subscribe to

router.pcapRecorder.receivingSignalNames string "packetReceivedFromLower"

space-separated list of inbound packet signals to subscribe to

router.pcapRecorder.dumpProtocols string "ethernetmac ppp ieee80211mac"

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

router.pcapRecorder.packetFilter object "*"

which packets are considered, matches all packets by default

router.pcapRecorder.helpers string ""

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

router.pcapRecorder.alwaysFlush bool false

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

router.pcapRecorder.displayStringTextFormat string "rec: %n pks"
router.interfaceTable.displayAddresses bool false

whether to display IP addresses on links

router.cb.displayStringTextFormat string "processed %p pk (%l)"

determines the text that is written on top of the submodule

router.cb.forwardServiceRegistration bool true
router.cb.forwardProtocolRegistration bool true
router.bl.displayStringTextFormat string "processed %p pk (%l)"

determines the text that is written on top of the submodule

router.bl.forwardServiceRegistration bool true
router.bl.forwardProtocolRegistration bool true
router.li.displayStringTextFormat string "processed %p pk (%l)"

determines the text that is written on top of the submodule

router.li.forwardServiceRegistration bool true
router.li.forwardProtocolRegistration bool true
router.eth.bitrate double
router.nl.displayStringTextFormat string "processed %p pk (%l)"

determines the text that is written on top of the submodule

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

determines the text that is written on top of the submodule

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

determines the text that is written on top of the submodule

router.at.forwardServiceRegistration bool true
router.at.forwardProtocolRegistration bool true
router.bgp.interfaceTableModule string

The path to the InterfaceTable module

router.bgp.routingTableModule string
router.bgp.ospfRoutingModule string parent.hasOspf ? "^.ospf" : ""
pgw.status.initialStatus string "UP"

TODO @signal, @statistic

pgw.pcapRecorder.verbose bool true

whether to log packets on the module output

pgw.pcapRecorder.pcapFile string ""

the PCAP file to be written

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

maximum number of bytes to record per packet

pgw.pcapRecorder.dumpBadFrames bool true

enable dump of frames with hasBitError

pgw.pcapRecorder.moduleNamePatterns string "wlan[*] eth[*] ppp[*]"

space-separated list of sibling module names to listen on

pgw.pcapRecorder.sendingSignalNames string "packetSentToLower"

space-separated list of outbound packet signals to subscribe to

pgw.pcapRecorder.receivingSignalNames string "packetReceivedFromLower"

space-separated list of inbound packet signals to subscribe to

pgw.pcapRecorder.dumpProtocols string "ethernetmac ppp ieee80211mac"

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

pgw.pcapRecorder.packetFilter object "*"

which packets are considered, matches all packets by default

pgw.pcapRecorder.helpers string ""

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

pgw.pcapRecorder.alwaysFlush bool false

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

pgw.pcapRecorder.displayStringTextFormat string "rec: %n pks"
pgw.interfaceTable.displayAddresses bool false

whether to display IP addresses on links

pgw.cb.displayStringTextFormat string "processed %p pk (%l)"

determines the text that is written on top of the submodule

pgw.cb.forwardServiceRegistration bool true
pgw.cb.forwardProtocolRegistration bool true
pgw.bl.displayStringTextFormat string "processed %p pk (%l)"

determines the text that is written on top of the submodule

pgw.bl.forwardServiceRegistration bool true
pgw.bl.forwardProtocolRegistration bool true
pgw.li.displayStringTextFormat string "processed %p pk (%l)"

determines the text that is written on top of the submodule

pgw.li.forwardServiceRegistration bool true
pgw.li.forwardProtocolRegistration bool true
pgw.eth.bitrate double
pgw.nl.displayStringTextFormat string "processed %p pk (%l)"

determines the text that is written on top of the submodule

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

determines the text that is written on top of the submodule

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

determines the text that is written on top of the submodule

pgw.at.forwardServiceRegistration bool true
pgw.at.forwardProtocolRegistration bool true
pgw.dnPpp.pcapRecorder.verbose bool true

whether to log packets on the module output

pgw.dnPpp.pcapRecorder.pcapFile string ""

the PCAP file to be written

pgw.dnPpp.pcapRecorder.fileFormat string "pcapng"
pgw.dnPpp.pcapRecorder.snaplen int 65535

maximum number of bytes to record per packet

pgw.dnPpp.pcapRecorder.dumpBadFrames bool true

enable dump of frames with hasBitError

pgw.dnPpp.pcapRecorder.sendingSignalNames string "packetSentToLower"

space-separated list of outbound packet signals to subscribe to

pgw.dnPpp.pcapRecorder.receivingSignalNames string "packetReceivedFromLower"

space-separated list of inbound packet signals to subscribe to

pgw.dnPpp.pcapRecorder.dumpProtocols string "ethernetmac ppp ieee80211mac"

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

pgw.dnPpp.pcapRecorder.packetFilter object "*"

which packets are considered, matches all packets by default

pgw.dnPpp.pcapRecorder.helpers string ""

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

pgw.dnPpp.pcapRecorder.alwaysFlush bool false

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

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

The path to the InterfaceTable module

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

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

pgw.dnPpp.ppp.mtu int 4470B
pgw.dnPpp.ppp.stopOperationExtraTime double -1s

extra time after lifecycle stop operation finished

pgw.dnPpp.ppp.stopOperationTimeout double 2s

timeout value for lifecycle stop operation

pgw.trafficFlowFilter.binderModule string "binder"
pgw.trafficFlowFilter.bearerConfiguratorModule string "bearerConfigurator"

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

pgw.trafficFlowFilter.fastForwarding bool true
pgw.gtp_user.binderModule string "binder"
pgw.gtp_user.interfaceTableModule string

Path to the InterfaceTable module

pgw.gtp_user.ipOutInterface string ""

Optional: manual specification of outgoing interface for received IP

pgw.gtp_user.localPort int 31
pgw.gtp_user.tunnelPeerPort int 31
pgw.gtp_user.gateway string ""

Optional

eNB.interfaceTable.displayAddresses bool false

whether to display IP addresses on links

eNB.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

eNB.mobility.coordinateSystemModule string ""

module path of the geographic coordinate system module

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

format string for the mobility module's display string text

eNB.mobility.updateDisplayString bool true

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

eNB.mobility.constraintAreaMinX double -inf m

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

eNB.mobility.constraintAreaMinY double -inf m

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

eNB.mobility.constraintAreaMinZ double -inf m

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

eNB.mobility.constraintAreaMaxX double inf m

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

eNB.mobility.constraintAreaMaxY double inf m

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

eNB.mobility.constraintAreaMaxZ double inf m

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

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

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

eNB.mobility.updateFromDisplayString bool true

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

eNB.cellInfo.constraintAreaMinX double -1m/0

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

eNB.cellInfo.constraintAreaMinY double -1m/0

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

eNB.cellInfo.constraintAreaMaxX double 1m/0

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

eNB.cellInfo.constraintAreaMaxY double 1m/0

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

eNB.cellInfo.beaconInterval double 1s

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

eNB.cellInfo.microCell bool false

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

eNB.cellInfo.rbyDl int 12

Number of sub-carriers per RB in DL

eNB.cellInfo.rbyUl int 12

Number of sub-carriers per RB in UL

eNB.cellInfo.rbxDl int 7

Number of OFDM symbols per slot in DL

eNB.cellInfo.rbxUl int 7

Number of OFDM symbols per slot in UL

eNB.cellInfo.rbPilotDl int 3

Number of pilot Resource Elements per RB in DL

eNB.cellInfo.rbPilotUl int 0

Number of pilot Resource Elements per RB in UL

eNB.cellInfo.signalDl int 1

Number of signaling symbols for each Resource Block in DL

eNB.cellInfo.signalUl int 1

Number of signaling symbols for each Resource Block in UL

eNB.cellInfo.numPreferredBands int 1

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

eNB.cellInfo.binderModule string "binder"
eNB.collector.collectorType string

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

eNB.pppIf.pcapRecorder.verbose bool true

whether to log packets on the module output

eNB.pppIf.pcapRecorder.pcapFile string ""

the PCAP file to be written

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

maximum number of bytes to record per packet

eNB.pppIf.pcapRecorder.dumpBadFrames bool true

enable dump of frames with hasBitError

eNB.pppIf.pcapRecorder.sendingSignalNames string "packetSentToLower"

space-separated list of outbound packet signals to subscribe to

eNB.pppIf.pcapRecorder.receivingSignalNames string "packetReceivedFromLower"

space-separated list of inbound packet signals to subscribe to

eNB.pppIf.pcapRecorder.dumpProtocols string "ethernetmac ppp ieee80211mac"

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

eNB.pppIf.pcapRecorder.packetFilter object "*"

which packets are considered, matches all packets by default

eNB.pppIf.pcapRecorder.helpers string ""

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

eNB.pppIf.pcapRecorder.alwaysFlush bool false

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

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

The path to the InterfaceTable module

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

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

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

extra time after lifecycle stop operation finished

eNB.pppIf.ppp.stopOperationTimeout double 2s

timeout value for lifecycle stop operation

eNB.x2ppp.pcapRecorder.verbose bool true

whether to log packets on the module output

eNB.x2ppp.pcapRecorder.pcapFile string ""

the PCAP file to be written

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

maximum number of bytes to record per packet

eNB.x2ppp.pcapRecorder.dumpBadFrames bool true

enable dump of frames with hasBitError

eNB.x2ppp.pcapRecorder.sendingSignalNames string "packetSentToLower"

space-separated list of outbound packet signals to subscribe to

eNB.x2ppp.pcapRecorder.receivingSignalNames string "packetReceivedFromLower"

space-separated list of inbound packet signals to subscribe to

eNB.x2ppp.pcapRecorder.dumpProtocols string "ethernetmac ppp ieee80211mac"

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

eNB.x2ppp.pcapRecorder.packetFilter object "*"

which packets are considered, matches all packets by default

eNB.x2ppp.pcapRecorder.helpers string ""

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

eNB.x2ppp.pcapRecorder.alwaysFlush bool false

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

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

The path to the InterfaceTable module

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

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

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

extra time after lifecycle stop operation finished

eNB.x2ppp.ppp.stopOperationTimeout double 2s

timeout value for lifecycle stop operation

eNB.pppMEHostIf.pcapRecorder.verbose bool true

whether to log packets on the module output

eNB.pppMEHostIf.pcapRecorder.pcapFile string ""

the PCAP file to be written

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

maximum number of bytes to record per packet

eNB.pppMEHostIf.pcapRecorder.dumpBadFrames bool true

enable dump of frames with hasBitError

eNB.pppMEHostIf.pcapRecorder.sendingSignalNames string "packetSentToLower"

space-separated list of outbound packet signals to subscribe to

eNB.pppMEHostIf.pcapRecorder.receivingSignalNames string "packetReceivedFromLower"

space-separated list of inbound packet signals to subscribe to

eNB.pppMEHostIf.pcapRecorder.dumpProtocols string "ethernetmac ppp ieee80211mac"

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

eNB.pppMEHostIf.pcapRecorder.packetFilter object "*"

which packets are considered, matches all packets by default

eNB.pppMEHostIf.pcapRecorder.helpers string ""

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

eNB.pppMEHostIf.pcapRecorder.alwaysFlush bool false

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

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

The path to the InterfaceTable module

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

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

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

extra time after lifecycle stop operation finished

eNB.pppMEHostIf.ppp.stopOperationTimeout double 2s

timeout value for lifecycle stop operation

eNB.udp.interfaceTableModule string

The path to the InterfaceTable module

eNB.udp.icmpModule string "^.ipv4.icmp"
eNB.udp.icmpv6Module string "^.ipv6.icmpv6"
eNB.udp.crcMode string "declared"
eNB.udp.defaultMulticastLoop bool true
eNB.tcp.crcMode string "declared"
eNB.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)

eNB.tcp.delayedAcksEnabled bool false

delayed ACK algorithm (RFC 1122) enabled/disabled

eNB.tcp.nagleEnabled bool true

Nagle's algorithm (RFC 896) enabled/disabled

eNB.tcp.limitedTransmitEnabled bool false

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

eNB.tcp.increasedIWEnabled bool false

Increased Initial Window (RFC 3390) enabled/disabled

eNB.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)

eNB.tcp.windowScalingSupport bool false

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

eNB.tcp.windowScalingFactor int -1

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

eNB.tcp.timestampSupport bool false

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

eNB.tcp.mss int 536

Maximum Segment Size (RFC 793) (header option)

eNB.tcp.msl int 120s

Maximum Segment Lifetime

eNB.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")

eNB.tcp.useDataNotification bool false

turn the notifications for arrived data on or off

eNB.tcp.dupthresh int 3

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

eNB.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...

eNB.tcp.stopOperationExtraTime double 0s

extra time after lifecycle stop operation finished

eNB.tcp.stopOperationTimeout double 2s

timeout value for lifecycle stop operation

eNB.tcp.ecnWillingness bool false

true if willing to use ECN

eNB.tcp.dctcpGamma double 0.0625

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

eNB.x2App.client.localAddress string ""

comma separated list of addresses

eNB.x2App.client.localPort int 0

port number to listen on

eNB.x2App.client.connectAddress string

server address (may be symbolic)

eNB.x2App.client.connectPort int 5000

port number to connect to

eNB.x2App.client.startTime double 0s

time first session begins

eNB.x2App.client.numRequestsPerSession int 1

number of requests sent per session

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

length of a request (bytes)

eNB.x2App.client.thinkTime double 0s

time gap between requests

eNB.x2App.client.waitToClose double 0s

time to wait between last message sent and abort

eNB.x2App.client.reconnectInterval double 0s

if connection breaks, waits this much before trying to reconnect

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

echoes received packages when true

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

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

eNB.x2App.client.prValue double 0

for PR-SCTP

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

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

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

time of finishing sending, negative values mean forever

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

comma separated list of addresses

eNB.x2App.server.localPort int 0

port number to listen on

eNB.x2App.server.echo bool false

echoes received packages when true

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

number of requests sent per session

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

length of a request (bytes)

eNB.x2App.server.thinkTime double 0s

time gap between requests

eNB.x2App.server.waitToClose double 0s

time to wait between last message sent and abort

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

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

eNB.x2App.server.prValue double 0

for PR-SCTP

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

RFC4960=0

eNB.sctp.osbWithHeader bool false
eNB.sctp.RTXMethod int 0

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

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

Limit for SWS

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

for flowcontrol

eNB.sctp.bytesToAddPerPeerChunk int 0

for flowcontrol

eNB.sctp.tellArwnd bool false

for flowcontrol

eNB.sctp.messageAcceptLimit int 0

for flowcontrol

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

SET_PRIMARY_ADDRESS=49156,ADD_IP_ADDRESS=49153,DELETE_IP_ADDRESS=49154

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

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

determines the text that is written on top of the submodule

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

determines the text that is written on top of the submodule

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

determines the text that is written on top of the submodule

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

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

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

Path to the InterfaceTable module

eNB.gtpUser.localPort int 31
eNB.gtpUser.tunnelPeerPort int 31
eNB.gtpUserX2.binderModule string "binder"
eNB.gtpUserX2.localPort int 32
eNB.gtpUserX2.tunnelPeerPort int 32
ue.interfaceTable.displayAddresses bool false

whether to display IP addresses on links

ue.eth.bitrate double
ue.at.displayStringTextFormat string "processed %p pk (%l)"

determines the text that is written on top of the submodule

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

determines the text that is written on top of the submodule

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

determines the text that is written on top of the submodule

ue.nl.forwardServiceRegistration bool true
ue.nl.forwardProtocolRegistration bool true
ue.pcapRecorder.verbose bool true

whether to log packets on the module output

ue.pcapRecorder.pcapFile string ""

the PCAP file to be written

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

maximum number of bytes to record per packet

ue.pcapRecorder.dumpBadFrames bool true

enable dump of frames with hasBitError

ue.pcapRecorder.moduleNamePatterns string "wlan[*] eth[*] ppp[*]"

space-separated list of sibling module names to listen on

ue.pcapRecorder.sendingSignalNames string "packetSentToLower"

space-separated list of outbound packet signals to subscribe to

ue.pcapRecorder.receivingSignalNames string "packetReceivedFromLower"

space-separated list of inbound packet signals to subscribe to

ue.pcapRecorder.dumpProtocols string "ethernetmac ppp ieee80211mac"

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

ue.pcapRecorder.packetFilter object "*"

which packets are considered, matches all packets by default

ue.pcapRecorder.helpers string ""

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

ue.pcapRecorder.alwaysFlush bool false

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

ue.pcapRecorder.displayStringTextFormat string "rec: %n pks"

Source code

//
// The minimal LTE topology: one ~eNodeB connected to an EPC ~PgwStandard, which
// faces a router and a server, plus numUe ~LteUe terminals.
//
network SingleCell
{
    parameters:
        int numUe = default(1);
        @display("i=block/network2;bgb=991,558;bgi=background/budapest");
    submodules:
        channelControl: LteChannelControl {
            @display("p=50,25;is=s");
        }
        routingRecorder: RoutingTableRecorder {
            @display("p=50,75;is=s");
        }
        configurator: Ipv4NetworkConfigurator {
            @display("p=50,125;is=s");
        }
        binder: Binder {
            @display("p=50,175;is=s");
        }
        bearerConfigurator: BearerConfigurator {
            @display("p=50,225;is=s");
        }
        carrierAggregation: CarrierAggregation {
            @display("p=50,275;is=s");
        }
        server: StandardHost {
            @display("p=212,118;is=n;i=device/server");
        }
        router: Router {
            @display("p=321,136;i=device/smallrouter");
        }
        pgw: PgwStandard {
            @display("p=520,175;is=l");
        }
        eNB: eNodeB {
            @display("p=391,260;is=vl");
        }
        ue[numUe]: LteUe {
            @display("p=783,278");
        }
    connections:
        server.pppg++ <--> Eth10G <--> router.pppg++;
        router.pppg++ <--> Eth10G <--> pgw.dnPppg;
        pgw.pppg++ <--> Eth10G <--> eNB.ppp;
}
File: simulations/lte/networks/SingleCell.ned