LteRlc

Package: simu5g.stack.rlc

LteRlc

compound module

The LteRlc module implements the functionalities of the Radio Link Control (RLC) layer. It provides mechanisms for end-to-end connectivity over the radio interface. It sends and receives RLC Service Data Units (SDUs) to and from the Packet Data Convergence Protocol (PDCP) layer, and sends and receives RLC Protocol Data Units (PDUs) to and from the Medium Access Control (MAC) layer. Depending on the mode, this layer can provide segmentation, concatenation, in-sequence delivery, and retransmission of PDUs. Currently, only the Unacknowledged Mode (UM) has been implemented.

tm : LteRlcTm

This module implements the functionalities of the Transparent Mode (TM) of the Radio Link Control...

Source:
tm: LteRlcTm {
    @display("p=100,100;");
} um : like ILteRlcUm

ILteRlcUm: Interface module for the Unacknowledged Mode (UM) of the Radio Link Control (RLC) layer.

Source:
um: <(d2dCapable ? "LteRlcUmD2D" : "LteRlcUm")> like ILteRlcUm {
    @display("p=200,100;");
} am : LteRlcAm

This module implements the functionalities of the Acknowledged Mode (AM) of the Radio Link Control...

Source:
am: LteRlcAm {
    @display("p=300,100;");
}

           // Muxer Module mux : LteRlcMux

This module functions as a (de)multiplexer between the submodules of the ~LteRlc module...

Source:
mux: LteRlcMux {
    @display("p=200,200");
}

Usage diagram

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

Used in compound modules

Name Type Description
LteNicBase compound module

The LteNicBase module serves as the foundational building block for LTE networking in Simu5G. It integrates protocols for LTE communication, including PDCP, RLC, MAC, and PHY layers. This base module allows higher-level modules, such as User Equipment (UE) and eNodeB (evolved Node B), to configure and utilize these layers according to their specific requirements.

NRNicUe compound module

This module defines a User Equipment (UE) network interface card that supports both LTE and NR (New Radio) technologies. It extends the LteNicUeD2D module by adding additional submodules and parameters to support NR-specific functionalities.

Parameters

Name Type Default value Description
d2dCapable bool

inherit the value from the parent module

Properties

Name Value Description
display i=block/transport

Gates

Name Direction Size Description
TM_Sap inout

Transparent Mode SAP

UM_Sap inout

Unacknowledged Mode SAP

AM_Sap inout

Acknowledged Mode SAP

MAC_to_RLC input

MAC to RLC

RLC_to_MAC output

RLC to MAC

Unassigned submodule parameters

Name Type Default value Description
tm.queueSize int 2MiB

RLC SDU queue size (0: unlimited)

um.queueSize int
um.mapAllLcidsToSingleBearer bool

Source code

//
// The LteRlc module implements the functionalities of the Radio Link Control (RLC) layer.
// It provides mechanisms for end-to-end connectivity over the radio interface. It
// sends and receives RLC Service Data Units (SDUs) to and from the Packet Data Convergence
// Protocol (PDCP) layer, and sends and receives RLC Protocol Data Units (PDUs) to and from the
// Medium Access Control (MAC) layer. Depending on the mode, this layer can provide
// segmentation, concatenation, in-sequence delivery, and retransmission of PDUs.
// Currently, only the Unacknowledged Mode (UM) has been implemented.
//
module LteRlc
{
    parameters:
        @display("i=block/transport");
        bool d2dCapable;                                             // inherit the value from the parent module

    gates:
        //#
        //# Gates connecting PDCP/RRC and RLC Layers
        //#

        inout TM_Sap;    // Transparent Mode SAP
        inout UM_Sap;    // Unacknowledged Mode SAP
        inout AM_Sap;    // Acknowledged Mode SAP

        //#
        //# Gates connecting RLC and MAC Layers
        //#

        input MAC_to_RLC;    // MAC to RLC
        output RLC_to_MAC;    // RLC to MAC

    submodules:
        // TM Module
        tm: LteRlcTm {
            @display("p=100,100;");
        }

        // UM Module
        um: <(d2dCapable ? "LteRlcUmD2D" : "LteRlcUm")> like ILteRlcUm {
            @display("p=200,100;");
        }

        // AM Module
        am: LteRlcAm {
            @display("p=300,100;");
        }

           // Muxer Module
        mux: LteRlcMux {
            @display("p=200,200");
        }

    connections:
        //#
        //# Connections from RLC (up)
        //# to TM/UM/AM modules
        //#
        tm.TM_Sap_up <--> TM_Sap;
        um.UM_Sap_up <--> UM_Sap;
        am.AM_Sap_up <--> AM_Sap;

        //#
        //# Connections from TM/UM/AM
        //# modules to the RLC Mux
        //#
        tm.TM_Sap_down <--> mux.TM_Sap;
        um.UM_Sap_down <--> mux.UM_Sap;
        am.AM_Sap_down <--> mux.AM_Sap;

        //#
        //# Connections between Mux
        //# and RLC (down)
        //#
        mux.MAC_to_RLC <-- MAC_to_RLC;
        mux.RLC_to_MAC --> RLC_to_MAC;
}

File: src/stack/rlc/LteRlc.ned