Package: simu5g.stack.rlc.am
NrRlcAmRxEntity
simple moduleNR (TS 38.322) receiving side of the Acknowledged Mode (AM) of the RLC layer: SO byte-coverage reassembly with a per-SDU SN window, t-Reassembly + t-StatusProhibit timers. Shares the common RlcAmRxEntityBase shell with the LTE profile LteRlcAmRxEntity. Bound by default inside the NrRlcAmEntity compound. The NR SO-reassembly statistics are declared here so they are recorded only for NR-selected 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) |
| t_Reassembly | double | 80ms | |
| t_StatusProhibit | double | 100ms |
Properties
| Name | Value | Description |
|---|---|---|
| dynamic | true | |
| display | i=block/layer |
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 | |||
| sentPacketToUpperLayer | |||
| rxWindowOccupation | |||
| rlcDelayDl | |||
| rlcThroughputDl | |||
| rlcDelayUl | |||
| rlcThroughputUl | |||
| rlcPduDelayDl | |||
| rlcPduThroughputDl | |||
| rlcPduDelayUl | |||
| rlcPduThroughputUl | |||
| rlcPacketLossDl | |||
| rlcPacketLossUl |
Statistics
| Name | Title | Source | Record | Unit | Interpolation Mode | Description |
|---|---|---|---|---|---|---|
| receivedPacketFromLowerLayer | receivedPacketFromLowerLayer | count, sum(packetBytes), vector(packetBytes) | none | |||
| sentPacketToUpperLayer | sentPacketToUpperLayer | count, sum(packetBytes), vector(packetBytes) | none | |||
| rxWindowOccupation | RX window occupation | rxWindowOccupation | mean, vector | |||
| rlcDelayDl | Delay at the rlc layer DL | rlcDelayDl | mean | s | ||
| rlcThroughputDl | Throughput at the rlc layer DL | rlcThroughputDl | simu5g_rateavg | Bps | ||
| rlcDelayUl | Delay at the rlc layer UL | rlcDelayUl | mean | s | ||
| rlcThroughputUl | Throughput at the rlc layer UL | rlcThroughputUl | simu5g_rateavg | Bps | ||
| rlcPduDelayDl | PDU delay at the rlc layer DL | rlcPduDelayDl | mean | s | ||
| rlcPduThroughputDl | PDU throughput at the rlc layer DL | rlcPduThroughputDl | simu5g_rateavg | Bps | ||
| rlcPduDelayUl | PDU delay at the rlc layer UL | rlcPduDelayUl | mean | s | ||
| rlcPduThroughputUl | PDU throughput at the rlc layer UL | rlcPduThroughputUl | simu5g_rateavg | Bps | ||
| rlcPacketLossDl | Packet loss at the rlc layer DL | rlcPacketLossDl | mean | |||
| rlcPacketLossUl | Packet loss at the rlc layer UL | rlcPacketLossUl | mean |
Source code
// // NR (TS 38.322) receiving side of the Acknowledged Mode (AM) of the RLC // layer: SO byte-coverage reassembly with a per-SDU SN window, t-Reassembly + // t-StatusProhibit timers. Shares the common RlcAmRxEntityBase shell with the // LTE profile ~LteRlcAmRxEntity. Bound by default inside the ~NrRlcAmEntity // compound. The NR SO-reassembly statistics are declared here so they are // recorded only for NR-selected entities. // simple NrRlcAmRxEntity like simu5g.stack.rlc.IRlcAmRxEntity { parameters: @dynamic(true); @display("i=block/layer"); int AM_Window_Size = default(2048); // 2048 (12-bit SN) or 131072 (18-bit SN) double t_Reassembly @unit(s) = default(80ms); double t_StatusProhibit @unit(s) = default(100ms); @signal[receivedPacketFromLowerLayer]; @statistic[receivedPacketFromLowerLayer](source="receivedPacketFromLowerLayer"; record=count,"sum(packetBytes)","vector(packetBytes)"; interpolationmode=none); @signal[sentPacketToUpperLayer]; @statistic[sentPacketToUpperLayer](source="sentPacketToUpperLayer"; record=count,"sum(packetBytes)","vector(packetBytes)"; interpolationmode=none); @signal[rxWindowOccupation]; @statistic[rxWindowOccupation](title="RX window occupation"; source="rxWindowOccupation"; record=mean,vector); //# 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) }File: src/simu5g/stack/rlc/am/NrRlcAmRxEntity.ned