ProDeveloperTutorial.com

Tutorials and Programming Solutions
Menu
  • Shell Scripting
  • System Design
  • Linux System Programming
  • 4g LTE
  • Coding questions
  • C
  • C++
  • DSA
  • GIT
  • 450 DSA Cracker
  • 5G NR
  • O-RAN

5G NR RLC Layer Introduction

prodevelopertutorial February 8, 2022

RLC layer is located between PDCP (or RRC layer) and MAC Layer.

It communicates with the PDCP layer (or RRC layer) through the RLC channel, and communicates with the MAC layer through logical channels.

Data received by RLC layer from PDCP layer is called as RLC SDU.

Data sent by RLC layer to MAC layer is called as RLC PDU.

RLC PDU can be either RLC data PDU or RLC control PDU

Services Provided to upper layers from RLC layer:

– TM data transfer;

– UM data transfer;

– AM data transfer, including indication of successful delivery of upper layers PDUs.

Services Expected from lower layers to RLC layer:

– data transfer;

– notification of a transmission opportunity, together with the total size of the RLC PDU(s) to be transmitted in the transmission opportunity.

Functions of RLC layer

– transfer of upper layer PDUs;

– error correction through ARQ (only for AM data transfer);

– segmentation and reassembly of RLC SDUs (only for UM and AM data transfer);

– re-segmentation of RLC SDU segments (only for AM data transfer);

– duplicate detection (only for AM data transfer);

– RLC SDU discard (only for UM and AM data transfer);

– RLC re-establishment;

– Protocol error detection (only for AM data transfer).

RLC Entities

5G NR operates in 3 different modes:

1. TM: Transparent Mode: There will be No RLC Header, No Segmentation/Reassembly, No feedback

2. UM: Unacknowledge Mode: RLC Header, Buffering at both Tx and Rx, Segmentation/Reassembly, No feedback

3. AM: Acknowledge Mode: RLC Header, Buffering at both Tx and Rx, Segmentation/Reassembly, Feedback

From the above image we can see below points:

1. BCCH, PCCH, CCCH use RLC TM

2. DCCH use RLC AM

3. DTCH use RLC UM or AM

1. SRB0 bearer, paging and system information broadcast use TM transmission mode

2. Other SRB bearers use AM transmission mode

3. DRB bearer can use AM or UM mode

Entities:

The TM transmission mode includes two entities: a sending entity and a receiving entity;

The UM transmission mode includes two entities: a sending entity and a receiving entity;

AM transmission mode contains only one entity for both sending and receiving to facilitate ARQ processing.

RLC Procedures

TM data transfer Procedure

UM data transfer Procedure

AM data transfer Procedure

ARQ procedure

How 5G NR RLC is different than 4G LTE RLC?

5G NR RLC cannot do Concatenation.

Concatenation is when a multiple RLC SDU can be combined into a single RLC PDU.

Segmentation is when a single RLC SDU is segmented into multiple RLC PDU.

LTE RLC can do both Concatenation and Segmentation.

Where as 5G NR RLC cannot do Concatenation and but can do Segmentation.

SI and SN

Segmentation Information and Segment Offset.

We know that both AM and UM RLC modes support segmentation, where as AM supports both segmentation and re-segmentation and this re-segmentation is not applicable for UM RLC because re-transmission are not supported.

5G NR uses SO (Segmentation Offset) both segmentation and re-segmentation.

Example:

Example 1:
In below image, there is no segmentation so RLC header includes a SN (Sequence Number) and and Segmentation Information (SI)

Example 2:

Segmentation is used to generate 3 segments and every segment is allocated with the same sequence number but different Segmentation information.
Each segment will have SO, segmentation offset to indicate the position of the segment within the original RLC SDU.

Example 3:

In below image, A RLC SDU is segmented and then re-segmented into 4 segments.

RRC Parameters defining RLC

RLC-BearerConfig ::=             SEQUENCE {
    logicalChannelIdentity         LogicalChannelIdentity,
    servedRadioBearer                CHOICE {
        srb-Identity                    SRB-Identity,
        drb-Identity                    DRB-Identity
    }       OPTIONAL,   -- Cond LCH-SetupOnly

    reestablishRLC                ENUMERATED {true}     OPTIONAL,   -- Need R
    rlc-Config                    RLC-Config            OPTIONAL,   -- Cond LCH-Setup
    mac-LogicalChannelConfig      LogicalChannelConfig   OPTIONAL,   -- Cond LCH-Setup
    ... 
}

RLC-Config ::=                      CHOICE {
    am                                  SEQUENCE {
        ul-AM-RLC                           UL-AM-RLC,
        dl-AM-RLC                           DL-AM-RLC
    },
	
    um-Bi-Directional                   SEQUENCE {
        ul-UM-RLC                           UL-UM-RLC,
        dl-UM-RLC                           DL-UM-RLC
    },

    um-Uni-Directional-UL               SEQUENCE {
        ul-UM-RLC                           UL-UM-RLC
    },

    um-Uni-Directional-DL               SEQUENCE {
        dl-UM-RLC                           DL-UM-RLC
    },
    ...
}

UL-AM-RLC ::=           SEQUENCE {
    sn-FieldLength          SN-FieldLengthAM        OPTIONAL,   -- Cond Reestab
    t-PollRetransmit        T-PollRetransmit,
    pollPDU                 PollPDU,
    pollByte                PollByte,
    maxRetxThreshold        ENUMERATED { t1, t2, t3, t4, t6, t8, t16, t32 }
}

DL-AM-RLC ::=           SEQUENCE {
    sn-FieldLength          SN-FieldLengthAM        OPTIONAL,   -- Cond Reestab
    t-Reassembly            T-Reassembly,
    t-StatusProhibit        T-StatusProhibit
}

