RlcAmEntityBase

Package: simu5g.stack.rlc

RlcAmEntityBase

compound module

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).
tx : like IRlcAmTxEntity

IRlcAmTxEntity: Transmitting side of an RLC AM entity: extends the generic TX interface with the gates over which...

Source:
tx: <> like IRlcAmTxEntity {
    @display("p=50,50");
} rx : like IRlcAmRxEntity

IRlcAmRxEntity: Receiving side of an RLC AM entity: extends the generic RX interface with the gates over which it...

Source:
rx: <> like IRlcAmRxEntity {
    @display("p=150,50");
}

Usage diagram

The following diagram shows usage relationships between types. Unresolved types are missing from the diagram.

Inheritance diagram

The following diagram shows inheritance relationships for this type. Unresolved types are missing from the 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
dynamic true
display i=block/wheelbarrow

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