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