NrRlcUmRxEntity

Package: simu5g.stack.rlc.um

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.

Inheritance diagram

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

Known subclasses

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

Parameters

Name Type Default value Description
macModule string "^.^.mac"

Set by the enclosing RlcUmEntityBase compound (per leg)

rlcMuxModule string "^.^.rlcMux"

This bearer's leg mux; set by the RlcUmEntityBase compound

UM_Window_Size int 2048

SDU reassembly window: 2048 (12-bit SN) or 32 (6-bit SN)

t_Reassembly double 80ms

Properties

Name Value Description
dynamic true
display i=block/layer

Gates

Name Direction Size Description
in input

PDUs from MAC, via the RlcMux

out output

Reassembled SDUs to the PDCP layer (direct per-DRB connection, not via a mux)

Signals

Name Type Unit Description
receivedPacketFromLowerLayer
sentPacketToUpperLayer
rlcDelayDl
rlcThroughputDl
rlcDelayUl
rlcThroughputUl
rlcPduDelayDl
rlcPduThroughputDl
rlcPduDelayUl
rlcPduThroughputUl

Statistics

Name Title Source Record Unit Interpolation Mode Description
receivedPacketFromLowerLayer receivedPacketFromLowerLayer count, sum(packetBytes), vector(packetBytes) none
sentPacketToUpperLayer sentPacketToUpperLayer count, sum(packetBytes), vector(packetBytes) none
rlcDelayDl Delay at the rlc layer DL rlcDelayDl mean s
rlcThroughputDl Throughput at the rlc layer DL rlcThroughputDl simu5g_rateavg Bps
rlcDelayUl Delay at the rlc layer UL rlcDelayUl mean s
rlcThroughputUl Throughput at the rlc layer UL rlcThroughputUl simu5g_rateavg Bps
rlcPduDelayDl PDU delay at the rlc layer DL rlcPduDelayDl mean s
rlcPduThroughputDl PDU throughput at the rlc layer DL rlcPduThroughputDl simu5g_rateavg Bps
rlcPduDelayUl PDU delay at the rlc layer UL rlcPduDelayUl mean s
rlcPduThroughputUl PDU throughput at the rlc layer UL rlcPduThroughputUl simu5g_rateavg Bps

Source code

//
// 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.
//
simple NrRlcUmRxEntity like simu5g.stack.rlc.IRlcRxEntity
{
    parameters:
        @dynamic(true);
        @display("i=block/layer");
        string macModule = default("^.^.mac");  // Set by the enclosing RlcUmEntityBase compound (per leg)
        string rlcMuxModule = default("^.^.rlcMux");  // This bearer's leg mux; set by the RlcUmEntityBase compound
        int UM_Window_Size = default(2048);     // SDU reassembly window: 2048 (12-bit SN) or 32 (6-bit SN)
        double t_Reassembly @unit(s) = default(80ms);

        @signal[receivedPacketFromLowerLayer];
        @statistic[receivedPacketFromLowerLayer](source="receivedPacketFromLowerLayer"; record=count,"sum(packetBytes)","vector(packetBytes)"; interpolationmode=none);
        @signal[sentPacketToUpperLayer];
        @statistic[sentPacketToUpperLayer](source="sentPacketToUpperLayer"; record=count,"sum(packetBytes)","vector(packetBytes)"; interpolationmode=none);


        //# Per-bearer statistics. A bearer serves one peer, so these are already
        //# per-UE; aggregate over a UE's bearers in the analysis tool.
        @signal[rlcDelayDl];
        @statistic[rlcDelayDl](title="Delay at the rlc layer DL"; unit="s"; source="rlcDelayDl"; record=mean);
        @signal[rlcThroughputDl];
        @statistic[rlcThroughputDl](title="Throughput at the rlc layer DL"; unit="Bps"; source="rlcThroughputDl"; record=simu5g_rateavg);
        @signal[rlcDelayUl];
        @statistic[rlcDelayUl](title="Delay at the rlc layer UL"; unit="s"; source="rlcDelayUl"; record=mean);
        @signal[rlcThroughputUl];
        @statistic[rlcThroughputUl](title="Throughput at the rlc layer UL"; unit="Bps"; source="rlcThroughputUl"; record=simu5g_rateavg);
        @signal[rlcPduDelayDl];
        @statistic[rlcPduDelayDl](title="PDU delay at the rlc layer DL"; unit="s"; source="rlcPduDelayDl"; record=mean);
        @signal[rlcPduThroughputDl];
        @statistic[rlcPduThroughputDl](title="PDU throughput at the rlc layer DL"; unit="Bps"; source="rlcPduThroughputDl"; record=simu5g_rateavg);
        @signal[rlcPduDelayUl];
        @statistic[rlcPduDelayUl](title="PDU delay at the rlc layer UL"; unit="s"; source="rlcPduDelayUl"; record=mean);
        @signal[rlcPduThroughputUl];
        @statistic[rlcPduThroughputUl](title="PDU throughput at the rlc layer UL"; unit="Bps"; source="rlcPduThroughputUl"; record=simu5g_rateavg);

    gates:
        input in;       // PDUs from MAC, via the RlcMux
        output out;     // Reassembled SDUs to the PDCP layer (direct per-DRB connection, not via a mux)
}
File: src/simu5g/stack/rlc/um/NrRlcUmRxEntity.ned