LteNicUeD2D

Package: simu5g.stack.d2d

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.

The PDCP and RLC entities are missing from the submodules on purpose: the RRC layer's BearerManagement creates them per bearer at run time.

pcapRecorder[numPcapRecorders] : PcapRecorder
[from inet] ↗

Records PCAP traces of frames sent/received by other modules within the same host.

Source:
pcapRecorder[numPcapRecorders]: PcapRecorder {
    parameters:
        moduleNamePatterns = ".^";
        @display("p=100,100;is=s");
} clock : like IClock

IClock [from inet] ↗: This module interface is implemented by clock models.

Source:
clock: <default("")> like IClock if typename != "" {
    parameters:
        @display("p=100,200;is=s");
} handoverPacketHolder : like IHandoverPacketHolder

IHandoverPacketHolder: Manages packet buffering/tunnelling during handover

Source:
handoverPacketHolder: <> like IHandoverPacketHolder {
    @display("p=440,50;is=s");
} ip2nic : like INetworkLayer2CellularNic

Ip2Nic: Bridges the IP network layer and the cellular protocol stack, handling bidirectional packet flow.

INetworkLayer2CellularNic: The INetworkLayer2CellularNic module interface serves as an intermediary between the network layer...

Source:
ip2nic: <default("Ip2Nic")> like INetworkLayer2CellularNic {
    nodeType = parent.nodeType;
    @display("p=310,120");
} rrc : like IRrc

Rrc: RRC (Radio Resource Control) layer for LTE/NR networks.

IRrc: Interface for the RRC (Radio Resource Control) layer of the LTE/NR Stack.

Source:
rrc: <default("Rrc")> like IRrc {
    @display("p=80,60,col;g=left");
} pdcpMux : like IPdcpMux

PdcpMux: Upper-layer PDCP packet dispatcher.

