LteRlcAmRxEntity

Package: simu5g.stack.rlc.am

simple module LteRlcAmRxEntity

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.

simu5g.stack.rlc.am.LteRlcAmRxEntityLteRlcAmRxEntitysimple

Inheritance diagram

Parameters

Name

Type

Default value

Description

AM_Window_Size

int

512

TS 36.322: 512 (10-bit SN space)

t_Reordering

double

80ms

t_StatusProhibit

double

100ms

Properties

Name

Value

Description

display

i=block/layer

dynamic

true

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)

feedbackOut

output

Received STATUS PDUs -> co-located TX side (ARQ)

statusOut

output

Own STATUS reports -> co-located TX side (transmission)

Signals

Name

Type

Unit

Description

receivedPacketFromLowerLayer

rlcDelayDl

rlcDelayUl

rlcPacketLossDl

rlcPacketLossUl

rlcPduDelayDl

rlcPduDelayUl

rlcPduThroughputDl

rlcPduThroughputUl

rlcThroughputDl

rlcThroughputUl

rxWindowOccupation

sentPacketToUpperLayer

Statistics

Name

Title

Source

Record

Unit

Interpolation Mode

Description

receivedPacketFromLowerLayer

receivedPacketFromLowerLayer

count,”sum(packetBytes)”

none

rlcDelayDl

Delay at the rlc layer DL

rlcDelayDl

mean

s

rlcDelayUl

Delay at the rlc layer UL

rlcDelayUl

mean

s

rlcPacketLossDl

Packet loss at the rlc layer DL

rlcPacketLossDl

mean

rlcPacketLossUl

Packet loss at the rlc layer UL

rlcPacketLossUl

mean

rlcPduDelayDl

PDU delay at the rlc layer DL

rlcPduDelayDl

mean

s

rlcPduDelayUl

PDU delay at the rlc layer UL

rlcPduDelayUl

mean

s

rlcPduThroughputDl

PDU throughput at the rlc layer DL

rlcPduThroughputDl

simu5g_rateavg

Bps

rlcPduThroughputUl

PDU throughput at the rlc layer UL

rlcPduThroughputUl

simu5g_rateavg

Bps

rlcThroughputDl

Throughput at the rlc layer DL

rlcThroughputDl

simu5g_rateavg

Bps

rlcThroughputUl

Throughput at the rlc layer UL

rlcThroughputUl

simu5g_rateavg

Bps

rxWindowOccupation

RX window occupation

rxWindowOccupation

mean

sentPacketToUpperLayer

sentPacketToUpperLayer

count,”sum(packetBytes)”

none

Source code

//
// 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.
//
simple LteRlcAmRxEntity like simu5g.stack.rlc.IRlcAmRxEntity
{
    parameters:
        @dynamic(true);
        @display("i=block/layer");
        int AM_Window_Size = default(512);       // TS 36.322: 512 (10-bit SN space)
        double t_Reordering @unit(s) = default(80ms);
        double t_StatusProhibit @unit(s) = default(100ms);

        @signal[receivedPacketFromLowerLayer];
        @statistic[receivedPacketFromLowerLayer](source="receivedPacketFromLowerLayer"; record=count,"sum(packetBytes)"; interpolationmode=none);
        @signal[sentPacketToUpperLayer];
        @statistic[sentPacketToUpperLayer](source="sentPacketToUpperLayer"; record=count,"sum(packetBytes)"; interpolationmode=none);
        @signal[rxWindowOccupation];
        @statistic[rxWindowOccupation](title="RX window occupation"; source="rxWindowOccupation"; record=mean);

        //# 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);
        @signal[rlcPacketLossDl];
        @statistic[rlcPacketLossDl](title="Packet loss at the rlc layer DL"; unit=""; source="rlcPacketLossDl"; record=mean);
        @signal[rlcPacketLossUl];
        @statistic[rlcPacketLossUl](title="Packet loss at the rlc layer UL"; unit=""; source="rlcPacketLossUl"; record=mean);

    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)
        output feedbackOut;   // Received STATUS PDUs -> co-located TX side (ARQ)
        output statusOut; // Own STATUS reports -> co-located TX side (transmission)
}

File: src/simu5g/stack/rlc/am/LteRlcAmRxEntity.ned