NrRlcAmTxEntity

Package: simu5g.stack.rlc.am

NrRlcAmTxEntity

simple module

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.

Inheritance diagram

The following diagram shows inheritance relationships for this type. Unresolved types are missing from the 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
dynamic true
display i=block/layer

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
receivedPacketFromUpperLayer
sentPacketToLowerLayer
txWindowOccupation
wastedGrantedBytes
requestedPduSize
enqueuedSduSize
enqueuedSduRate
txWindowFull
retransmissionPdu

Statistics

Name Title Source Record Unit Interpolation Mode Description
receivedPacketFromUpperLayer receivedPacketFromUpperLayer count, sum(packetBytes), vector(packetBytes) none
sentPacketToLowerLayer sentPacketToLowerLayer count, sum(packetBytes), vector(packetBytes) none
txWindowOccupation TX window occupation txWindowOccupation mean, vector
wastedGrantedBytes Wasted granted bytes wastedGrantedBytes sum B
requestedPduSize Requested PDU size requestedPduSize vector B
enqueuedSduSize Enqueued SDU size enqueuedSduSize vector B
enqueuedSduRate Enqueued SDU rate enqueuedSduRate vector
txWindowFull TX window full events txWindowFull count
retransmissionPdu Retransmitted PDUs retransmissionPdu count

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