IPdcpMux: Module interface for the upper-layer PDCP packet dispatcher of a cellular NIC (see ~PdcpMux for the...

Source:
pdcpMux: <default("PdcpMux")> like IPdcpMux {
    @display("p=310,190;is=s");
} rlcMux : like IRlcMux

RlcMux: Lower-layer RLC packet dispatcher.

IRlcMux: Module interface for the lower-layer RLC packet dispatcher of a cellular NIC (see ~RlcMux for the...

Source:
rlcMux: <default("RlcMux")> like IRlcMux {
    @display("p=310,430;is=s");
} mac : like ILteMac

ILteMac: Interface for the Medium Access Control (MAC) layer of the LTE Stack.

Source:
mac: <> like ILteMac {
    @display("p=310,510");
} phy : like IPhy

IPhy: Interface for the Physical (PHY) layer of the LTE/NR protocol stack.

Source:
phy: <> like IPhy {
    @display("p=310,600");
} channelModel[numCarriers] : like IChannelModel

IChannelModel: Provides the interface for modules implementing the model of the radio channel.

Source:
channelModel[numCarriers]: <channelModelType> like IChannelModel {
    @display("p=80,60,col;g=left");
} packetFlowObserver : like IPacketFlowObserver

Source:
packetFlowObserver: <default("")> like IPacketFlowObserver if hasRniSupport {
    @display("p=80,60,col;g=left");
} dlFbGen : LteDlFeedbackGenerator

This is the Lte Downlink Feedback Generator.

Source:
dlFbGen: LteDlFeedbackGenerator {
    @display("p=80,60,col;g=left");
}

Inheritance diagram

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

Extends

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

Parameters

Name Type Default value Description
displayStringTextFormat string "%a (%i)\n%m"
recordPcap bool false
numPcapRecorders int recordPcap ? 1 : 0
isWireless bool true
interfaceTableModule string
routingTableModule string
hasRniSupport bool false
nodeType string
processingDelayIn double 0s

Additional processing delay for incoming ip packets

processingDelayOut double 0s

Additional processing delay for outgoing ip packets

channelModelType string "D2dChannelModel"
dualConnectivityEnabled bool false
numCarriers int 1
address string "auto"
d2dInitialMode bool false

Properties

Name Value Description
networkInterface
lifecycleSupport
class NonlayoutingNetworkInterface
display i=block/ifcard;bgb=800,650;bgl=3

Gates

Name Direction Size Description
upperLayerIn input
upperLayerOut output
radioIn input

To receive messages sent using sendDirect()

nrRadioIn input

For NR support

x2 [ ] inout

Optional X2 manager

Signals

Name Type Unit Description
packetDropped inet::Packet

Statistics

Name Title Source Record Unit Interpolation Mode Description
packetDropInterfaceDown packet drops: interface down packetDropReasonIsInterfaceDown(packetDropped) count, sum(packetBytes), vector(packetBytes) none
packetDropNoCarrier packet drops: no carrier packetDropReasonIsNoCarrier(packetDropped) count, sum(packetBytes), vector(packetBytes) none

Unassigned submodule parameters

Name Type Default value Description
pcapRecorder.verbose bool true

whether to log packets on the module output

pcapRecorder.pcapFile string ""

the PCAP file to be written

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

maximum number of bytes to record per packet

pcapRecorder.dumpBadFrames bool true

enable dump of frames with hasBitError

pcapRecorder.sendingSignalNames string "packetSentToLower"

space-separated list of outbound packet signals to subscribe to

pcapRecorder.receivingSignalNames string "packetReceivedFromLower"

space-separated list of inbound packet signals to subscribe to

pcapRecorder.dumpProtocols string "ethernetmac ppp ieee80211mac"

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

pcapRecorder.packetFilter object "*"

which packets are considered, matches all packets by default

pcapRecorder.helpers string ""

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

pcapRecorder.alwaysFlush bool false

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

pcapRecorder.displayStringTextFormat string "rec: %n pks"
ip2nic.isNr bool
rlcMux.bearerManagementModule string
packetFlowObserver.macModule string
packetFlowObserver.pdcpModule string
packetFlowObserver.rlcModule string
packetFlowObserver.isNrObserver bool
packetFlowObserver.pfmType string
dlFbGen.isNr bool false

True for the NR leg (set by NrNicUe on the nrDlFbGen submodule)

dlFbGen.macNodeId int

MacNodeId of the stack leg this generator belongs to (set by the NIC)

dlFbGen.feedbackType string "ALLBANDS"

Can be ALLBANDS, PREFERRED, WIDEBAND

dlFbGen.rbAllocationType string "localized"

Resource allocation type ("distributed" or "localized")

dlFbGen.fbPeriod int 6tti

Period for Periodic feedback in TTI

dlFbGen.fbDelay int 1tti

Time interval between sensing and transmission in TTI

dlFbGen.usePeriodic bool true

Whether periodic feedback is used in addition to aperiodic feedback

dlFbGen.initialTxMode string "SINGLE_ANTENNA_PORT0"

Initial txMode (see LteCommon.h)

dlFbGen.binderModule string "binder"
dlFbGen.phyModule string "^.phy"

Source code

//
// 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.
//
// The PDCP and RLC entities are missing from the submodules on purpose: the RRC
// layer's ~BearerManagement creates them per bearer at run time.
//
module LteNicUeD2D extends LteNicUe
{
    parameters:
        mac.typename = default("LteMacUeD2D");
        phy.typename = default("PhyUeD2D");
        packetFlowObserver.typename = default("PacketFlowObserverUe");
        ip2nic.typename = default("Ip2NicD2D");
        rlcMux.typename = default("RlcMuxD2D");
        rrc.bearerManagement.lteRlcUmEntityModuleType = default("simu5g.stack.d2d.rlc.LteRlcUmEntityD2D");

        // Use the D2D-capable channel model
        channelModelType = default("D2dChannelModel");

        rrc.typename = default("RrcD2D");
        rrc.handoverController.typename = default("HandoverControllerD2D");
        bool d2dInitialMode = default(false);
}

File: src/simu5g/stack/d2d/LteNicUeD2D.ned