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.
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)
}