# 5G NR RLC

## Summary


The **Radio Link Control (RLC)** sublayer of 5G NR protocol stack interfaces to PDCP sublayer from above and MAC sublayer from below. It interfaces to PDCP via RLC channels and to MAC via logical channels. There's a one-to-one mapping: RLC SDUs belonging to an RLC channel are mapped to a single logical channel. 

An RLC entity in a 5G UE has its peer RLC entity in the gNB, or other UEs in the case of NR sidelink communication. An RLC entity can be configured in one of three transmission modes: Transparent Mode (TM), Unacknowledged Mode (UM) and Acknowledged Mode (AM). Each mode supports a set of functions. Mode is configured by RRC and depends on the higher layer service requirements.

## Discussion

### What's the architecture of 5G NR RLC sublayer?

The RLC sublayer can have multiple RLC entities. Each entity is of a specific mode. In the transmit direction, an RLC entity receives RLC SDUs from PDCP on an RLC channel and sends out RLC PDUs to MAC on a logical channel. An RLC PDU contains RLC header plus RLC SDU, but header is absent in TM. 

TM and UM RLC entities are configured as either transmitting or receiving. AM RLC entity has both transmit and receive functionality. Thus, TM and UM RLC entities are **unidirectional** whereas AM RLC entity is **bidirectional**. 

A single RLC entity is mapped to a single PDCP entity. But a single PDCP entity can send its PDUs to a maximum of eight RLC entities. For example, a bidirectional PDCP entity is mapped to two UM RLC entities, one for transmit and one for receive. Dual Connectivity (DC), Dual Active Protocol Stack (DAPS) and PDCP duplication are scenarios where a PDCP entity maps to more than one RLC entity. 

For Integrated Access and Backhaul (IAB), RLC's upper layer is Backhaul Adaptation Protocol (BAP) sublayer, not discussed here. 


### Which logical channels are carried by each RLC transmission mode?

Logical channels BCCH, SBCCH, PCCH, and DL/UL CCCH are carried in **TM**. These correspond to system broadcast, sidelink broadcast, paging and SRB0 signalling.  

In **UM**, applicable logical channels are DL/UL DTCH, SCCH and STCH. 

Signalling other than SRB0 goes in **AM**. The corresponding logical channel is DL/UL DCCH. User plane traffic on DL/UL DTCH is also carried in this mode. Sidelink logical channels SCCH and STCH can go in AM. 

Thus, Signalling Radio Bearers (SRBs) are mapped to either TM (SRB0) or AM (non-SRB0). Data Radio Bearers (DRBs) are mapped to either UM or AM, which is configured via RRC signalling.


### What are the main functions of 5G NR RLC?

All three modes can **transfer upper layer PDUs**. 

TM RLC entity is the simplest. It doesn't add any header or segment RLC SDUs. An RLC PDU is simply an RLC SDU. 

UM RLC entity **segments** RLC SDUs and adds a header to each RLC PDU. In the receive direction, the entity **reassembles** the segments and delivers a complete RLC SDU to upper layer. The receiving entity may **discard** RLC segments and SDUs based on sequence number (SN), reassembly window size and reassembly timer. 

AM RLC entity has the important feature of **error correction through ARQ**. The receiving entity sends feedback on STATUS PDUs. This tells the transmitting entity to retransmit PDUs not correctly received. Thus, bidirectional transfer capability, acknowledgments and retransmission distinguish AM RLC entity. It can **detect and discard duplicate PDUs**. It supports segmentation, reassembly and discard functionalities, similar to UM RLC entity. In addition, AM RLC entity can **re-segment** previously lost or erroneous segments before retransmitting them. 


### What are data PDUs and control PDUs in 5G NR RLC?

**RLC data PDUs** carry upper layer PDUs. These are named TMD PDU, UMD PDU and AMD PDU for the respective TM, UM and AM entities. Apart from actual data traffic (DTCH or STCH), these PDUs may be carrying control information from upper layers. For example, all RRC signalling on SRBs are treated as data at RLC sublayer.

