NrRlcAmTxEntity

Package: simu5g.stack.rlc.am

simple module NrRlcAmTxEntity

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.am.NrRlcAmTxEntityNrRlcAmTxEntitysimple

Inheritance diagram

Parameters

Name

Type

Default value

Description

AM_Window_Size

int

2048

2048 (12-bit SN) or 131072 (18-bit SN)

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

vector

enqueuedSduSize

Enqueued SDU size

enqueuedSduSize

vector

B

receivedPacketFromUpperLayer

receivedPacketFromUpperLayer

count,”sum(packetBytes)”,”vector(packetBytes)”

none

requestedPduSize

Requested PDU size

requestedPduSize

vector

B

retransmissionPdu

Retransmitted PDUs

retransmissionPdu

count

sentPacketToLowerLayer

sentPacketToLowerLayer

count,”sum(packetBytes)”,”vector(packetBytes)”

none

txWindowFull

TX window full events

txWindowFull

count

txWindowOccupation

TX window occupation

txWindowOccupation

mean,vector

wastedGrantedBytes

Wasted granted bytes

wastedGrantedBytes

sum

B

Source code

//
// 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.
//
simple NrRlcAmTxEntity like simu5g.stack.rlc.IRlcAmTxEntity
{
    parameters:
        @dynamic(true);
        @display("i=block/layer");
        int AM_Window_Size = default(2048);       // 2048 (12-bit SN) or 131072 (18-bit SN)
        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)","vector(packetBytes)"; interpolationmode=none);
        @signal[sentPacketToLowerLayer];
        @statistic[sentPacketToLowerLayer](source="sentPacketToLowerLayer"; record=count,"sum(packetBytes)","vector(packetBytes)"; interpolationmode=none);
        @signal[txWindowOccupation];
        @statistic[txWindowOccupation](title="TX window occupation"; source="txWindowOccupation"; record=mean,vector);
        @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=vector);
        @signal[enqueuedSduSize];
        @statistic[enqueuedSduSize](title="Enqueued SDU size"; unit="B"; source="enqueuedSduSize"; record=vector);
        @signal[enqueuedSduRate];
        @statistic[enqueuedSduRate](title="Enqueued SDU rate"; source="enqueuedSduRate"; record=vector);
        @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/NrRlcAmTxEntity.ned