UL-UM-RLC ::=           SEQUENCE {
    sn-FieldLength          SN-FieldLengthUM        OPTIONAL    -- Cond Reestab
}

DL-UM-RLC ::=           SEQUENCE {
    sn-FieldLength          SN-FieldLengthUM        OPTIONAL,   -- Cond Reestab
    t-Reassembly            T-Reassembly
}

SN-FieldLengthUM ::=    ENUMERATED {size6, size12}

SN-FieldLengthAM ::=    ENUMERATED {size12, size18}

T-PollRetransmit ::=    ENUMERATED {
                            ms5, ms10, ms15, ms20, ms25, ms30, ms35,
                            ms40, ms45, ms50, ms55, ms60, ms65, ms70,
                            ms75, ms80, ms85, ms90, ms95, ms100, ms105,
                            ms110, ms115, ms120, ms125, ms130, ms135,
                            ms140, ms145, ms150, ms155, ms160, ms165,
                            ms170, ms175, ms180, ms185, ms190, ms195,
                            ms200, ms205, ms210, ms215, ms220, ms225,
                            ms230, ms235, ms240, ms245, ms250, ms300,
                            ms350, ms400, ms450, ms500, ms800, ms1000,
                            ms2000, ms4000, spare5, spare4, spare3,
                            spare2, spare1}

PollPDU ::=             ENUMERATED {
                            p4, p8, p16, p32, p64, p128, p256, p512, p1024, p2048, p4096,
                            p6144, p8192, p12288, p16384, p20480, p24576, p28672, p32768,
                            p40960, p49152, p57344, p65536, infinity, spare8, spare7, spare6,
                            spare5, spare4, spare3, spare2, spare1}

PollByte ::=            ENUMERATED {
                            kB1, kB2, kB5, kB8, kB10, kB15, kB25, kB50, kB75,
                            kB100, kB125, kB250, kB375, kB500, kB750, kB1000,
                            kB1250, kB1500, kB2000, kB3000, kB4000, kB4500,
                            kB5000, kB5500, kB6000, kB6500, kB7000, kB7500,
                            mB8, mB9, mB10, mB11, mB12, mB13, mB14, mB15,
                            mB16, mB17, mB18, mB20, mB25, mB30, mB40, infinity,
                            spare20, spare19, spare18, spare17, spare16,
                            spare15, spare14, spare13, spare12, spare11,
                            spare10, spare9, spare8, spare7, spare6, spare5,
                            spare4, spare3, spare2, spare1}

T-Reassembly ::=        ENUMERATED {
                            ms0, ms5, ms10, ms15, ms20, ms25, ms30, ms35,
                            ms40, ms45, ms50, ms55, ms60, ms65, ms70,
                            ms75, ms80, ms85, ms90, ms95, ms100, ms110,
                            ms120, ms130, ms140, ms150, ms160, ms170,
                            ms180, ms190, ms200, spare1}

T-StatusProhibit ::=    ENUMERATED {
                            ms0, ms5, ms10, ms15, ms20, ms25, ms30, ms35,
                            ms40, ms45, ms50, ms55, ms60, ms65, ms70,
                            ms75, ms80, ms85, ms90, ms95, ms100, ms105,
                            ms110, ms115, ms120, ms125, ms130, ms135,
                            ms140, ms145, ms150, ms155, ms160, ms165,
                            ms170, ms175, ms180, ms185, ms190, ms195,
                            ms200, ms205, ms210, ms215, ms220, ms225,
                            ms230, ms235, ms240, ms245, ms250, ms300,
                            ms350, ms400, ms450, ms500, ms800, ms1000,
                            ms1200, ms1600, ms2000, ms2400, spare2, spare1}

 

 

Share
Email
Tweet
Linkedin
Reddit
Stumble
Pinterest
Prev Article
Next Article

About The Author

prodevelopertutorial

Follow this blog to learn more about C, C++, Linux, Competitive Programming concepts, Data Structures.

Leave a Reply Cancel Reply

You must be logged in to post a comment.

ProDeveloperTutorial.com

Tutorials and Programming Solutions
Copyright © 2023 ProDeveloperTutorial.com
We use cookies on our website to give you the most relevant experience by remembering your preferences and repeat visits. By clicking “Accept”, you consent to the use of ALL the cookies.
Do not sell my personal information.
Cookie SettingsAccept
Manage consent

Privacy Overview

This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary
Always Enabled
Necessary cookies are absolutely essential for the website to function properly. These cookies ensure basic functionalities and security features of the website, anonymously.
CookieDurationDescription
cookielawinfo-checkbox-analytics11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Analytics".
cookielawinfo-checkbox-functional11 monthsThe cookie is set by GDPR cookie consent to record the user consent for the cookies in the category "Functional".
cookielawinfo-checkbox-necessary11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Necessary".
cookielawinfo-checkbox-others11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Other.
cookielawinfo-checkbox-performance11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Performance".
viewed_cookie_policy11 monthsThe cookie is set by the GDPR Cookie Consent plugin and is used to store whether or not user has consented to the use of cookies. It does not store any personal data.
Functional
Functional cookies help to perform certain functionalities like sharing the content of the website on social media platforms, collect feedbacks, and other third-party features.
Performance
Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.
Analytics
Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics the number of visitors, bounce rate, traffic source, etc.
Advertisement
Advertisement cookies are used to provide visitors with relevant ads and marketing campaigns. These cookies track visitors across websites and collect information to provide customized ads.
Others
Other uncategorized cookies are those that are being analyzed and have not been classified into a category as yet.
SAVE & ACCEPT