RlcMux
Package: simu5g.stack.rlc
RlcMux
simple moduleLower-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