RlcAmEntityBase

Package: simu5g.stack.rlc

compound module RlcAmEntityBase

Base type of the RLC AM entity of one data radio bearer: packages the transmitting and the receiving side into the single bidirectional entity of TS 36.322 / 38.322 section 4.2.1. Created dynamically by BearerManagement, one per (peer, DRB) pair.

This base type binds no TX/RX entity types; the concrete subclasses do (LteRlcAmEntity, NrRlcAmEntity), so it is not instantiable on its own.

The receiving side hands control PDUs to the co-located transmitting side over two internal connections:

  • feedback: STATUS PDUs received from the peer, consumed by the TX side’s ARQ (acknowledgements for data this entity transmitted);

  • status: locally generated STATUS reports, which the TX side transmits to the peer on this bearer’s logical channel (data and control PDUs share the logical channel in AM).

Usage diagram

Inheritance diagram

Known subclasses

Name

Type

Description

LteRlcAmEntity

compound module

RLC AM entity of an LTE data radio bearer: the RlcAmEntityBase compound with its TX/RX sides bound to the LTE (FI wire format, TS 36.322) entity profiles. Selected by BearerManagement for LTE bearers via its lteRlcAmEntityModuleType parameter, which defaults to this type.

NrRlcAmEntity

compound module

RLC AM entity of an NR data radio bearer: the RlcAmEntityBase compound with its TX/RX sides bound to the NR (SI/SO wire format, TS 38.322) entity profiles. Selected by BearerManagement for NR bearers via its nrRlcAmEntityModuleType parameter.

Parameters

Name

Type

Default value

Description

macModule

string

“^.mac”

This bearer leg’s MAC; set per leg by BearerManagement

bearerManagementModule

string

“^.rrc.bearerManagement”

Notified of radio link failures

Properties

Name

Value

Description

display

i=block/wheelbarrow

dynamic

true

Gates

Name

Direction

Size

Description

upperIn

input

SDUs from PDCP

upperOut

output

Reassembled SDUs to PDCP

lowerIn

input

PDUs from RlcMux (data + control)

lowerOut

output

PDUs and new-data notifications to RlcMux/MAC

macIn

input

MAC SDU requests via RlcMux

Source code

//
// Base type of the RLC AM entity of one data radio bearer: packages the
// transmitting and the receiving side into the single bidirectional entity of
// TS 36.322 / 38.322 section 4.2.1. Created dynamically by BearerManagement,
// one per (peer, DRB) pair.
//
// This base type binds no TX/RX entity types; the concrete subclasses do
// (~LteRlcAmEntity, ~NrRlcAmEntity), so it is not instantiable on its own.
//
// The receiving side hands control PDUs to the co-located transmitting side
// over two internal connections:
//  - feedback: STATUS PDUs received from the peer, consumed by the TX side's ARQ
//    (acknowledgements for data this entity transmitted);
//  - status: locally generated STATUS reports, which the TX side transmits to
//    the peer on this bearer's logical channel (data and control PDUs share
//    the logical channel in AM).
//
module RlcAmEntityBase
{
    parameters:
        @dynamic(true);
        @display("i=block/wheelbarrow");
        string macModule = default("^.mac");   // This bearer leg's MAC; set per leg by BearerManagement
        string bearerManagementModule = default("^.rrc.bearerManagement");   // Notified of radio link failures
        *.macModule = default(absPath(this.macModule));
        *.bearerManagementModule = default(absPath(this.bearerManagementModule));
    gates:
        input upperIn;    // SDUs from PDCP
        output upperOut;  // Reassembled SDUs to PDCP
        input lowerIn;    // PDUs from RlcMux (data + control)
        output lowerOut;  // PDUs and new-data notifications to RlcMux/MAC
        input macIn;      // MAC SDU requests via RlcMux
    submodules:
        tx: <> like IRlcAmTxEntity {
            @display("p=50,50");
        }
        rx: <> like IRlcAmRxEntity {
            @display("p=150,50");
        }
    connections:
        upperIn --> { @display("m=n"); } --> tx.in;
        macIn --> { @display("m=s"); } --> tx.macIn;
        tx.out --> { @display("m=s"); } --> lowerOut;
        lowerIn --> { @display("m=s"); } --> rx.in;
        rx.out --> { @display("m=n"); } --> upperOut;
        rx.feedbackOut --> tx.feedbackIn;      // received STATUS PDUs -> TX-side ARQ
        rx.statusOut --> tx.statusIn;  // own STATUS reports -> TX for transmission
}

File: src/simu5g/stack/rlc/RlcAmEntityBase.ned