Protocol Stack

RLC Layer —
Segmentation and guaranteed delivery

The Radio Link Control layer sits between MAC and PDCP. It handles segmentation of large SDUs into transport-block-sized pieces, reassembly at the receiver, and — in Acknowledged Mode — its own ARQ retransmission on top of HARQ. Three modes serve different traffic types with different reliability guarantees.

TS 38.322 TS 38.300 §6.2

Three RLC modes

The RLC sublayer supports three modes of operation: Transparent Mode (TM), Unacknowledged Mode (UM), and Acknowledged Mode (AM). The mode of operation is determined by the configuration from the upper layer.
3GPP TS 38.322, Section 4.1
RLC modes — features and use casesTS 38.322 §4.1
ModeSegmentationARQIn-order deliveryUsed for
TMNoNoNoSRB0 (RACH), BCCH, PCCH — no overhead
UMYesNoYes (with gaps)VoNR, streaming — low latency
AMYesYesYes (guaranteed)SRB1/2, DRBs — reliable data ← our case

RLC-AM — our SRB1 bearer

SRB1 uses RLC Acknowledged Mode. AM provides:

Segmentation and reassembly: If an RLC SDU (from PDCP) is larger than what fits in the current MAC grant, RLC splits it across multiple transport blocks. At the receiver, RLC reassembles the segments before passing to PDCP.

ARQ retransmission: Unlike HARQ (which operates on the transport block in milliseconds), RLC ARQ operates on the RLC PDU level. The receiver sends STATUS PDUs reporting which RLC PDUs were received and which are missing. The transmitter retransmits only the missing segments. RLC ARQ runs on a longer timescale (~hundreds of ms) and catches residual errors that HARQ missed.

RLC-AM PDU structure and ARQ flow TS 38.322 §6.2.2, §5.3

RLC-AM PDU header

RLC-AM Data PDU header fieldsTS 38.322 §6.2.2.4
// RLC AM Data PDU (12-bit SN):
D/C      = 1    ← Data PDU (not Control PDU)
P        = 0    ← Poll bit (1 = request STATUS report)
SI       = 00   ← Segmentation Info: 00=full, 01=first, 10=last, 11=middle
SN       = 47   ← Sequence Number (12-bit field)
SO       = 0    ← Segment Offset (only present if SI≠00)

// Window size for AM (TS 38.322 §7.3):
SN field = 12 bits → max window = 2^12/2 = 2048
// (18-bit SN also supported for large TBS applications)

// STATUS PDU (receiver → transmitter):
D/C      = 0    ← Control PDU
CPT      = 000  ← STATUS report
ACK_SN   = 48   ← Next expected SN (all SNs before 48 received)
NACK_SN  = 45   ← Missing SN 45 (needs retransmission)

RLC segmentation example

Suppose PDCP delivers a 4,000-byte SDU to RLC, but the first MAC grant only allocates 1,496 bytes. RLC segments the SDU:

RLC segmentation — 4,000 byte SDU across 3 transport blocksTS 38.322 §5.2.2
// PDCP SDU = 4,000 bytes
// RLC header = 2 bytes (12-bit SN, no SO)

// MAC grant 1: 1,496 bytes available
RLC PDU 1: header [SN=47, SI=01 (first)] + 1,494 bytes of SDU

// MAC grant 2: 1,496 bytes available
RLC PDU 2: header [SN=47, SI=11 (middle), SO=1494] + 1,492 bytes

// MAC grant 3: 1,024 bytes available
// Remaining: 4,000 − 1,494 − 1,492 = 1,014 bytes
RLC PDU 3: header [SN=47, SI=10 (last), SO=2986] + 1,014 bytes

// Receiver reassembles: waits for SI=01 and SI=10 with same SN
// Delivers full 4,000 byte SDU to PDCP once all segments received
RLC layer summary
Mode for SRB1/DRBs  → Acknowledged Mode (AM)
Segmentation       → SDUs split to fit MAC grants, reassembled at receiver
ARQ                → STATUS PDUs report missing SNs, targeted retransmit
Window size        → 2,048 PDUs (12-bit SN)