RlcMux

Package: simu5g.stack.rlc

RlcMux

simple module

Lower-layer RLC packet dispatcher.

Dispatches MAC packets to the correct RX entity or TX entity, and collects TX entity output to route to the MAC layer.

Inheritance diagram

The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.

Known subclasses

Name Type Description
RlcMuxD2D simple module

Device-to-Device (D2D) aware version of RlcMux. It additionally handles D2D mode switch notifications arriving from the MAC layer, dispatching them to the TX or RX UM entity of the affected bearer, and declares the D2D statistics (emitted by the D2D UM entities). Selected by the D2D-capable NICs.

Parameters

Name Type Default value Description
bearerManagementModule string "^.rrc.bearerManagement"

Properties

Name Value Description
class RlcMux
display p=100,200;i=block/dispatch

Gates

Name Direction Size Description
macIn input
macOut output
toRxEntity [ ] output

Dynamic: dispatches to RX entity in gates

fromTxEntity [ ] input

Dynamic: receives from TX entity out gates

macToTxEntity [ ] output

Dynamic: dispatches MAC SDU requests to TX entity macIn gates

Signals

Name Type Unit Description
receivedPacketFromLowerLayer
sentPacketToLowerLayer
rlcDelayDl
rlcThroughputDl
rlcDelayUl
rlcThroughputUl
rlcPduDelayDl
rlcPduThroughputDl
rlcPduDelayUl
rlcPduThroughputUl

Statistics

Name Title Source Record Unit Interpolation Mode Description
receivedPacketFromLowerLayer receivedPacketFromLowerLayer count, sum(packetBytes), vector(packetBytes) none
sentPacketToLowerLayer sentPacketToLowerLayer count, sum(packetBytes), vector(packetBytes) none
rlcDelayDl Delay at the rlc layer DL rlcDelayDl mean, vector s
rlcThroughputDl Throughput at the rlc layer DL rlcThroughputDl simu5g_rateavg, vector Bps
rlcDelayUl Delay at the rlc layer UL rlcDelayUl mean, vector s
rlcThroughputUl Throughput at the rlc layer UL rlcThroughputUl simu5g_rateavg, vector Bps
rlcPduDelayDl Delay at the rlc layer UL rlcPduDelayDl mean, vector s
rlcPduThroughputDl Throughput at the rlc layer DL rlcPduThroughputDl simu5g_rateavg, vector Bps
rlcPduDelayUl Delay at the rlc layer UL rlcPduDelayUl mean, vector s
rlcPduThroughputUl Throughput at the rlc layer UL rlcPduThroughputUl simu5g_rateavg, vector Bps

Source code

//
// Lower-layer RLC packet dispatcher.
//
// Dispatches MAC packets to the correct RX entity or TX entity,
// and collects TX entity output to route to the MAC layer.
//
simple RlcMux like IRlcMux
{
    parameters:
        @class("RlcMux");
        @display("p=100,200;i=block/dispatch");
        string bearerManagementModule = default("^.rrc.bearerManagement");

        @signal[receivedPacketFromLowerLayer];
        @statistic[receivedPacketFromLowerLayer](source="receivedPacketFromLowerLayer"; record=count,"sum(packetBytes)","vector(packetBytes)"; interpolationmode=none);
        @signal[sentPacketToLowerLayer];
        @statistic[sentPacketToLowerLayer](source="sentPacketToLowerLayer"; record=count,"sum(packetBytes)","vector(packetBytes)"; interpolationmode=none);

        //# SDU-level statistics
        @signal[rlcDelayDl];
        @statistic[rlcDelayDl](title="Delay at the rlc layer DL"; unit="s"; source="rlcDelayDl"; record=mean,vector);
        @signal[rlcThroughputDl];
        @statistic[rlcThroughputDl](title="Throughput at the rlc layer DL"; unit="Bps"; source="rlcThroughputDl"; record=simu5g_rateavg,vector);
        @signal[rlcDelayUl];
        @statistic[rlcDelayUl](title="Delay at the rlc layer UL"; unit="s"; source="rlcDelayUl"; record=mean,vector);
        @signal[rlcThroughputUl];
        @statistic[rlcThroughputUl](title="Throughput at the rlc layer UL"; unit="Bps"; source="rlcThroughputUl"; record=simu5g_rateavg,vector);

        //# PDU-level statistics
        @signal[rlcPduDelayDl];
        @statistic[rlcPduDelayDl](title="Delay at the rlc layer UL"; unit="s"; source="rlcPduDelayDl"; record=mean,vector);
        @signal[rlcPduThroughputDl];
        @statistic[rlcPduThroughputDl](title="Throughput at the rlc layer DL"; unit="Bps"; source="rlcPduThroughputDl"; record=simu5g_rateavg,vector);
        @signal[rlcPduDelayUl];
        @statistic[rlcPduDelayUl](title="Delay at the rlc layer UL"; unit="s"; source="rlcPduDelayUl"; record=mean,vector);
        @signal[rlcPduThroughputUl];
        @statistic[rlcPduThroughputUl](title="Throughput at the rlc layer UL"; unit="Bps"; source="rlcPduThroughputUl"; record=simu5g_rateavg,vector);

    gates:
        input macIn;
        output macOut;
        output toRxEntity[];          // Dynamic: dispatches to RX entity in gates
        input fromTxEntity[];         // Dynamic: receives from TX entity out gates
        output macToTxEntity[];       // Dynamic: dispatches MAC SDU requests to TX entity macIn gates
}
File: src/simu5g/stack/rlc/RlcMux.ned