**RLC control PDUs** are control information generated and consumed at RLC. These are applicable only for AM RLC entities. In Release 15 and 16, the only such PDU is the *STATUS PDU*. It's sent by the receiving side of an AM RLC entity to inform the sending side about correctly received or lost RLC PDUs. Via a feature call **polling**, indicated via the RLC header, the transmitting side can request the receiving side to send a STATUS PDU. 

Control PDUs are sent on the same logical channels as the data PDUs of that AM RLC entity. 


### Could you describe the main procedures in 5G NR RLC?

**RLC entity procedures** include RLC establishment, re-establishment and release. These are applicable to all transmission modes, though the details vary. When a new radio bearer is configured, RLC establishment happens. RLC re-establishment is initiated by upper layers to recover from errors. In this procedure, timers are stopped and reset; state variables are reinitialized; RLC SDUs, segments and PDUs are discarded. RLC release procedure happens when the RLC entity is no longer needed. 

**Data transfer procedures** include specific transmit and receive procedures for TM, UM and AM entities. This includes segmentation and reassembly; handling of sequence numbers, window sizes and timers; interfacing to PDCP and MAC; and more. 

**SDU discard** procedure allows a higher layer to request UM or AM RLC entities to discard a particular RLC SDU, provided the SDU or its segment has not yet been submitted to MAC. 

**Data volume calculation** is done at RLC for MAC to send Buffer Status Reports (BSRs). This calculation includes RLC SDUs and segments not yet part of RLC PDUs, RLC data PDUs (initial or retransmit) and the STATUS PDU. 


### How is 5G NR RLC different from LTE RLC?

**Concatenation** is when multiple RLC SDUs can be packed into a single RLC PDU. Segmentation is when an RLC SDU is segmented and sent on multiple RLC PDUs. LTE RLC can do both concatenation and segmentation whereas 5G NR RLC is allowed to do only segmentation. 

This design change relates to how 5G NR RLC sends its PDUs to MAC. LTE RLC concatenates SDUs and sends a single PDU to MAC per Transmission Time Interval (TTI). 5G NR RLC can send multiple PDUs to MAC in any given TTI. 5G NR MAC packs them into a single MAC PDU for transmission. This improves latency since RLC can prepare its PDUs in advance even before MAC informs how many bytes can be sent. 

The other difference is that LTE RLC does **in-sequence delivery** of upper layer SDUs. This is not required of 5G NR RLC. For improved latency, an RLC SDU can be delivered as soon as it's received. Any ordering that may be required is the role of PDCP. 


### What RLC parameters are configured by 5G NR RRC?

RLC configuration is **per logical channel**. It's independent of numerologies or transmission durations. RRC provides the mapping between logical channel identify, radio bearer identity and RLC configuration.  

For TM, there's no configuration required from RRC. 

Sequence number field in RLC header can be 6 or 12 bits for UM, and 12 or 18 bits for AM. For SRBs other than SRB0, AM uses 12-bit SN. For groupcast and broadcast in sidelink, UM uses 6-bit SN. 

Reassembly timer is also configured for UM and AM. RRC signalling between UE and gNB defines this only for DL UM and AM. For UL UM and AM, this timer is known within the gNB. 

Additional parameters configured for AM include poll retransmit timer, status prohibit timer, pollPDU, pollByte, and maxRetxThreshold. Polling parameters and maxRetxThreshold are on the transmit side of the AM RLC entity. Status prohibit timer is on the receive side. 

## Milestones

Apr  
2017

An early draft of 5G NR RLC specification **TS 38.322** is released. This evolves to version 1.0.0 by September. 

Dec  
2017

3GPP publishes **Release 15** "early drop". RLC specification TS 38.322 is updated to version 15.0.0. 

Mar  
2020

As part of Release 16, TS 38.322 version 16.0.0, RLC specification is updated for **V2X sidelink communication**.  

Jul  
2020

3GPP publishes Release 16 specifications. RLC specification is TS 38.322 version 16.1.0. For AM, poll retransmit timer and status prohibit timer are updated to include **low timer values** of 1ms, 2ms, 3ms and 4ms.