Packages
ned
| Name | Type | Description |
|---|---|---|
| DatarateChannel | channel | (no description) |
| DelayChannel | channel | (no description) |
| IBidirectionalChannel | module interface | (no description) |
| IdealChannel | channel | (no description) |
| IUnidirectionalChannel | module interface | (no description) |
simu5g.apps.alert
| Name | Type | Description |
|---|---|---|
| AlertReceiver | simple module |
Receives alert messages sent by nodes running an AlertSender application. It listens for incoming packets and logs their arrival. It records end-to-end delay statistics. The module also supports multicast by joining local multicast groups. |
| AlertSender | simple module |
Generates periodic alert messages and sends them to a specified multicast group or unicast destination. The packet size, transmission period, start time, and stop time are configurable using the corresponding parameters. The destination address must be a multicast IP address. This module can be used in simulations that require periodic alert generation via device-to-device (D2D) communications, such as vehicular networks. |
simu5g.apps.burst
| Name | Type | Description |
|---|---|---|
| BurstReceiver | simple module |
Models an application that receives bursts of packets from a BurstSender application module. It binds to a specified UDP local port, logs the received packets, and records statistics such as packet delay. |
| BurstSender | simple module |
Models an application that sends bursts of packets to a BurstReceiver application. During each burst, the application sends a configurable number of packets at regular intervals. The time interval between bursts can also be configured. |
simu5g.apps.cbr
| Name | Type | Description |
|---|---|---|
| CbrReceiver | simple module |
Receives Constant Bit Rate (CBR) traffic sent by a CbrSender application module. It binds to a specified local port and records statistics such as packet delay, jitter, packet loss, throughput, and the total amount of bytes received. |
| CbrSender | simple module |
Simple module for generating Constant Bit Rate (CBR) traffic. This module periodically sends packets of a specified size to a designated address and port. The intervals between packets and the overall duration of the communication are configurable. The module emits statistics related to the generated throughput and the total amount of bytes sent. |
simu5g.apps.d2dMultihop
| Name | Type | Description |
|---|---|---|
| MultihopD2D | simple module |
Disseminates event notifications using multihop D2D transmissions. New messages are generated upon the reception of external events, signaled by the EventGenerator module. The application sends the message to an IP multicast address, which is then mapped to D2D multicast transmission mode within the LTE/NR protocol stack. When the application receives a message, it can relay it to the same IP multicast address in order to extend the coverage of the D2D transmission. To avoid flooding, two mechanisms can be used: |
simu5g.apps.d2dMultihop.eventGenerator
| Name | Type | Description |
|---|---|---|
| EventGenerator | simple module |
Only used in conjunction with UEs running a MultihopD2D application instance. It generates periodic "events" (e.g., a collision between vehicles) at random positions within the network (or by randomly selecting a node) and notifies a MultihopD2D application via a direct method call. The MultihopD2D application, in turn, broadcasts the notification message to surrounding UEs. |
simu5g.apps.d2dMultihop.statistics
| Name | Type | Description |
|---|---|---|
| MultihopD2DStatistics | simple module |
Only used in conjunction with UEs running instances of the MultihopD2D application. It collects statistics related to notification messages broadcast by the MultihopD2D applications by gathering data through method calls from these applications. |
simu5g.apps.mec.DeviceApp
| Name | Type | Description |
|---|---|---|
| DeviceApp | simple module |
Models the Device App entity as defined by the ETSI Multi-access Edge Computing (MEC) specifications. The Device App can be instantiated on a User Equipment (UE) that wants to dynamically instantiate a MEC application within a MEC system. It establishes a TCP connection with the User App Lifecycle Management Proxy (UALCMP) entity (see the Ualcmp module) and, upon receiving a MEC application instantiation request from another UE application, it sends a message to the UALCMP including the URI of the MEC application to be instantiated. Once the confirmation of successful instantiation is received, the Device App sends an acknowledgment to the UE application that requested it. Moreover, this module is responsible for requesting the deletion of the MEC application from the MEC system upon explicit request from the UE application. |
simu5g.apps.mec.MecApps
| Name | Type | Description |
|---|---|---|
| MecAppBase | simple module |
This is a MEC app that ... TBC |
| MultiUeMecApp | simple module |
This is an empty MEC app which is used as a model for MEC apps that should be shared among multiple UEs. Any shared MEC app that should extend this app |
simu5g.apps.mec.MecApps.MecRequestBackgroundApp
| Name | Type | Description |
|---|---|---|
| MecRequestBackgroundApp | simple module |
Generates requests to be sent to the LocationService. This application can be instantiated as an "independent MEC app" (see MecHost module), which means it does not need to be instantiated via the MEC orchestrator upon request from a User Equipment. In particular, this module produces bulks of GET requests, as generated by a configurable number of MEC applications running on the MEC host. The result of such requests is to delay the service of real requests (i.e., those originating from complete MEC applications) |
simu5g.apps.mec.MecApps.MecRequestBackgroundGeneratorApp
| Name | Type | Description |
|---|---|---|
| MecRequestBackgroundGeneratorApp | simple module |
Generates requests to be sent to the LocationService. This application can be instantiated as an "independent MEC app" (see MecHost module), meaning it does not need to be instantiated via the MEC orchestrator upon request from a User Equipment. Specifically, this module produces batches of GET requests, as generated by a configurable number of MEC applications running on the MEC host. The effect of such requests is to delay the service of actual requests (i.e., those originating from complete MEC applications) |
simu5g.apps.mec.MecApps.MecRequestForegroundApp
| Name | Type | Description |
|---|---|---|
| MecRequestForegroundApp | simple module |
Implements a MEC application that issues GET requests to the LocationService every 500ms. This application can be utilized as an "independent MEC app" (see MecHost module), hence it does not require instantiation via the MEC orchestrator upon request from a User Equipment. Essentially, this application provides a quick way to generate configurable load to the Location Service and simulate different (and potentially more realistic) response times from the latter. |
simu5g.apps.mec.MecRequestResponseApp
| Name | Type | Description |
|---|---|---|
| MecResponseApp | simple module |
Represents an application that is dynamically instantiated on a MEC host upon request from a UeRequestApp, via a DeviceApp. Upon receiving a request from the UE, it queries the LocationService to obtain some information (which is not utilized; it is intended only to "consume" some time), and sends a response message to the UE after a computation time that depends on the current resource utilization at the MEC host. |
| UeRequestApp | simple module |
This application is to be instantiated on the UE side. It requires that a DeviceApp is also instantiated at the UE. This module requests the DeviceApp to instantiate a MecResponseApp in the MEC system. Once the peer MEC application is up and running, this module sends periodic messages to the MEC application and waits for a response. It collects metrics such as round-trip time. |
simu5g.apps.mec.RealTimeVideoStreamingApp
| Name | Type | Description |
|---|---|---|
| MecRTVideoStreamingReceiver | simple module |
Application that is dynamically instantiated on a MEC host upon request from a RtVideoStreamingSender application via a DeviceApp. It receives video frames sent by the UE and simulates a playout buffer. Moreover, it records statistics related to the quality of the received video stream. Note that the statistics are collected by the RtVideoStreamingSender application at the UE side. |
| RtVideoStreamingSender | simple module |
This application is to be instantiated on the UE side. It requires that a DeviceApp is also instantiated on the UE. This module requests the DeviceApp to instantiate a MecRTVideoStreamingReceiver in the MEC system. Once the peer MEC application is up and running, this module starts sending packets containing video frames as read from the trace file specified in the configuration. |
simu5g.apps.mec.RnisTestApp
| Name | Type | Description |
|---|---|---|
| MecRnisTestApp | simple module |
Application that is dynamically instantiated on a MEC host upon request from a UeRnisTestApp via a DeviceApp. It is used to test and showcase the functionalities of the RniService API. Upon receiving a request from the UE, it queries the RniService periodically to obtain L2 measurements related to the UE that sent the request (refer to the sendQuery() function). The results obtained from the RNIS are sent back to the UeRnisTestApp in a response message. Please note that the response time of the RNIS depends on the current load at the RNIS. |
| UeRnisTestApp | simple module |
This application is to be instantiated on the UE side. It requires that a DeviceApp is also instantiated on the UE. This module requests the DeviceApp to instantiate a MecRnisTestApp in the MEC system. The application is used to test and showcase the functionalities of the RniService API. Once the peer MEC application is up and running, this module sends a message to the MEC application, requesting it to start querying the RNIS API periodically. When the response from the MecRnisTestApp is received, the result of the query to the RNIS API is printed to the QtEnv log |
simu5g.apps.mec.WarningAlert
| Name | Type | Description |
|---|---|---|
| MecWarningAlertApp | simple module |
Application that is dynamically instantiated on a MEC host upon request from a UeWarningAlertApp via a DeviceApp. It receives requests from the UE to be notified when it enters a circular area defined by its center and radius. This is accomplished by subscribing to the LocationService provided by the MEC Host. This module receives a notification from the Location Service when the UE enters/exits the area and, in turn, sends a message to the UE. |
| UeWarningAlertApp | simple module |
This application is to be instantiated on the UE side. It requires that a DeviceApp is also instantiated on the UE. This module requests the DeviceApp to instantiate a MecWarningAlertApp in the MEC system. Once the peer MEC application is up and running, this module sends a message to the MEC application, requesting that it be notified when the UE running this module enters a circular area defined by its (configurable) center and radius. |
simu5g.apps.vod
| Name | Type | Description |
|---|---|---|
| VodUdpClient | simple module |
Simulates a video-on-demand (VoD) client application that receives video frames over UDP. It is assumed that the transmitted video is encoded using multiple layers according to the Scalable Video Coding (SVC) technique. Hence, the module collects separate statistics (such as throughput and delay) for each layer. |
| VodUdpServer | simple module |
Models the transmission of a video-on-demand (VoD) stream over UDP. The input is taken from a specified trace file, representing a video encoded according to the Scalable Video Coding (SVC) standard. Each line of the trace file defines the size and transmission time of a video frame. |
simu5g.apps.voip
| Name | Type | Description |
|---|---|---|
| VoipReceiver | simple module |
Represents a model for the receiver of Voice-over-IP (VoIP) traffic. It receives packets sent by a VoipSender application via UDP and records statistics such as packet loss, end-to-end latency, jitter, and throughput. Furthermore, it computes and emits a MOS (Mean Opinion Score) value, which represents the Quality-of-Experience of the end users. |
| VoipSender | simple module |
Represents a model for the sender of Voice-over-IP (VoIP) traffic. It generates packets by alternating "talk spurts" and "silence" periods, with their respective durations modeled by a Weibull distribution. During talk spurts, fixed-size packets are generated periodically and sent over UDP to a specified destination address and port. |
simu5g.background.cell
| Name | Type | Description |
|---|---|---|
| BackgroundCellChannelModel | simple module |
Configures the channel parameters associated with a BackgroundCell. It is used to compute the channel quality for background UEs (refer to the BackgroundUe module), which in turn is essential for deriving the correct allocation of time-frequency resources via the Adaptive Modulation and Coding mechanism. |
| BackgroundCellTrafficManager | simple module |
Manages the background traffic generated by BackgroundUe in a BackgroundCell. |
| BackgroundScheduler | simple module |
Computes the allocation of time-frequency resources for background UEs in a BackgroundCell, taking into account the traffic generated by these UEs and their channel quality. |
simu5g.background.trafficGenerator
| Name | Type | Description |
|---|---|---|
| BackgroundTrafficGenerator | compound module |
Part of a BackgroundCell module and is responsible for instantiating a configurable number of background UEs (see BackgroundUe module) and setting up their method for computing the channel status information required by the BackgroundScheduler module. |
| BackgroundTrafficManager | simple module |
Manages the background traffic generated by BackgroundUe in a eNodeB or gNodeB. |
| BackgroundTrafficManagerBase | simple module |
This is the base module for the traffic manager for background UEs |
| BackgroundUe | compound module |
Lightweight model for 4G or 5G User Equipment (UE). It is used to simulate the generation of background traffic in both uplink and downlink bandwidths, according to the logic specified by its ITrafficGenerator submodule. The generated traffic is not actually transmitted or received by this module, making it more efficient from a simulation complexity perspective. Instead, such traffic modifies the buffer status information that is used by the BackgroundScheduler to allocate resources. Each background UE has a mobility submodule to configure its position in the simulation floor plan. This allows for realistic channel status information to be computed for the background UE and used by the BackgroundScheduler. Since this module does not send or receive actual traffic, application-level statistics are not produced. |
| IBackgroundTrafficManager | module interface |
Defines the contract for a traffic generator manager within the BackgroundTrafficGenerator module of a eNodeB or gNodeB. This interface can be implemented by other modules to create a custom traffic generator manager; see BackgroundTrafficManager. |
simu5g.background.trafficGenerator.generators
| Name | Type | Description |
|---|---|---|
| ITrafficGenerator | module interface |
Defines the contract for traffic generator modules within the BackgroundTrafficGenerator module. This interface can be implemented by other modules to create a custom traffic generator; see TrafficGeneratorCbr as an example. |
| TrafficGeneratorBase | simple module |
Provides the basic functions and parameters that a traffic generator submodule (implementing the ITrafficGenerator interface) can utilize. It enables the configuration of parameters such as the starting time of the traffic, the size and inter-generation timing of packets, the rate of retransmissions, and so on. Custom background traffic generators can be implemented by extending this module. |
| TrafficGeneratorCbr | simple module |
Specializes the TrafficGeneratorBase module to provide a Constant Bit Rate (CBR) background traffic generator. This generator produces fixed-size packets at regular intervals in either downlink or uplink bands, or both. |
simu5g.common.binder
| Name | Type | Description |
|---|---|---|
| Binder | simple module |
The Binder module functions as a global repository of network-related information utilized throughout the simulation for various control-plane functionalities. It provides a centralized storage and access point for data such as network configurations and operational parameters. |
simu5g.common.carrierAggregation
| Name | Type | Description |
|---|---|---|
| CarrierAggregation | compound module |
Implements the Carrier Aggregation (CA) functionality used at the Medium Access Control (MAC) layer of e/gNodeBs and UEs. CA allows multiple frequency bands - referred to as Component Carriers (CCs) - to be aggregated in order to increase the overall available bandwidth of the system. Each CC is implemented as a submodule and can be configured independently from each other. e/gNodeB and UE can be configured to use one or more CCs among those configured in this module. There must be one (and only one) instance of this module in the network. |
| ComponentCarrier | simple module |
Serves as a descriptor for one Component Carrier (CC) of a Carrier Aggregation (CA)-enabled 4G/5G network. The module is assigned a carrier frequency (which also acts as a unique identifier for the CC in the system), a bandwidth, and a numerology index (in the range of 0 to 4). It can be configured with either Frequency Division Duplex (FDD) or Time Division Duplex (TDD) mode. In the latter case, the number of uplink and downlink symbols per slot can be specified (the sum of uplink and downlink symbols must be less than or equal to 14, which is the total number of symbols in one slot). |
simu5g.common.cellInfo
| Name | Type | Description |
|---|---|---|
| CellInfo | simple module |
Includes data structures and functions used to support local operations at the e/gNodeB, such as the cell ID, the set of Component Carriers (CCs) supported by the e/gNodeB, and more. |
simu5g.corenetwork.bearerConfigurator
| Name | Type | Description |
|---|---|---|
| BearerConfigurator | simple module |
Central configurator of the network's data radio bearers. |
simu5g.corenetwork.gtp
| Name | Type | Description |
|---|---|---|
| GtpUser | simple module |
Implements a simplified version of the user plane of the GPRS Tunneling Protocol (GTP). On one hand, this module encapsulates incoming IP datagrams into GTP packets and sends them to the tunnel destination endpoint (GTP operates on top of UDP). The destination endpoint is identified by utilizing information from the TrafficFlowFilter module. On the other hand, when this module receives GTP packets from a tunnel source endpoint, it decapsulates the included IP datagram and sends it to the intended destination according to normal IP forwarding. Used by all entities that need to communicate within the cellular core network, such as eNodeB, gNodeB, PgwStandard, Upf, and MecHost modules. |
| GtpUserX2 | simple module |
Implements a simplified version of the user plane of the GPRS Tunneling Protocol (GTP) used for handover procedures. In particular, it is employed to transfer data packets from the source e/gNodeB to the target e/gNodeB during a handover (i.e., packets destined for a UE that is undergoing a handover). On one hand, this module encapsulates incoming IP datagrams from the local LteX2Manager into GTP packets and sends them over the X2 interface. On the other hand, it receives GTP packets from other e/gNodeBs and decapsulates the included IP datagrams, which are then forwarded to the local LteX2Manager. |
simu5g.corenetwork.statsCollector
| Name | Type | Description |
|---|---|---|
| BaseStationStatsCollector | compound module |
Collects the radio network information of an eNodeB, which can be accessed by the RniService module of a MecHost. For example, this module provides information such as the utilization of Resource Blocks. |
| GNodeBStatsCollector | compound module |
Collects the radio network information from a 5G gNodeB, which can be accessed by the RniService module of a MecHost. Currently, it exposes the same information as the BaseStationStatsCollector module. |
| IStatsCollector | module interface |
A module implementing this interface is a utility module that is accessed by the RniService of a MecHost module to retrieve radio network information related to the parent e/gNodeB module. The RNIS accesses this module via direct method calls. For example, see BaseStationStatsCollector or UeStatsCollector. |
| NrUeStatsCollector | compound module |
Collects the radio network information of a NR UE, which can be accessed by the RniService module of a MecHost. Currently, it exposes the same functionalities as the UeStatsCollector. |
| UeStatsCollector | compound module |
Collects the radio network information of a LTE User Equipment (UE), which can be accessed by the RniService module of a MecHost. For example, this module provides information such as packet delay and discard rate. |
simu5g.corenetwork.trafficFlowFilter
| Name | Type | Description |
|---|---|---|
| TrafficFlowFilter | simple module |
Maps IP 4-Tuples to Traffic Flow Template (TFT) identifiers, which are used by the GtpUser module contained in the same node. It interacts with the Binder to determine the destination of the packet. Resides in any module that also includes a GtpUser module, such as eNodeB, gNodeB, PgwStandard, Upf, and MecHost modules. For instance, in a Upf module acting as the entry point of the 5G network, it identifies the destination endpoint of the GTP tunnel that the packet should traverse, which is the gNodeB serving the destination User Equipment (UE). |
simu5g.emulation.extclientserver
| Name | Type | Description |
|---|---|---|
| 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. |
simu5g.emulation.extclientserver_bgTraffic
| 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. |
simu5g.emulation.extserver
| Name | Type | Description |
|---|---|---|
| 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. |
simu5g.emulation.mec.extMecApp
| Name | Type | Description |
|---|---|---|
| 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. |
simu5g.emulation.mec.extUeApp
| Name | Type | Description |
|---|---|---|
| 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. |
simu5g.emulation.mec.extUeAppMecApp
| Name | Type | Description |
|---|---|---|
| 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. |
simu5g.mec.mepm
| Name | Type | Description |
|---|---|---|
| MecPlatformManager | simple module |
Implements the MEC platform manager (MECPM) entity within the MecHost. It serves as an interface between the MEC orchestrator and the MEC host itself. Specifically, it manages interactions with the VirtualisationInfrastructureManager to instantiate and terminate MEC applications upon requests from the MEC orchestrator. |
simu5g.mec.orchestrator
| Name | Type | Description |
|---|---|---|
| MecOrchestrator | simple module |
Models the functionalities of the MEC orchestrator within a Multi-access Edge Computing (MEC) system. Specifically, it manages the dynamic instantiation and termination of MEC applications on the MEC hosts belonging to the MEC system. Upon receiving a MEC app instantiation request from the Ualcmp module, this module is responsible for selecting the MEC host on which the MEC application is to be instantiated, according to a configurable policy. |
simu5g.mec.platform
| Name | Type | Description |
|---|---|---|
| IMecApp | module interface |
Defines the structure to be implemented by every MEC Application that supports standard lifecycle management via Ualcmp and MecOrchestrator (i.e., MEC applications that can be instantiated dynamically by User Equipment). See, for example, the MecResponseApp module. |
| MecPlatform | compound module |
Represents the MEC Platform entity within a MecHost, as specified in the ETSI MEC architecture (ETSI GS MEC 003). It encompasses the MEC services made available to MEC applications instantiated within the MEC Host, along with the ServiceRegistry. The type and number of available MEC services can be configured. |
simu5g.mec.platform.ServiceRegistry
| Name | Type | Description |
|---|---|---|
| ServiceRegistry | simple module |
Models the functionalities of the Service Registry entity in the MEC architecture (ETSI GS MEC 003). It exposes a REST API compliant with ETSI GS MEC 011, allowing MEC applications to discover MEC services available in the MEC host. In particular, MEC applications can obtain the IP address and port number for each instantiated MEC service, so that they can start sending requests to it |
simu5g.mec.platform.services.base
| Name | Type | Description |
|---|---|---|
| IMecService | module interface |
Defines the structure that must be implemented by every MEC Service (see, e.g., LocationService). Common MEC service functionalities are provided by the MecServiceBase class, which includes support for both request-response and subscribe-notification paradigms over the TCP protocol. Furthermore, the MecServiceBase class includes mechanisms to enqueue MEC applications' requests to a MEC service in a FIFO queue, allowing the MEC service to serve them one at a time. This class also calculates the computation time of each request according to an exponential distribution. |
| SocketManager | simple module |
This simple module is responsible for managing the state of TCP connections for MEC services. It is instantiated by MecServiceBase to handle each new connection, utilizing the inet::TcpSocket::CallbackInterface. It processes incoming HTTP packets and manages requests and responses within the system. |
simu5g.mec.platform.services.LocationService
| Name | Type | Description |
|---|---|---|
| LocationService | simple module |
Implements the Location Service API as defined by the ETSI GS MEC 013 specification. It exposes a REST API that allows MEC applications to retrieve location-related information about User Equipment (UE) or a group of UEs. It supports both request-response and subscribe-notification patterns (in the latter case, the MEC application will be notified when a target UE enters a specific circular area. |
simu5g.mec.platform.services.RniService
| Name | Type | Description |
|---|---|---|
| RniService | simple module |
Implements a subset of the Radio Network Information Service API defined by the ETSI GS MEC 012 specification. It exposes a REST API that allows MEC applications to retrieve layer-2 measurements related to a User Equipment (UE) or base station. |
simu5g.mec.ualcmp
| Name | Type | Description |
|---|---|---|
| Ualcmp | compound module |
Represents a host performing the functions of the User Application Lifecycle Management Proxy (UALCMP) defined by the ETSI Multi-access Edge Computing (MEC) specifications. It includes a complete network protocol stack and a UalcmpApp application module that implements the logic of the UALCMP entity. It is typically connected directly to a MEC orchestrator, and forwards to it the creation and deletion requests from the Device App modules of User Equipment. It can be configured to receive packets from a real, external Device App application via the external Ethernet interface submodule. |
| UalcmpApp | simple module |
Implements (part of) the Mx2 reference point defined by the ETSI GS MEC 016 V2.2.1 (2020-04) specification. A DeviceApp application module can use this API to request MEC app lifecycle operations (i.e., instantiation, termination, relocation). In particular, it provides the following methods: |
simu5g.mec.vi
| Name | Type | Description |
|---|---|---|
| VirtualisationInfrastructure | compound module |
Represents the Virtualisation Infrastructure in a MEC host. It takes care of forwarding packets coming from the 5G core network to the appropriate MEC applications, applying the processing required by all the necessary network protocol layers. Optionally, it can host "independent" MEC applications, i.e., applications that are statically created at initialization, without going through the normal lifecycle (i.e., through the UALCMP and MEC orchestrator). It provides the external interface to communicate with emulated MEC applications, running outside the simulation environment. |
simu5g.mec.vim
| Name | Type | Description |
|---|---|---|
| BackgroundApp | compound module |
Can be used to simulate a background application running on the MEC host without simulating all message exchanges and finite-state machines. It can be useful for simulating background tasks that utilize CPU, RAM, and disk resources. |
| VirtualisationInfrastructureManager | simple module |
Manages the computing resources currently allocated to MEC applications hosted by a MEC host. It is also used by MEC applications in case they want to compute a processing delay based on such resource usage. |
simu5g.mobility.trafficLightMobility
| Name | Type | Description |
|---|---|---|
| TrafficLight | compound module |
Simulates a traffic light in an urban environment. It incorporates a stationary mobility submodule to represent the fixed position of the traffic light, and a TrafficLightController submodule to model the traffic light's states (green, yellow, red) and its interactions with vehicles. |
| TrafficLightController | simple module |
Defines the behavior of traffic light controllers in the simulation. It manages the states of the traffic lights (green, yellow, red) and handles the interactions with vehicles, thus influencing the behavior of a node implementing the TrafficLightMobility mobility model when such a node reaches the position of the traffic light. This module allows for the configuration of the duration of green-yellow-red cycles. |
| TrafficLightMobility | simple module |
Extends INET's Linear Mobility model to simulate the movement of a vehicle navigating roads with intersections regulated by traffic lights. The node implementing this mobility model moves at a constant speed and, if it encounters a TrafficLight module with a "red" color, it stops until the traffic light turns "green". Upon resuming its movement, the node may change its direction if the "enableTurns" parameter is enabled. This module requires the presence of TrafficLight modules in the same network scenario. |
simu5g.nodes
| Name | Type | Description |
|---|---|---|
| BackgroundCell | compound module |
Implements a lightweight model for a 4G eNodeB or 5G gNodeB for generating configurable inter-cell interference in the simulated network. |
| 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. |
| ExtCell | simple module |
The ExtCell module represents a fictitious cell that is used to model interference from neighboring cells, without actually instantiating them completely (i.e., without having actual UEs producing actual traffic). It can be configured with physical layer parameters (such as transmission power and direction) and the amount of resource occupation. Can be replaced by BackgroundCell modules, which provide more flexibility. |
| 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). |
| LteCar | compound module |
Defines a LteCar node as a LTE User Equipment (UE) with vehicular-like mobility. This behavior is modeled by utilizing the Veins-Inet project. |
| LteUe | compound module |
Models a User Equipment (UE) in a 4G LTE network. It is a host equipped with an LTE Network Interface Card (NIC), allowing the UE to connect to an eNodeB module via the Radio Access Network (RAN) of the LTE network and communicate with any other host in the system. In addition to a NIC submodule, this compound module includes all the higher layers of the protocol stack, from IP to application modules. It supports a configurable number of UDP and TCP applications. It also features an Ethernet interface, which is utilized in real-time emulation mode to connect the UE to the real network (outside the simulator) via a virtual Ethernet interface. |
| MecHost | compound module |
Represents a model of a Multi-access Edge Computing (MEC) host belonging to a MEC system, as specified by the ETSI GS MEC 003 specifications. It runs MEC applications within its VirtualisationInfrastructure and can provide a number of MEC services via the MEC platform. MEC applications can be created either dynamically by the MEC orchestrator or statically at the initialization of the simulation. The MEC host possesses a configurable number of computing resources (such as CPU speed, RAM, and storage) and keeps track of the utilization of these resources by the MEC applications via the VirtualisationInfrastructureManager. Moreover, this module includes a User Plane Function (UPF) that allows it to be connected with the 5G core network. |
| NrCar | compound module |
Defines a LteCar node as an NR User Equipment (UE) with vehicular-like mobility. The latter is modeled by utilizing the Veins-Inet project. |
| NrUe | compound module |
Models a User Equipment (UE) for a 5G/LTE network. It extends the LteUe module by implementing a NrNicUe as a Network Interface Card (NIC) module. This module can be used to model a device that can connect to either a 4G eNodeB or a 5G gNodeB, or both. |
| PgwStandard | compound module |
Implements a simplified EPC PDN Gateway (P-GW) of a 4G LTE network. It serves as the entry point to the core network of an LTE network, thus bridging it to the rest of the Internet. Packets arriving from the Internet are tunneled to the appropriate next hop in the core network (e.g., the eNodeB that will transmit the packet to the destination User Equipment through the radio access network) using the GPRS Tunneling Protocol (GTP). Conversely, packets received from the core network are detunneled and sent to the Internet (e.g., towards a remote server). To accomplish this, it utilizes a GtpUser module that handles GTP (de)tunneling, along with the TrafficFlowFilter module, which classifies incoming packets. |
| Upf | compound module |
Implements the 5G Core User Plane Function (UPF). |
simu5g.simulations.lte.networks
| Name | Type | Description |
|---|---|---|
| MultiCell | network |
Two eNodeB cells on a shared EPC PgwStandard, joined by an X2 link, with a router and a server behind the core. Four LteUe terminals are placed two per cell, and numExtCells ExtCell cells can be added as interferers. |
| MultiCell_D2DMultihop | network |
Five eNodeB cells, each reaching the EPC PgwStandard through a router of its own, with a further router and a server behind the core. There are no X2 links. numUe1 to numUe5 LteUe terminals attach per cell, and an EventGenerator and a MultihopD2DStatistics module sit beside them, wired to nothing. |
| MultiCell_X2Mesh | network |
Three eNodeB cells in a full X2 mesh. Each reaches the EPC PgwStandard through a router of its own, and the server sits directly on the PgwStandard's data-network gate. numUe1, numUe2 and numUe3 LteUe terminals attach per cell, and numExtCells ExtCell cells can be added as interferers. |
| SingleCell | network |
The minimal LTE topology: one eNodeB connected to an EPC PgwStandard, which faces a router and a server, plus numUe LteUe terminals. |
| SingleCell_D2D | network |
SingleCell 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 eNodeB on an EPC PgwStandard, with a router and a server behind it. |
| SingleCell_D2DMulticast | network |
SingleCell with its UEs split into cellular terminals (ueCell) and members of a D2D multicast group (ueD2D). The rest of the topology is the same: one eNodeB on an EPC PgwStandard, with a router and a server behind it. |
simu5g.simulations.nr.mec.multiMecHost
| Name | Type | Description |
|---|---|---|
| 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. |
simu5g.simulations.nr.mec.multiOperator
| Name | Type | Description |
|---|---|---|
| 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. |
simu5g.simulations.nr.mec.requestResponseApp
| Name | Type | Description |
|---|---|---|
| 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. |
simu5g.simulations.nr.mec.rnisTest
| Name | Type | Description |
|---|---|---|
| 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. |
simu5g.simulations.nr.mec.singleMecHost
| Name | Type | Description |
|---|---|---|
| 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. |
simu5g.simulations.nr.networks
| Name | Type | Description |
|---|---|---|
| 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. |
| 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. |
simu5g.simulations.nr.videostreaming_dataset_generator
| Name | Type | Description |
|---|---|---|
| UrbanNetwork | network | (no description) |
simu5g.stack
| Name | Type | Description |
|---|---|---|
| ICellularNic | module interface |
Interface for the 3GPP Stack. |
| LteNicBase | compound module |
The LteNicBase module serves as the foundational building block for LTE networking in Simu5G. It integrates protocols for LTE communication, including PDCP, RLC, MAC, and PHY layers. This base module allows higher-level modules, such as User Equipment (UE) and eNodeB (evolved Node B), to configure and utilize these layers according to their specific requirements. |
| LteNicEnb | compound module |
The LteNicEnb module is a network interface that provides LTE connectivity within an eNodeB. It implements the data and signaling planes of the LTE stack, which includes the PDCP, RLC, MAC, and PHY layers. The parameters and submodules allow customization of the eNodeB's behavior, including whether it supports D2D communication, CoMP (Coordinated MultiPoint), or dual connectivity. |
| LteNicUe | compound module |
The LteNicUe module is a network interface that provides LTE connectivity within a UE (User Equipment). It implements the data and signaling planes of the LTE stack, which includes PDCP, RLC, MAC, and PHY layers. The parameters and submodules allow customization of the UE's behavior. |
| NrNicEnb | compound module |
The NrNicEnb module serves as a network interface that provides 5G connectivity within a gNodeB. It implements the data and signaling plane of the NR (New Radio) stack, which encompasses the PDCP, RLC, MAC, and PHY layers. The parameters and submodules facilitate the customization of the gNodeB's behavior, including its support for CoMP (Coordinated MultiPoint) or dual connectivity. D2D support is added by the NrNicEnbD2D subtype. |
| NrNicUe | compound module |
Defines a User Equipment (UE) network interface card that supports both LTE and NR (New Radio) technologies. It extends the LteNicUe module by adding additional submodules and parameters to support NR-specific functionalities. D2D support is added by the NrNicUeD2D subtype. |
simu5g.stack.compManager
| Name | Type | Description |
|---|---|---|
| ILteCompManager | module interface |
The LteCompManager interface defines the structure for the CoMP Manager. It extends the X2User interface and provides the necessary parameters and configurations for managing Coordinated Multi-Point (CoMP) communications in LTE networks. |
| LteCompManagerBase | simple module |
Serves as the base class for Coordinated Multi-Point (CoMP) manager modules in LTE networks. It provides essential functionalities and parameters needed to manage CoMP operations. To implement a specific CoMP algorithm, extend this class and override its pure virtual methods. |
simu5g.stack.compManager.compManagerProportional
| Name | Type | Description |
|---|---|---|
| LteCompManagerProportional | simple module |
Implements a CoMP (Coordinated Multi-Point) Proportional Scheduling algorithm. It allows for coordinated scheduling among multiple eNodeBs by calculating the required Resource Block (RB) allocation proportionally based on user load. In this structure, the module can function as either a master or a slave node. Slave nodes send their RB requests to the master node, which then processes these requests by partitioning the available bandwidth and subsequently informs each slave node about the available RBs for transmission. |
simu5g.stack.d2d
| Name | Type | Description |
|---|---|---|
| LteNicEnbD2D | compound module |
The LteNicEnbD2D module represents an LTE eNodeB network interface with support for D2D (Device-to-Device) communications. It extends the basic LteNicEnb module to manage D2D-capable UEs (User Equipments). A D2D mode selection algorithm can be specified via the rrc.d2dModeSelection submodule's typename. |
| LteNicUeD2D | compound module |
Represents a Device-to-Device (D2D) capable User Equipment (UE) network interface. It extends the basic LTE UE functionality by adding D2D communication capabilities, allowing direct communication between UEs without the need to route traffic through the base station. |
| NrNicEnbD2D | compound module |
Device-to-Device (D2D) capable NR gNodeB network interface. It extends NrNicEnb by swapping in the D2D-capable NR MAC leaf and the D2D-capable eNB PHY, and by enabling the D2D mode controller and mode selection. It is the NR counterpart of LteNicEnbD2D. |
| NrNicUeD2D | compound module |
Device-to-Device (D2D) capable NR User Equipment network interface. It extends NrNicUe by swapping in the D2D-capable NR MAC/PHY leaves and enabling the D2D mode controller, allowing direct UE-to-UE communication without routing traffic through the gNodeB. It is the NR counterpart of LteNicUeD2D. |
simu5g.stack.d2d.binder
| Name | Type | Description |
|---|---|---|
| D2dBinder | simple module |
Global holder of the D2D-specific network state, split out of the core Binder. |
simu5g.stack.d2d.ip2nic
| Name | Type | Description |
|---|---|---|
| Ip2NicD2D | simple module |
Device-to-Device (D2D) aware version of Ip2Nic. It overrides the packet analysis and next-hop resolution with the D2D-capable behavior: IP-multicast becomes a D2D_MULTI flow with a group-id assignment, unicast destinations get a D2D peer lookup, and the next hop is routed directly to the peer when the peering is in Direct Mode (DM). Selected by the D2D-capable NICs. |
simu5g.stack.d2d.mac
| Name | Type | Description |
|---|---|---|
| LteMacEnbD2D | compound module |
Extends LTE MAC functionalities at the eNodeB side to support device-to-device (D2D) communications. Specifically, it enhances resource allocation procedures to enable direct communication between User Equipments (UEs), i.e., it allocates resources for D2D transmissions. Network-assisted D2D is only implemented (out-of-coverage D2D is not supported). |
| LteMacUeD2D | compound module |
Extends LTE MAC functionalities at the User Equipment side to support device-to-device (D2D) communications. Specifically, it customizes LteMacUe functionalities to support the transmission and reception of MAC Protocol Data Units (PDUs), Channel Status Information (CSI), and Buffer Status Reports (BSRs) over a D2D link. It supports D2D multicast transmission to nearby UEs belonging to a given multicast group. |
| NrMacGnbD2D | compound module |
NR-gNB MAC with D2D support. Extends NrMacGnb with the device-to-device (D2D) deltas: it enhances resource allocation procedures to enable direct communication between UEs (network-assisted D2D). It is the NR counterpart of LteMacEnbD2D. |
| NrMacUeD2D | compound module |
NR-UE MAC with D2D support. Extends NrMacUe with the device-to-device (D2D) deltas: it customizes the numerology-aware MAC to support the transmission and reception of MAC PDUs, CSI, and BSRs over a D2D link, including one-to-many D2D multicast transmission. It is the NR counterpart of LteMacUeD2D. |
simu5g.stack.d2d.mac.amc
| Name | Type | Description |
|---|---|---|
| LteAmcD2D | simple module |
LTE Adaptive Modulation and Coding (AMC) module with D2D support. It is the D2D-capable variant of LteAmc, wired in by the D2D LTE NICs via the MAC's amcType parameter. |
| NrAmcD2D | simple module |
NR Adaptive Modulation and Coding (AMC) module with D2D support. It is the D2D-capable variant of NrAmc, wired in by the D2D NR NICs via the MAC's amcType parameter. |
simu5g.stack.d2d.mac.scheduler
| Name | Type | Description |
|---|---|---|
| LteSchedulerEnbUlD2D | simple module |
LTE eNB uplink scheduler with device-to-device (D2D) support. It is the D2D-capable variant of LteSchedulerEnbUl, wired in by the D2D LTE MAC via the ulSchedulerType parameter. |
| NrSchedulerGnbUlD2D | simple module |
NR gNB uplink scheduler with device-to-device (D2D) support. It is the D2D-capable variant of NrSchedulerGnbUl, wired in by the D2D NR MAC via the ulSchedulerType parameter. |
simu5g.stack.d2d.phy
| Name | Type | Description |
|---|---|---|
| PhyEnbD2D | simple module |
Extends the PHY functionalities on the eNodeB side to support device-to-device (D2D) communications. Specifically, it enables the computation of Channel Status Information (CSI) related to the D2D link between two UEs, which still needs to be stored at the eNodeB for scheduling purposes. |
| PhyUeD2D | simple module |
Extends the PHY functionalities at the User Equipment side to support device-to-device (D2D) communications. Specifically, it customizes the PhyUe functionalities to support the transmission and reception of frames to another UE directly, without going through the serving eNodeB. It also supports one-to-many D2D transmission to UEs belonging to a multicast group. It is assumed that one-to-one D2D communication is only possible when both endpoints are served by the same eNodeB. When a handover is triggered, this module is responsible for initiating a mode switch from direct (D2D) mode to infrastructure mode. |
simu5g.stack.d2d.phy.channelmodel
| Name | Type | Description |
|---|---|---|
| D2dChannelModel | simple module |
D2D-capable channel model: StochasticChannelModel plus the device-to-device channel math (RSRP/SINR, D2D interference, D2D reception decision). It is the channel model of the D2D NICs on all propagation studies; the pathLossType parameter (inherited from StochasticChannelModel) selects TR 36.814, 36.873 or 38.901. |
simu5g.stack.d2d.rlc
| Name | Type | Description |
|---|---|---|
| LteRlcUmEntityD2D | compound module |
RLC UM entity of a D2D-capable LTE data radio bearer: LteRlcUmEntity with both sides bound to the D2D entity profiles. Selected by BearerManagement on the D2D-capable NICs via its lteRlcUmEntityModuleType parameter. |
| LteRlcUmRxEntityD2D | simple module |
D2D-capable LTE (TS 36.322) RLC UM receiving entity: LteRlcUmRxEntity plus the D2D_MULTI single-PDU reordering window, the post-mode-switch reassembly resynchronisation, and the D2D branch of the throughput/delay statistics. |
| LteRlcUmTxEntityD2D | simple module |
D2D-capable LTE (TS 36.322) RLC UM transmitting entity: LteRlcUmTxEntity plus the D2D mode-switch machinery (SDU holding buffer, drain notification to the D2DModeController, sequence-number reset on the newly selected mode). |
| NrRlcUmEntityD2D | compound module |
RLC UM entity of a D2D-capable NR data radio bearer: NrRlcUmEntity with both sides bound to the D2D entity profiles. Selected by BearerManagement on the D2D-capable NICs via its nrRlcUmEntityModuleType parameter. |
| NrRlcUmRxEntityD2D | simple module |
D2D-capable NR (TS 38.322) RLC UM receiving entity: NrRlcUmRxEntity plus the mode-switch buffer discard/renumbering and the D2D branch of the throughput/delay statistics. |
| NrRlcUmTxEntityD2D | simple module |
D2D-capable NR (TS 38.322) RLC UM transmitting entity: NrRlcUmTxEntity plus the same D2D mode-switch machinery as LteRlcUmTxEntityD2D, over the SO segmentation buffer. |
| RlcMuxD2D | simple module |
Device-to-Device (D2D) aware version of RlcMux. It additionally handles D2D mode switch notifications arriving from the MAC layer, dispatching them to the TX or RX UM entity of the affected bearer, and declares the D2D statistics (emitted by the D2D UM entities). Selected by the D2D-capable NICs. |
simu5g.stack.d2d.rrc
| Name | Type | Description |
|---|---|---|
| D2DModeController | simple module |
Controls D2D mode switching flow control. |
| D2dModeSelectionBase | simple module |
Base module for D2D Mode Selection modules. |
| D2DModeSelectionBestCqi | simple module |
Implements the mode selection algorithm for D2D communications that selects the mode based on the best Channel Quality Indicator (CQI). It evaluates the CQI for each D2D-capable flow and selects the communication mode that provides the best performance in terms of achievable data rate. The primary goal is to optimize data transmission quality and efficiency by dynamically switching between modes based on CQI measurements. |
| HandoverControllerD2D | simple module |
D2D-capable variant of the HandoverController. It fills in the handover lifecycle hooks with D2D behavior: switching active D2D flows back to infrastructure mode before a handover, detaching/attaching the D2D AMC direction while executing it, and re-selecting the D2D mode once the handover has completed. Selected via 'handoverController.typename' / 'nrHandoverController.typename' by the D2D-capable UE NICs. |
| ID2DModeController | module interface |
Interface for the D2D mode controller of the IRrc layer: performs the D2D mode switch of a peering, draining and re-routing the affected RLC transmission buffers. |
| ID2DModeSelection | module interface |
Interface for the D2D Mode Selection module |
| RrcD2D | compound module |
D2D-capable variant of the Rrc layer. It adds the D2D mode controller (which coordinates RLC TX-queue draining across a mode switch) and, on the eNB/gNB side (hasD2DModeSelection==true), the periodic D2D mode selection module. Selected via 'rrc.typename' by the D2D-capable NICs. |
simu5g.stack.dcX2Forwarder
| Name | Type | Description |
|---|---|---|
| DcX2Forwarder | simple module |
Performs bridging of data-plane packets between PDCP entities of two eNodeBs or gNodeBs when Dual Connectivity is employed. The module directly interfaces with the LteX2Manager to transfer such packets over the X2 interface. |
| IDcX2Forwarder | module interface |
Interface for the DC X2 Forwarder. This module extends the IX2User module interface to define the basic contract that any DC X2 Forwarder must adhere to. |
simu5g.stack.handoverX2Forwarder
| Name | Type | Description |
|---|---|---|
| HandoverX2Forwarder | simple module |
Manages the exchange of messages during the handover process. It handles the signaling and coordination required to transfer both control and data-plane information from the source eNodeB to the target eNodeB. The module directly interfaces with the LteX2Manager to facilitate this inter-eNodeB communication. |
| IHandoverX2Forwarder | module interface |
Interface for the Handover X2 Forwarder. This module extends the IX2User module interface to define the basic contract that any Handover X2 Forwarder must adhere to. |
simu5g.stack.ip2nic
| Name | Type | Description |
|---|---|---|
| HandoverPacketHolderEnb | simple module |
Manages packet buffering and forwarding during handover procedures at the base station. When a user equipment begins handover, tunnels downlink packets to the target base station via the backhaul interface. At the target base station, buffers incoming packets from both the backhaul tunnel and the network layer. Upon handover completion, releases buffered packets to the protocol stack in the correct order. |
| HandoverPacketHolderUe | simple module |
Manages uplink packet buffering during handover at the user equipment. Temporarily holds packets from the network layer when handover is in progress. Whether the UE is attached at all is read from a mirror of RRC's stack attachment ledger, which RRC pushes on every handover event (see BearerManagement). Releases buffered packets to the protocol stack once handover completes successfully. |
| IHandoverPacketHolder | module interface |
Manages packet buffering/tunnelling during handover |
| INetworkLayer2CellularNic | module interface |
The INetworkLayer2CellularNic module interface serves as an intermediary between the network layer and the cellular (LTE/NR) protocol stack. It facilitates interactions between the cellular stack and the network layer, enabling the transmission of IP packets through the protocol layers of LTE and NR technologies. |
| Ip2Nic | simple module |
Bridges the IP network layer and the cellular protocol stack, handling bidirectional packet flow. Extracts flow information from IP headers and attaches it as control tags for the stack. In base stations, determines the destination user equipment from IP addresses. |
simu5g.stack.mac
| Name | Type | Description |
|---|---|---|
| ILteMac | module interface |
Interface for the Medium Access Control (MAC) layer of the LTE Stack. |
| LteMacBase | compound module |
Base module for the Medium Access Control (MAC) layer of the LTE protocol stack. |
| LteMacEnb | compound module |
Extends the LteMacBase module by providing specific MAC functions on the eNodeB side. Specifically, it initializes and manages the scheduling classes responsible for resource allocation operations in both uplink and downlink directions, while also supporting Carrier Aggregation (CA). It manages the Random Access procedure (RAC) and the reception of Buffer Status Reports (BSRs) from UEs, as well as the transmission of scheduling grants to UEs allocated within the uplink bandwidth. For downlink connections, it notifies the Radio Link Control (RLC) layer when it is ready to receive MAC Service Data Units (SDUs) to build MAC Protocol Data Units (PDUs) and transmit them to the physical layer. |
| LteMacUe | compound module |
Extends the LteMacBase module by providing specific MAC functions at the User Equipment (UE) side. For uplink connections, this module manages the initiation of the Random Access procedure (RAC) and the sending of Buffer Status Reports (BSRs) to the eNodeBs. Once it receives an uplink scheduling grant from the eNodeB, it is responsible for managing the local connections' scheduler and constructing MAC Protocol Data Units (PDUs) to be transmitted to the physical layer. |
| NrMacGnb | compound module |
Provides functionalities for the Medium Access Control (MAC) of the New Radio (NR) protocol stack at the gNodeB (gNB) side. In particular, it extends the LteMacEnb module by initializing the NR version of the uplink scheduler and using, by default, the NR version of the Adaptive Modulation and Coding (AMC) module. |
| NrMacUe | compound module |
Provides functionalities for the Medium Access Control (MAC) of the New Radio (NR) protocol stack at the User Equipment (UE) side. In particular, it extends the LteMacUe module by redefining functions to support different numerology parameterizations. |
simu5g.stack.mac.amc
| Name | Type | Description |
|---|---|---|
| ILteAmc | module interface |
Module interface for the Adaptive Modulation and Coding (AMC) module. |
| LteAmc | simple module |
LTE Adaptive Modulation and Coding (AMC) module. |
| NrAmc | simple module |
NR Adaptive Modulation and Coding (AMC) module. |
simu5g.stack.mac.scheduler
| Name | Type | Description |
|---|---|---|
| ILteSchedulerEnbDl | module interface |
Module interface for the eNB/gNB downlink scheduler. |
| ILteSchedulerEnbUl | module interface |
Module interface for the eNB/gNB uplink scheduler. |
| LteSchedulerEnbDl | simple module |
LTE eNB downlink scheduler module. |
| LteSchedulerEnbUl | simple module |
LTE eNB uplink scheduler module. |
| NrSchedulerGnbUl | simple module |
NR gNB uplink scheduler module. |
simu5g.stack.packetFlowObserver
| Name | Type | Description |
|---|---|---|
| IPacketFlowObserver | module interface | (no description) |
| NrPacketFlowObserverGnb | simple module |
This module is responsible for keeping tracking the flow of SDUs in the stack, and compute statistics from them. It is passive observer of the packet flow. Its main user is MEC services. |
| NrPacketFlowObserverUe | simple module |
This module is responsible for keeping tracking the flow of SDUs in the stack, and compute statistics from them. It is passive observer of the packet flow. Its main user is MEC services. |
| PacketFlowObserverEnb | simple module |
This module is responsible for keeping tracking the flow of SDUs in the stack, and compute statistics from them. It is passive observer of the packet flow. Its main user is MEC services. |
| PacketFlowObserverUe | simple module |
This module is responsible for keeping tracking the flow of SDUs in the stack, and compute statistics from them. It is passive observer of the packet flow. Its main user is MEC services. |
simu5g.stack.pdcp
| Name | Type | Description |
|---|---|---|
| DcMux | simple module |
Dual Connectivity mux: routes split-bearer PDCP PDUs between the local PDCP entities and the DcX2Forwarder, which tunnels them to the peer eNB/gNB over X2. |
| DcPdcpLegSplitter | simple module |
TX-side leg dispatcher of a dual-connectivity split bearer (two legs), steering each PDCP PDU to a leg from the split policy RRC pushes off the bearer's definition (TS 38.331 PDCP-Config, TS 38.323 5.2.1). A splitter serves exactly one direction: a UE's TX side is uplink, a base station's is downlink. |
| IPdcpLegJoiner | module interface |
Module interface for the RX-side leg merger of a multi-leg PDCP entity (see PdcpEntityBase): implementations merge the PDU streams of all legs into the single RX entity, whose reorder window restores SN order across legs. Instantiated by the PdcpEntityBase compound via a typename parameter when the bearer has more than one leg. |
| IPdcpLegSplitter | module interface |
Module interface for the TX-side leg dispatcher of a PDCP entity (see PdcpEntityBase): implementations pick the RLC leg for each PDCP PDU and apply that leg's id mapping. Instantiated by the PdcpEntityBase compound via a typename parameter when a leg needs it: on a multi-leg bearer, and on a single-leg bearer whose leg is not the anchor's (an SCG bearer). |
| IPdcpMux | module interface |
Module interface for the upper-layer PDCP packet dispatcher of a cellular NIC (see PdcpMux for the default implementation). Implementations dispatch SDUs coming from Ip2Nic/SDAP to the PDCP TX entity serving their DRB, and pass the output of the RX entities back up. The per-bearer gates are created and wired at runtime by BearerManagement, which also registers the TX routing table; implementations must therefore subclass the PdcpMux C++ class. |
| IPdcpRxEntity | module interface |
Module interface for the receiving side of a PDCP entity. Concrete types (LtePdcpRxEntity, NrPdcpRxEntity) implement it so the PdcpEntityBase compound can instantiate them via a typename parameter. The RX entity is leg-agnostic; on a multi-leg bearer the compound's joiner merges all legs into its single input, and its reorder window restores SN order (see PdcpEntityBase). |
| IPdcpTxEntity | module interface |
Module interface for the transmitting side of a PDCP entity. Concrete types (LtePdcpTxEntity, NrPdcpTxEntity) implement it so the PdcpEntityBase compound can instantiate them via a typename parameter. The TX entity is leg-agnostic (SN assignment, header compression); leg dispatch is the enclosing compound's concern (see PdcpEntityBase). |
| LtePdcpEntity | compound module |
PDCP entity of an LTE data radio bearer: the PdcpEntityBase compound with its TX/RX sides bound to the LTE entity profiles (TS 36.323). Selected by BearerManagement via its pdcpEntityModuleType parameter, which defaults to this type. |
| LtePdcpRxEntity | simple module |
Handles the operations related to the LTE PDCP (Packet Data Convergence Protocol) layer at the receiving side of a specific connection. It processes incoming PDCP PDUs from the RLC layer, performing header decompression before forwarding them to the upper layer protocols. |
| LtePdcpTxEntity | simple module |
Handles operations related to the LTE PDCP (Packet Data Convergence Protocol) layer on the transmitting side of a specific connection. This module manages the creation, sequencing, header compression, and metadata association for PDCP PDUs before they are passed down to the RLC layer. |
| NrPdcpEntity | compound module |
PDCP entity of an NR data radio bearer: the PdcpEntityBase compound with its TX/RX sides bound to the NR entity profiles (TS 38.323), i.e. NR-flavored statistics on the TX side and the multi-leg reorder window on the RX side. Selected by BearerManagement via its pdcpEntityModuleType parameter (set by NrNicUe/NrNicEnb, and on EN-DC master eNBs from the configuration). |
| NrPdcpRxEntity | simple module |
Handles the operations related to the NR PDCP (Packet Data Convergence Protocol) layer on the receiving side of a specific connection. It extends the LtePdcpRxEntity module. Facilitates the creation of support for Dual Connectivity functionality. In particular, it manages the reordering of out-of-sequence PDCP PDUs in Dual Connectivity deployments. |
| NrPdcpTxEntity | simple module |
Handles the operations related to the NR PDCP (Packet Data Convergence Protocol) layer at the transmitting side of a specific connection. It extends the LtePdcpTxEntity module with the NR flavor of the per-SDU statistics (pdcpSduSentNr) and the NR-leg id mapping of a single-leg NR bearer. On a multi-leg bearer, leg dispatch, id mapping and per-leg statistics are handled by the enclosing compound's splitter instead (see PdcpEntityBase). |
| PdcpDownlinkRelay | simple module |
Downlink half of a DC-secondary PDCP relay (see PdcpRelayEntity): receives an already-processed PDCP PDU that the master forwarded over X2 and passes it straight to the local RLC, doing no PDCP processing of its own. |
| PdcpEntityBase | compound module |
Base type of the PDCP entity of one data radio bearer: packages the transmitting and the receiving side of TS 36.323 / 38.323, plus the leg split/join stage of a multi-leg bearer (e.g. an NR dual connectivity split bearer). Created dynamically by BearerManagement, one per (peer, DRB) pair. |
| PdcpLegJoiner | simple module |
RX-side leg merger of a multi-leg PDCP entity (see PdcpEntityBase): relays the PDU streams of all legs into the single RX entity, whose one reorder window restores SN order across legs (the join needs no logic of its own -- the SN space is common to all legs by construction). |
| PdcpMux | simple module |
Upper-layer PDCP packet dispatcher. |
| PdcpRelayEntity | compound module |
Stands in place of the PDCP entity of a data radio bearer at a dual-connectivity SECONDARY node. The bearer's real PDCP entity lives at the master; the secondary only tunnels the already-processed PDUs between the master (over X2, via the DcMux) and its own RLC, doing no PDCP processing of its own. Created dynamically by BearerManagement, one per (UE, DRB) pair, in place of a PdcpEntityBase. |
| PdcpUplinkRelay | simple module |
Uplink half of a DC-secondary PDCP relay (see PdcpRelayEntity): receives a PDCP PDU from the local RLC (UL from the UE) and forwards it to the master node over X2, doing no PDCP processing of its own. |
simu5g.stack.phy
| Name | Type | Description |
|---|---|---|
| IPhy | module interface |
Interface for the Physical (PHY) layer of the LTE/NR protocol stack. |
| PhyBase | simple module |
Base module for the Physical (PHY) layer of the LTE/NR protocol stack. |
| PhyEnb | simple module |
Extends the PhyBase module by providing the specific PHY functions on the eNodeB side. It is responsible for checking if a frame received on the air interface originates from a User Equipment (UE) connected to the eNB itself, and it provides the functions necessary to compute the Channel Status Information (CSI) for the UEs connected to it. |
| PhyUe | simple module |
Extends the PhyBase module by providing specific PHY functions on the User Equipment (UE) side. It ensures that frames received on the air interface are sourced from the serving eNodeB (eNB) and provides functions to manage the handover procedure, including periodic measurement of channel conditions to determine when a handover should occur. If enabled, the selection of the serving eNB at initialization is done dynamically based on radio conditions. |
simu5g.stack.phy.channelmodel
| Name | Type | Description |
|---|---|---|
| ChannelModelBase | simple module |
This is the base module for developing more realistic models of the radio channel. It primarily provides the initialization of parameters such as the reference to the Component Carrier (CC) and its associated parameters related to the channel model itself. |
| IChannelModel | module interface |
Provides the interface for modules implementing the model of the radio channel. Such modules are responsible for providing functions to compute the Signal to Interference-plus-Noise Ratio (SINR) of received frames, taking into account channel effects such as propagation loss, fading/shadowing, and inter-cell interference. |
| IdealChannelModel | simple module |
A channel model that replaces propagation modelling with a configurable packet error rate. Path loss, shadowing and fading are not modelled at all: the attenuation is zero and the reported SINR/RSRP are a fixed large value, so the CQI reported to the scheduler is pinned at its maximum and the transport block size never varies with the channel. |
| StochasticChannelModel | simple module |
The full PHY link model: everything between a transmitted air frame and the decision on whether it was received. The channel impairments are modeled statistically -- drawn from the distributions of a 3GPP propagation study, rather than computed from the geometry of an actual environment -- which is what sets this model apart from IdealChannelModel, where there are no impairments at all, only a configured packet error rate. |
| Tr36873ChannelModel | simple module |
StochasticChannelModel preset with the propagation formulas of 3GPP TR 36.873, "Study on 3D channel model for LTE", v12.7.0, December 2017. It differs from its base type only in the pathLossType default; there is no C++ class of its own behind the name. Note that the study supplies the path loss, LOS probability, shadowing and angular attenuation only; the rest of the link model is the same for every propagation study. |
| Tr38901ChannelModel | simple module |
StochasticChannelModel preset with the propagation formulas of 3GPP TR 38.901, "Study on channel model for frequencies from 0.5 to 100 GHz", v16.1.0, December 2019. It differs from its base type only in the pathLossType default; there is no C++ class of its own behind the name. Note that the study supplies the path loss, LOS probability, shadowing and angular attenuation only; the rest of the link model is the same for every propagation study. |
simu5g.stack.phy.feedback
| Name | Type | Description |
|---|---|---|
| LteDlFeedbackGenerator | simple module |
This is the Lte Downlink Feedback Generator. It manages periodic and aperiodic channel sensing and feedback transmission. |
| LteUlFeedbackGenerator | simple module |
This is the LTE Uplink Feedback Generator. |
simu5g.stack.phy.feedback.testFeedback
| Name | Type | Description |
|---|---|---|
| FeedbackTester | simple module | (no description) |
| TestFeedback | network |
A test harness for the downlink feedback generator: one LteDlFeedbackGenerator and one FeedbackTester that drives it. The two are not connected; the tester reaches the generator by module reference. |
simu5g.stack.rlc
| Name | Type | Description |
|---|---|---|
| IRlcAmRxEntity | module interface |
Receiving side of an RLC AM entity: extends the generic RX interface with the gates over which it hands control PDUs to the co-located transmitting side (see RlcAmEntityBase). |
| IRlcAmTxEntity | module interface |
Transmitting side of an RLC AM entity: extends the generic TX interface with the gates over which the co-located receiving side hands it control PDUs (see RlcAmEntityBase). |
| IRlcMux | module interface |
Module interface for the lower-layer RLC packet dispatcher of a cellular NIC (see RlcMux for the default implementation). Implementations dispatch packets coming from the MAC layer to the RLC RX entity serving their DRB (or, for MAC SDU requests, to its TX entity), and pass the output of the TX entities down to MAC. The per-bearer gates are created and wired at runtime by BearerManagement, which also registers the RX routing table; implementations must therefore subclass the RlcMux C++ class. |
| IRlcRxEntity | module interface |
Module interface for the receiving side of an RLC entity (TM/UM/AM). Concrete entity types (e.g. RlcTmRxEntity, RlcUmRxEntity, RlcAmRxEntity) implement this interface so that RlcTmEntity/RlcUmEntityBase/RlcAmEntityBase compound modules can instantiate them via a typename parameter. Implementations may declare additional gates (e.g. the AM control gates). |
| IRlcTxEntity | module interface |
Module interface for the transmitting side of an RLC entity (TM/UM/AM). Concrete entity types (e.g. RlcTmTxEntity, RlcUmTxEntity, RlcAmTxEntity) implement this interface so that RlcTmEntity/RlcUmEntityBase/RlcAmEntityBase compound modules can instantiate them via a typename parameter. Implementations may declare additional gates (e.g. the AM control gates). |
| LteRlcAmEntity | compound module |
RLC AM entity of an LTE data radio bearer: the RlcAmEntityBase compound with its TX/RX sides bound to the LTE (FI wire format, TS 36.322) entity profiles. Selected by BearerManagement for LTE bearers via its lteRlcAmEntityModuleType parameter, which defaults to this type. |
| LteRlcUmEntity | compound module |
RLC UM entity of an LTE data radio bearer: the RlcUmEntityBase compound with its TX/RX sides bound to the LTE (FI wire format, TS 36.322) entity profiles. Selected by BearerManagement for LTE bearers via its lteRlcUmEntityModuleType parameter, which defaults to this type. |
| NrRlcAmEntity | compound module |
RLC AM entity of an NR data radio bearer: the RlcAmEntityBase compound with its TX/RX sides bound to the NR (SI/SO wire format, TS 38.322) entity profiles. Selected by BearerManagement for NR bearers via its nrRlcAmEntityModuleType parameter. |
| NrRlcUmEntity | compound module |
RLC UM entity of an NR data radio bearer: the RlcUmEntityBase compound with its TX/RX sides bound to the NR (SI/SO wire format, TS 38.322) entity profiles. Selected by BearerManagement for NR bearers via its nrRlcUmEntityModuleType parameter. |
| RlcAmEntityBase | compound module |
Base type of the RLC AM entity of one data radio bearer: packages the transmitting and the receiving side into the single bidirectional entity of TS 36.322 / 38.322 section 4.2.1. Created dynamically by BearerManagement, one per (peer, DRB) pair. |
| RlcMux | simple module |
Lower-layer RLC packet dispatcher. |
| RlcTmEntity | compound module |
RLC TM entity of one data radio bearer: packages the transmitting and the receiving side (TS 36.322 / 38.322 model an entity per bearer). Created dynamically by BearerManagement, one per (peer, DRB) pair; a bearer with traffic in one direction only simply leaves the other side idle. |
| RlcUmEntityBase | compound module |
Base type of the RLC UM entity of one data radio bearer: packages the transmitting and the receiving side (TS 36.322 / 38.322 model an entity per bearer). Created dynamically by BearerManagement, one per (peer, DRB) pair; a bearer with traffic in one direction only simply leaves the other side idle. |
simu5g.stack.rlc.am
| Name | Type | Description |
|---|---|---|
| LteRlcAmRxEntity | simple module |
LTE (TS 36.322) receiving side of the Acknowledged Mode (AM) of the RLC layer: PDU-SN receiving window with byte-interval coverage for AMD PDU segments, t-Reordering + t-StatusProhibit, ACK_SN + NACK-list STATUS reports, in-order FI-walk reassembly of the concatenated SDU stream. Shares the common RlcAmRxEntityBase shell with the NR profile NrRlcAmRxEntity, whose window/status machinery it deliberately mirrors. Bound by default inside the LteRlcAmEntity compound. |
| LteRlcAmTxEntity | simple module |
LTE (TS 36.322) transmission side of the Acknowledged Mode (AM) of the RLC layer: one AMD PDU per MAC grant built by concatenation (FI framing), the built PDU as the ARQ unit, NACK-driven retransmission with re-segmentation into AMD PDU segments, pollPDU/pollByte-driven status polling with t-PollRetransmit, and radio link failure at maxRtxThreshold retransmissions. Shares the common RlcAmTxEntityBase shell with the NR profile NrRlcAmTxEntity, whose ARQ skeleton it deliberately mirrors. Bound by default inside the LteRlcAmEntity compound. |
| NrRlcAmRxEntity | simple module |
NR (TS 38.322) receiving side of the Acknowledged Mode (AM) of the RLC layer: SO byte-coverage reassembly with a per-SDU SN window, t-Reassembly + t-StatusProhibit timers. Shares the common RlcAmRxEntityBase shell with the LTE profile LteRlcAmRxEntity. Bound by default inside the NrRlcAmEntity compound. The NR SO-reassembly statistics are declared here so they are recorded only for NR-selected entities. |
| NrRlcAmTxEntity | simple module |
NR (TS 38.322) transmission side of the Acknowledged Mode (AM) of the RLC layer: byte-offset (SO) segmentation with re-segmentation on retransmission, pollByte/pollPDU-driven status polling. Shares the common RlcAmTxEntityBase shell with the LTE profile LteRlcAmTxEntity. Bound by default inside the NrRlcAmEntity compound. The NR SO-segmentation statistics are declared here so they are recorded only for NR entities. |
simu5g.stack.rlc.tm
| Name | Type | Description |
|---|---|---|
| RlcTmRxEntity | simple module |
Implements the receiving side of the Transparent Mode (TM) of the Radio Link Control (RLC) layer for a specific connection. Simply forwards received PDUs to the upper layer without reassembly or reordering. |
| RlcTmTxEntity | simple module |
Implements the transmission side of the Transparent Mode (TM) of the Radio Link Control (RLC) layer for a specific connection. Buffers SDUs from the upper layer and, upon receiving a MAC SDU request, sends the next queued PDU without segmentation or concatenation. |
simu5g.stack.rlc.um
| Name | Type | Description |
|---|---|---|
| LteRlcUmRxEntity | simple module |
LTE (TS 36.322) receiving side of the Unacknowledged Mode (UM) of the RLC layer: FI-walk reassembly across concatenated PDUs with a PDU-SN reordering window and a t-Reordering timer. Shares the common RlcUmRxEntityBase shell (MAC-mux plumbing, D2D hooks, UL burst-throughput accounting) with the NR profile NrRlcUmRxEntity. Bound by default inside the LteRlcUmEntity compound. Its throughput/delay statistics are emitted on the sibling rlcMux module (see RlcMux). |
| LteRlcUmTxEntity | simple module |
LTE (TS 36.322) transmission side of the Unacknowledged Mode (UM) of the RLC layer: FI framing + concatenation of multiple SDUs per PDU, one sequence number per PDU. Shares the common RlcUmTxEntityBase shell (MAC plumbing, D2D mode-switch machinery) with the NR profile NrRlcUmTxEntity. Bound by default inside the LteRlcUmEntity compound. |
| NrRlcUmRxEntity | simple module |
NR (TS 38.322) receiving side of the Unacknowledged Mode (UM) of the RLC layer: SI + byte-offset (SO) reassembly with a per-SDU SN window and a t-Reassembly timer. Shares the common RlcUmRxEntityBase shell with the LTE profile LteRlcUmRxEntity. Bound by default inside the NrRlcUmEntity compound. The NR SO-reassembly statistics are declared here so they are recorded only for NR entities. |
| NrRlcUmTxEntity | simple module |
NR (TS 38.322) transmission side of the Unacknowledged Mode (UM) of the RLC layer: SI + byte-offset (SO) segmentation, one SDU segment per PDU, one sequence number per SDU. Shares the common RlcUmTxEntityBase shell (MAC plumbing, D2D mode-switch machinery) with the LTE profile LteRlcUmTxEntity. Bound by default inside the NrRlcUmEntity compound. The NR SO-segmentation statistics are declared here so they are recorded only for NR entities. |
simu5g.stack.rrc
| Name | Type | Description |
|---|---|---|
| BearerManagement | simple module |
RRC Bearer Management — creates and tears down PDCP, RLC and MAC entities for data radio bearers. |
| DrbTable | simple module |
The node's data radio bearer configuration: one descriptor per bearer, holding the bearer's SDAP configuration and the RLC/logical-channel configuration of its radio bearer (modeled on the DRB-ToAddMod and RLC-BearerConfig records of TS 38.331). |
| HandoverController | simple module |
UE-side component that manages handover decisions and procedures. Receives RSSI measurements from the PHY layer based on broadcast frames, and triggers handover when a better serving cell is detected. |
| IBearerManagement | module interface |
Interface for the bearer management component of the IRrc layer: creates and tears down the PDCP, RLC and MAC entities of data radio bearers. |
| IDrbTable | module interface |
Interface for the data radio bearer configuration table of the RRC layer. |
| IHandoverController | module interface |
Interface for the handover controller of the IRrc layer: the UE-side component that tracks the serving cell of one stack leg and runs its handovers. One instance per leg; the Rrc compound instantiates the LTE and the NR one. |
| IRegistration | module interface |
Interface for the registration component of the IRrc layer: registers the node (and its stack legs) with the Binder, sets up the network interface, and joins multicast groups. |
| IRrc | module interface |
Interface for the RRC (Radio Resource Control) layer of the LTE/NR Stack. |
| Registration | simple module |
RRC Registration — registers the node with the Binder, sets up the network interface, and joins multicast groups. |
| Rrc | compound module |
RRC (Radio Resource Control) layer for LTE/NR networks. |
simu5g.stack.sdap
| Name | Type | Description |
|---|---|---|
| INrSdap | module interface |
Interface for SDAP protocol implementations. |
| IQosFlowClassifier | module interface |
Interface for the UE's uplink QoS-flow classifier (see QosFlowClassifier). |
| NrSdap | simple module |
Implements the SDAP Protocol. |
| QosFlowClassifier | simple module |
Classifies a UE's uplink packets to QoS flows: the uplink counterpart of TrafficFlowFilter's QFI assignment, sitting where uplink traffic enters the UE's stack just as the TFF sits where downlink traffic enters the tunnel at the core network. Each direction is classified once, at its ingress. |
simu5g.stack.sdap.common
| Name | Type | Description |
|---|---|---|
| IReflectiveQosTable | module interface |
Interface for Reflective QoS Table modules. |
| ReflectiveQosTable | simple module |
ReflectiveQosTable maintains a table of QoS flow mappings for reflective QoS. |
simu5g.world.radio
| Name | Type | Description |
|---|---|---|
| ChannelControl | simple module |
Utility module that records the position of each radio module in the network. Exactly one instance of this module (or its derived extensions) must be present in the network. Note that channel parameters in this module are obsolete and are not utilized. |
| LteChannelControl | simple module |
Utility module that records the position of each LTE radio module in the network. Exactly one instance of this module must be present in the network. Note that channel parameters in this module are obsolete and not utilized. |
simu5g.x2
| Name | Type | Description |
|---|---|---|
| IX2User | module interface |
Interface for modules that need to interact with the LteX2Manager to utilize X2 communication to perform tasks such as handover, dual connectivity, and Coordinated Multi-Point. |
| LteX2App | compound module |
Represents the container for all X2 applications that an e/gNodeB instantiates to enable X2 communications with its peer e/gNodeBs. Specifically, for each peer, this module contains two submodules: |
| LteX2Manager | simple module |
Serves as a pluggable interface for submodules of the e/gNodeB's LTE/NR protocol stack that implement functionalities requiring the use of the X2 interface for communication with peer e/gNodeBs, such as handover, dual connectivity, and Coordinated MultiPoint (CoMP). Simplifies the interaction for such submodules by abstracting the details of X2Apps, which are the modules responsible for the actual communication through the X2 interface. |
| X2AppClient | simple module |
Extends INET's SctpClient application by adding an output gate to send messages to the LteX2Manager and manages the connection initiation towards the peer's server module based on the configuration specified in the .ini file. Once the connection has been established, it receives messages from the peer's server module and forwards them to the LteX2Manager module for further processing and redirection to the intended submodule of the LTE/NR protocol stack. |
| X2AppServer | simple module |
Extends the INET's SctpServer application by adding an input gate to receive messages from the X2 Manager module. The X2AppServer module is responsible for handling messages from the X2 Manager and forwarding them to the peer's client X2App via the SCTP layer. It ensures that the messages are properly encapsulated in SCTP packets before being sent. |