RLC¶
Summary
- RLC (Radio Link Control) sits below PDCP and above MAC — the layer that turns PDCP's arbitrarily-sized SDUs into pieces that actually fit whatever Transport Block size MAC has scheduled for this TTI.
- It operates in one of three modes per bearer, each trading off reliability against overhead and latency: TM (Transparent Mode), UM (Unacknowledged Mode), and AM (Acknowledged Mode).
- Only AM does retransmission — that's RLC's own ARQ (Automatic Repeat reQuest), independent of and complementary to HARQ down at the MAC/PHY level.
Think of RLC as:
"The layer that packs and unpacks boxes to fit whatever truck MAC has waiting this millisecond — and, if you paid for tracked shipping (AM), the layer that notices a box went missing and sends a replacement."
If you are confused...
RLC picks up right where PDCP leaves off. PDCP hands RLC an SDU of whatever size it happens to be; RLC's job is entirely about fitting that into the radio, not about security or compression — those stay up at PDCP. And you've actually already seen RLC's mode assignments without knowing it: every row in the RRC message catalog with "TM" or "AM" in its Configuration column was telling you which RLC mode carries that message. MAC isn't covered on this site yet.
RLC in the Protocol Stack¶
PDCP delivers SDUs of whatever size the application produced. MAC, on the other hand, works in Transport Block sizes that are decided dynamically, every TTI, based on current radio conditions. RLC exists specifically to bridge that mismatch — segmenting large SDUs to fit, and reassembling them at the other end.
Segmentation is MAC-size driven, not SDU-size driven
RLC doesn't segment based on the SDU's own size — it segments based on whatever space MAC has actually granted it right now. This is why RLC behavior visibly changes with radio conditions: in poor conditions, MAC allocates smaller Transport Blocks, so you'll see more aggressive segmentation even for the same SDU size.
RLC Modes at a Glance¶
Mode |
Entity Type | ARQ (Retransmission) | Typical Use |
|---|---|---|---|
| TM — Transparent Mode | Unidirectional (Tx or Rx) | No | Broadcast/paging channels, and SRB0 (CCCH) before any dedicated config exists |
| UM — Unacknowledged Mode | Unidirectional (Tx or Rx) | No | DRBs where retransmission delay would hurt more than occasional loss (e.g., VoNR) |
| AM — Acknowledged Mode | Bidirectional | Yes | SRB1/SRB2 always, and most DRBs needing reliable delivery |
Table 1. RLC Modes Summary
If you know networking protocols...
Each RLC mode maps loosely onto a familiar transport-layer analogy — loosely, because RLC is a Layer 2, single-hop protocol between the UE and one gNB, not an end-to-end Layer 4 protocol like TCP/UDP. Take it for the intuition, not the spec:
| RLC Mode | Closest Networking Analogy | Why |
|---|---|---|
| TM | Below UDP — a raw pipe | No header at all, not even a sequence number. There's nothing to strip on the way out, because nothing was ever added on the way in. |
| UM | UDP, or more precisely RTP-over-UDP | Sequence numbers for loss/reorder detection, but no ACK and no retransmission — fire and forget. This is exactly why UM is what carries VoNR: RTP already tolerates loss better than it tolerates the delay a retransmission would add. |
| AM | TCP — specifically TCP with Selective ACK (SACK) | The STATUS PDU's ACK_SN plus an explicit list of NACK_SNs is structurally the same idea as TCP SACK blocks: don't just say "I got up to N," say exactly which pieces are missing so only those get resent. |
Table 2. RLC Mode Networking Analogy
TM: Transparent Mode¶
Figure 2. Model of two transparent mode peer entities2
A TM entity is unidirectional — an RLC entity is configured as either a transmitting TM entity or a receiving TM entity, never both at once. It does essentially nothing to the data passing through it.
TM really means minimal processing
A TM RLC entity does essentially nothing to the data — no header, no segmentation, no sequence numbering. It exists purely because RLC is the layer conventionally responsible for handing data to MAC, even when nothing RLC-specific needs to happen to it.
Functions that actually run in TM: transfer of upper-layer PDUs, and RLC re-establishment. That's it — no sequence numbering, no segmentation, no reassembly, no ARQ.
| PDU Type | Header Fields | Notes |
|---|---|---|
| TMD PDU | None | The SDU is transmitted as-is — the entire PDU is the Data field |
Table 3. RLC Transparent Mode (TM) PDU Structure
Figure 3. TMD PDU2
Where you'll find it: broadcast/paging channels (BCCH over PCH, PCCH), and SRB0 (CCCH) — because before an RRCSetup completes, there's no dedicated RLC configuration and no security context, so there's nothing for RLC to do besides pass the message through.
UM: Unacknowledged Mode¶
Figure 4. Model of two unacknowledged mode peer entities2
Like TM, a UM entity is unidirectional — configured as either transmitting or receiving. Unlike TM, it does real work: it adds its own sequence number (independent of the PDCP SN), segments SDUs to fit the MAC grant, and reassembles them at the receiver — but it never asks for a retransmission, no matter what goes missing.
Functions that actually run in UM: transfer of upper-layer PDUs, sequence numbering, segmentation, reassembly, SDU discard, and RLC re-establishment. No ARQ, no re-segmentation, no duplicate detection, no protocol error detection — those are AM-only.
| PDU Type | Header Fields | Notes |
|---|---|---|
| UMD PDU | SN (6 or 12-bit), SI, SO (if segmented) | SN length is configurable via RRC |
Table 4. RLC Unacknowledged Mode (UM) PDU Structure
Where you'll find it: DRBs where the cost of waiting for a retransmission outweighs the cost of occasionally losing a piece of data — the canonical example is VoNR voice, carried as RTP over UM, since a late voice packet is often worse than a dropped one.
UMD PDU byte layout, by SN length and segmentation
A UMD PDU carrying a complete, unsegmented SDU doesn't need a Segment Offset (SO) field at all:
Figure 5. UMD PDU containing a complete RLC SDU2
Once an SDU is segmented, the layout depends on the configured SN length (6-bit or 12-bit) and whether this particular PDU carries the first segment (no SO needed) or a later one (SO required):
AM: Acknowledged Mode¶
Figure 10. Model of an acknowledged mode entity2
Unlike TM and UM, a single AM entity is bidirectional — it has both a transmitting side and a receiving side, because delivering reliably requires talking back to your peer. AM runs every function RLC has to offer: sequence numbering, segmentation and re-segmentation, reassembly, duplicate detection, protocol error detection, SDU discard, RLC re-establishment, and — the feature that defines it — error correction through ARQ.
| PDU Type | Header Fields | Notes |
|---|---|---|
| AMD PDU | D/C, P (poll bit), SI, SN (12 or 18-bit), SO (if segmented) | A complete, unsegmented SDU is still sent as an AMD PDU (with SI = "complete") — AM has no separate "full SDU" format the way UM effectively does |
| STATUS PDU | D/C, CPT, ACK_SN, NACK_SN(s), SOstart/SOend, E1/E2/E3 | A Control PDU — this is how the receiver reports what it did and didn't get |
Table 5. RLC Acknowledged Mode (AM) PDU Structure
Where you'll find it: SRB1/SRB2 always (RRC and NAS signalling needs guaranteed delivery), and most DRBs that need reliable delivery over low latency.
AMD & STATUS PDU byte layout, by SN length and segmentation
Like UMD PDUs, an AMD PDU only needs a Segment Offset (SO) field once the SDU has actually been segmented — otherwise the layout differs by whether the bearer is configured for a 12-bit or 18-bit SN:
STATUS PDUs follow the same SN-length split, since ACK_SN/NACK_SN need to be wide enough to reference any AMD PDU's SN:
ARQ & Timers¶
AM's reliability comes from polling + STATUS PDUs + retransmission:
- The transmitter periodically sets the Poll bit (P) on an AMD PDU — triggered by
pollPDU/pollBytethresholds, or the retransmission timer — asking the receiver to report back. - The receiver responds with a STATUS PDU, listing which SNs it has (
ACK_SN) and which it's missing (NACK_SN, withSOstart/SOendfor partial-segment losses). - The transmitter retransmits whatever was NACKed — potentially re-segmenting it into smaller pieces if conditions have gotten worse since the original transmission.
| Timer / Threshold | Purpose |
|---|---|
t-PollRetransmit |
Re-triggers polling if no STATUS PDU arrives in time |
t-Reassembly |
Bounds how long the receiver waits for a missing segment before giving up on that SDU |
t-StatusProhibit |
Minimum gap enforced between consecutive STATUS PDU transmissions, to avoid flooding the uplink with status reports |
pollPDU / pollByte |
PDU-count / byte-count thresholds that trigger setting the Poll bit |
maxRetxThreshold |
Maximum retransmissions for a given PDU before RLC gives up |
Table 6. RLC Acknowledged Mode (AM) Configuration Timers and Thresholds
When maxRetxThreshold is hit
If a PDU exceeds maxRetxThreshold, RLC declares failure and reports it upward — this is one of the triggers that can lead the UE into RRC re-establishment (RRCReestablishmentRequest), since RLC has effectively concluded the link can't reliably recover on its own.
Function Comparison Across Modes¶
For a side-by-side view of everything covered mode-by-mode above:2
| Function | TM | UM | AM |
|---|---|---|---|
| Transfer of upper layer PDUs | ✅ | ✅ | ✅ |
| Sequence numbering (independent of the PDCP SN) | — | ✅ | ✅ |
| Segmentation of RLC SDUs | — | ✅ | ✅ |
| Re-segmentation of RLC data PDUs | — | — | ✅ |
| Reassembly of SDUs | — | ✅ | ✅ |
| Error correction through ARQ | — | — | ✅ |
| Duplicate detection | — | — | ✅ |
| RLC SDU discard | — | ✅ | ✅ |
| RLC re-establishment | ✅ | ✅ | ✅ |
| Protocol error detection | — | — | ✅ |
Table 7. Comparison of RLC Modes and Functions
Which Mode for Which Bearer¶
Bearer |
RLC Mode | Why |
|---|---|---|
| SRB0 (CCCH) | TM | No security or reliability infrastructure exists yet — see RRC's message catalog |
| SRB1 / SRB2 | AM | RRC and NAS signalling always needs guaranteed delivery |
| DRB | UM or AM | SMF/PDCP configuration decides, based on the QoS flow's delay vs. reliability requirements |
Table 8. Bearer Matching
Useful Resources¶
- 3GPP TS 38.322 — NR RLC protocol specification: modes, functions, PDU formats, ARQ, timers
- 3GPP TS 38.300 — NR overall description, protocol stack overview
- ShareTechnote — 5G/NR: RLC
-
Ryu, J. (n.d.). 5G/NR – RLC. ShareTechnote. https://www.sharetechnote.com/html/5G/5G_RLC.html ↩
-
3GPP. (n.d.). NR; Radio Link Control (RLC) protocol specification (Technical Specification TS 38.322). 3rd Generation Partnership Project. https://portal.3gpp.org/desktopmodules/Specifications/SpecificationDetails.aspx?specificationId=3195 ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩















