LteRlcAmTxEntity

Package: simu5g.stack.rlc.am

simple module LteRlcAmTxEntity

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.

simu5g.stack.rlc.am.LteRlcAmTxEntityLteRlcAmTxEntitysimple

Inheritance diagram

Parameters

Name

Type

Default value

Description

AM_Window_Size

int

512

TS 36.322: 512 (10-bit SN space)

pollByte

int

125kB

pollPDU

int

64

maxRtxThreshold

int

4

t_PollRetransmit

double

80ms

bearerManagementModule

string

Notified when maxRtxThreshold is reached; set by the enclosing entity

Properties

Name

Value

Description

display

i=block/layer

dynamic

true

Gates

Name

Direction

Size

Description

in

input

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

macIn

input

MAC SDU requests, via the RlcMux

out

output

PDUs and new-data notifications to MAC, via the RlcMux

feedbackIn

input

STATUS PDUs received from the peer, from the co-located RX side (to ARQ)

statusIn

input

Locally generated STATUS reports, from the co-located RX side (to transmit)

Signals

Name

Type

Unit

Description

enqueuedSduRate

enqueuedSduSize

receivedPacketFromUpperLayer

requestedPduSize

retransmissionPdu

sentPacketToLowerLayer

txWindowFull

txWindowOccupation

wastedGrantedBytes

Statistics

Name

Title

Source

Record

Unit

Interpolation Mode

Description

enqueuedSduRate

Enqueued SDU rate

enqueuedSduRate

mean

enqueuedSduSize

Enqueued SDU size

enqueuedSduSize

mean

B

receivedPacketFromUpperLayer

receivedPacketFromUpperLayer

count,”sum(packetBytes)”

none

requestedPduSize

Requested PDU size

requestedPduSize

mean

B

retransmissionPdu

Retransmitted PDUs

retransmissionPdu

count

sentPacketToLowerLayer

sentPacketToLowerLayer

count,”sum(packetBytes)”

none

txWindowFull

TX window full events

txWindowFull

count

txWindowOccupation

TX window occupation

txWindowOccupation

mean

wastedGrantedBytes

Wasted granted bytes

wastedGrantedBytes

sum

B

Source code

//
// 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.
//
simple LteRlcAmTxEntity like simu5g.stack.rlc.IRlcAmTxEntity
{
    parameters:
        @dynamic(true);
        @display("i=block/layer");
        int AM_Window_Size = default(512);       // TS 36.322: 512 (10-bit SN space)
        int pollByte @unit(B) = default(125kB);
        int pollPDU = default(64);
        int maxRtxThreshold = default(4);
        double t_PollRetransmit @unit(s) = default(80ms);
        string bearerManagementModule;   // Notified when maxRtxThreshold is reached; set by the enclosing entity

        @signal[receivedPacketFromUpperLayer];
        @statistic[receivedPacketFromUpperLayer](source="receivedPacketFromUpperLayer"; record=count,"sum(packetBytes)"; interpolationmode=none);
        @signal[sentPacketToLowerLayer];
        @statistic[sentPacketToLowerLayer](source="sentPacketToLowerLayer"; record=count,"sum(packetBytes)"; interpolationmode=none);
        @signal[txWindowOccupation];
        @statistic[txWindowOccupation](title="TX window occupation"; source="txWindowOccupation"; record=mean);
        @signal[wastedGrantedBytes];
        @statistic[wastedGrantedBytes](title="Wasted granted bytes"; unit="B"; source="wastedGrantedBytes"; record=sum);
        @signal[requestedPduSize];
        @statistic[requestedPduSize](title="Requested PDU size"; unit="B"; source="requestedPduSize"; record=mean);
        @signal[enqueuedSduSize];
        @statistic[enqueuedSduSize](title="Enqueued SDU size"; unit="B"; source="enqueuedSduSize"; record=mean);
        @signal[enqueuedSduRate];
        @statistic[enqueuedSduRate](title="Enqueued SDU rate"; source="enqueuedSduRate"; record=mean);
        @signal[txWindowFull];
        @statistic[txWindowFull](title="TX window full events"; source="txWindowFull"; record=count);
        @signal[retransmissionPdu];
        @statistic[retransmissionPdu](title="Retransmitted PDUs"; source="retransmissionPdu"; record=count);

    gates:
        input in;       // SDUs from the PDCP layer (direct per-DRB connection, not via a mux)
        input macIn;    // MAC SDU requests, via the RlcMux
        output out;     // PDUs and new-data notifications to MAC, via the RlcMux
        input feedbackIn;   // STATUS PDUs received from the peer, from the co-located RX side (to ARQ)
        input statusIn; // Locally generated STATUS reports, from the co-located RX side (to transmit)
}

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