>
HomeLTE 4GRLC — Radio Link ControlSegmentation
🔗 RLC — Radio Link ControlIntermediate

Segmentation & Concatenation in LTE 4G

How LTE RLC fits SDUs to grants with segmentation AND concatenation — the key difference from NR.

📚 3GPP-basedTS 36.322

The MAC scheduler hands RLC a transport-block-shaped hole to fill every TTI, and that hole is almost never the exact size of your data. LTE RLC's whole job is to make the two match on the nose — by segmenting a big packet across several PDUs, and by concatenating several small packets into one. That second trick, concatenation, is the single cleanest difference between LTE and NR: NR threw it away. This page is grounded in TS 36.322.

Introduction

RLC — the Radio Link Control protocol, TS 36.322 — is the layer-2 entity that sits between PDCP above and MAC below in the LTE user- and control-plane stack. Its defining task is rate matching in the size domain: turning a stream of arbitrarily-sized RLC SDUs into RLC PDUs that exactly fill whatever byte budget the MAC scheduler grants each transmission-time interval (TTI, 1 ms in LTE).

Every radio bearer runs one RLC entity in one of three modes — Transparent (TM), Unacknowledged (UM) or Acknowledged (AM) — chosen by RRC in the rlc-Config IE. Segmentation and concatenation are performed by UM and AM entities; TM does neither and carries the SDU untouched. This page is about how UM/AM reshape data and, crucially, how they record what they did so the peer can reverse it exactly.

It matters because the air interface is rigidly framed: a grant is a fixed number of bytes and the transport block must be filled to the byte. If RLC returns a PDU even one byte off, MAC's multiplexing breaks. Understanding this reshaping is also the cleanest way to see why NR RLC (TS 38.322) dropped concatenation entirely — a change driven by latency, examined at the end.

Why RLC Reshapes Data at All

💡

In plain words: think of RLC as a courier who must fill a delivery van of a fixed size that the dispatcher (MAC) picks fresh each trip. A single large parcel gets split across several vans (segmentation); a handful of small parcels get packed into one van so no space is wasted (concatenation). Either way the courier tapes a manifest to the door listing exactly what is inside and where each parcel starts, so the recipient can put everything back together.

RLC sits between PDCP above and MAC below. From PDCP it receives RLC SDUs — one per PDCP PDU, whatever size they happen to be, from a 40-byte VoIP frame to a 1500-byte TCP segment. Below it, MAC never asks "how big is your data?" Instead, each TTI the scheduler decides a grant for the logical channel and tells RLC exactly how many bytes it may hand down. RLC must then produce an RLC PDU whose total size — header plus payload — equals that number precisely, no more and no less.

What

Segmentation splits one RLC SDU across two or more PDUs. Concatenation packs several whole (or partial) SDUs into one PDU. LTE RLC does both — and, when it has to, both inside the same PDU.

Why

Air-interface grants are chosen by the scheduler for channel, priority and QoS reasons, not to match packet sizes. Without reshaping, a 1500-byte SDU could never enter a 300-byte grant, and forty tiny SDUs would each waste an entire PDU's worth of overhead.

How

MAC signals the size; RLC assembles a PDU to fill it — taking the leftover tail of one SDU, then whole SDUs, then the head of the next — and adds a header that describes exactly what it did so the receiver can reverse the operation.

The size RLC is told to hit is not a suggestion. If RLC returns a PDU even one byte off, MAC cannot fit its multiplexing and the transport block is malformed. So the reshaping is not a nicety — it is the mechanism that lets a packet-switched stream of arbitrary SDUs ride a rigidly-sized physical channel. Everything else on this page is detail about how RLC records what it did so the peer can undo it.

🎯

The core idea: LTE RLC is grant-driven and reactive. The scheduler dictates the byte count each TTI; RLC performs whatever segmentation and concatenation is needed to land on that count exactly, then writes a header describing the boundaries.

Concatenation — LTE's Distinctive Trick

This is the feature that most sharply separates LTE RLC from NR RLC, so it earns the spotlight. When the grant is larger than a single small SDU, LTE RLC packs multiple SDUs into one PDU rather than waste the room. Picture several short SDUs waiting in the transmission buffer and a grant big enough for all of them: RLC lines them up back-to-back inside one RLC PDU, then records the internal boundaries in the header.

The receiver needs those boundaries because the payload is just an undifferentiated run of bytes — there is no delimiter byte, no length prefix inside the data field itself. That is precisely what Length Indicators (LI) are for: one per boundary between concatenated units. If a PDU carries the tail of SDU A, all of SDU B, and the head of SDU C, the header lists the byte lengths of A's tail and of B, and the receiver slices the byte stream back into the original SDUs, passing complete ones up to PDCP and holding partial ones for later.

Concatenation and segmentation are not separate operations that happen in different PDUs — in the general case they happen together. A single PDU very often starts with the continuation of a previously-segmented SDU (segmentation) and ends with the head of an SDU that will be segmented into the next PDU (segmentation again), with several whole SDUs concatenated in between. One PDU can therefore embody segmentation at both ends and concatenation in the middle simultaneously.

🔑

LTE vs NR in one line: NR RLC has no concatenation. It leans on the MAC/PDCP pre-processing pipeline — PDUs are largely built ahead of the grant, and MAC multiplexes multiple ready-made RLC PDUs into the transport block instead of RLC concatenating SDUs. That is exactly why NR RLC data PDUs need no LI fields at all: a major header simplification driven by latency.

The AMD / UMD PDU Header Fields

A data PDU — an AMD PDU in Acknowledged Mode, a UMD PDU in Unacknowledged Mode — carries a header that tells the receiver how to reassemble the payload. Transparent Mode (TM) has no header at all and does neither segmentation nor concatenation, so it is out of scope here. The key AMD/UMD header fields defined in TS 36.322 are:

FieldSizeMeaning
SN (Sequence Number)5 or 10 bitsNumbers the PDU so the receiver can detect loss, reorder, and (in AM) request retransmission. AM always uses a 10-bit SN (0…1023). UM uses a 5-bit short SN (0…31) or a 10-bit SN, chosen by RRC configuration (sn-FieldLength).
FI (Framing Info)2 bitsStates whether the first byte of the payload is the start of an SDU and whether the last byte is the end of one — i.e. whether the first and/or last SDU in the PDU is segmented across the PDU boundary.
E (Extension bit)1 bitSays whether another LI+E pair follows in the header. A chain of E bits lets RLC list as many length indicators as there are internal boundaries.
LI (Length Indicator)11 bitsThe byte length of one concatenated SDU (or SDU segment) in the payload — one LI per internal boundary. The last data unit needs no LI: its length is simply whatever payload remains.
D/C1 bitData/Control flag. Distinguishes a data PDU from a control PDU (e.g. an AM STATUS PDU).
RF (Re-segmentation Flag)1 bitAM only. Marks the PDU as an AMD PDU segment (a re-segmented retransmission) rather than a full AMD PDU.
P (Polling bit)1 bitAM only. Asks the peer to return a STATUS PDU reporting what it has and has not received.

The 11-bit width of LI is worth noting: it can express lengths up to 2047 bytes, comfortably larger than any LTE SDU that would need one, so a single LI always suffices per boundary. And because the final unit's length is implicit, a PDU concatenating k data units needs only k−1 length indicators — the header never wastes a field on the tail.

The E-bit chain, precisely

The header is variable-length, and the E bit is what makes it self-describing. Immediately after the fixed part (D/C, SN, FI) comes a first E bit. If E = 0, the header ends and the payload is a single data unit (no concatenation). If E = 1, an LI+E pair follows: an 11-bit length and another E bit that again says whether yet another pair follows. The receiver walks this chain until it reads E = 0, at which point it knows the header is complete and the remaining bytes are the payload.

Header positionContentsMeaning of the E bit here
Fixed partD/C · (RF/P in AM) · FI · first E · SNE=0 → no LI at all (one data unit); E=1 → an LI chain follows.
Extension 1LI₁ (11 bits) · EE=0LI₁ is the last indicator; E=1LI₂ follows.
Extension 2LI₂ (11 bits) · ESame rule; the chain repeats once per internal boundary.
Continues until an E=0 is read.
Payloaddata unit 1 · data unit 2 · … · last data unitSizes of all but the last are given by the LI chain; the last is the remainder.

The takeaway: the header grows by roughly 11–12 bits for every additional SDU concatenated (an LI plus its E bit, byte-aligned in pairs), which is the overhead price LTE pays for filling grants tightly.

Framing Info: Reading the Four FI Values

The FI field is how the receiver distinguishes concatenation from segmentation, so it deserves its own look. It is two bits. The first bit describes the first byte of the payload; the second bit describes the last byte. A bit value of 0 means "this end aligns with an SDU boundary" (a whole start or a whole end); a bit value of 1 means "this end is a segment" (the byte is in the middle of an SDU that continues in a neighbouring PDU).

FIFirst byte of payloadLast byte of payloadInterpretation
00Starts an SDUEnds an SDUPayload is one or more whole SDUs — clean boundaries at both ends. Pure concatenation (or a single whole SDU).
01Starts an SDUDoes not end an SDUFirst SDU is whole; the last SDU is segmented — its tail goes into the next PDU.
10Does not start an SDUEnds an SDUThe first SDU is a continuation (its head was in an earlier PDU); the last SDU ends cleanly.
11Does not start an SDUDoes not end an SDUBoth ends are segments: a middle piece. The first SDU is continued from before and the last is continued into the next PDU.

Those two bits are what let segmentation and concatenation coexist in one PDU. Take a PDU with FI = 11 that also carries three LI chain entries: the receiver reads FI and learns the first and last payload units are partial; it reads the LI chain and learns where the internal boundaries fall; between them it knows the first unit is a continuation to be joined to a held fragment, the middle units are whole SDUs to deliver immediately, and the last unit is a head to hold for the next PDU. No other field is needed to describe the shape of the PDU.

💡

A useful mental check: the number of LI fields equals (number of data units in the payload − 1); FI then tells you whether the two outer data units are whole or partial. Together they fully determine reassembly without any per-byte markers in the payload.

Building One PDU to Fill the Grant

Putting it together: given a grant of N bytes, RLC reserves room for the header it is about to build, then walks its transmission buffer filling the payload. It may lead with the leftover tail of a partially-sent SDU (segmentation), follow with as many whole SDUs as fit (concatenation), and finish by taking just the head of the next SDU so that not one byte of the grant is wasted (segmentation again). Each internal boundary earns an LI; the E bits chain those indicators; the FI field marks whether the first and last SDUs are segmented. The header length is not known until RLC decides how many SDUs it is packing, so building the header and choosing the fill are one interleaved step.

Four RLC SDUs waiting in the transmission buffer SDU A (large) SDU B SDU C SDU D (large) MAC grant this TTI holds: tail of A + all of B + all of C + head of D RLC PDU n — fills the grant exactly SN · FI=11 · E-chain LI(A-tail) LI(B) LI(C) A (tail) B (whole) C (whole) D (head) header ←→ payload · 3 LI fields for 4 data units · D's length is implicit RLC PDU n+1 — next TTI SN · FI=10 E=0 (no LI) D (rest, ends the SDU) D spans two PDUs → receiver joins the pieces by SN order and FI
Figure 1. One RLC PDU concatenates the tail of SDU A, all of SDU B, all of SDU C and the head of SDU D to fill the grant exactly; SDU D is then segmented across PDU n and PDU n+1. Three LI fields delimit the four data units in PDU n (the last length is implicit); FI = 11 marks both outer units as segments. PDU n+1 carries only the remainder of D with FI = 10 and no LI.

Two points fall out of the figure. First, PDU n needs exactly three LI fields for its four data units, because the fourth (D's head) is the last unit and its length is implicit. Second, PDU n+1 carries only the remainder of D — FI = 10, a single data unit, and therefore E = 0 with no LI at all: the header shrinks to its minimum whenever a PDU carries one non-concatenated unit.

Re-segmentation for AM Retransmissions

Acknowledged Mode adds one more wrinkle. Suppose a PDU is transmitted, the peer's STATUS PDU reports it was not received, and RLC must retransmit — but the grant available now is smaller than the original PDU. RLC cannot simply re-run concatenation on an already-numbered PDU, because its SN and its SDU boundaries are fixed and the peer's ARQ state is keyed to them. Instead it re-segments the original PDU into a smaller piece called an AMD PDU segment.

An AMD PDU segment reuses the original PDU's SN unchanged and sets the RF bit to 1, then adds fields so the receiver knows which slice of the original this is:

FieldSizeRole in a re-segmented PDU
RF (Re-segmentation Flag)1 bitSet to 1 to mark this as an AMD PDU segment rather than a full AMD PDU, telling the receiver to expect the extra offset fields.
SO (Segment Offset)15 bitsThe byte position, within the original AMD PDU's data field, at which this segment's payload begins — so the receiver can place the bytes in the right spot of the reconstructed PDU. 15 bits addresses offsets up to 32767 bytes.
LSF (Last Segment Flag)1 bitSet to 1 when this segment contains the final byte of the original PDU's data field, so the receiver knows when the byte range is complete.
SN10 bitsUnchanged — the same 10-bit SN as the original AMD PDU. All segments of one PDU share it.

Crucially, re-segmentation operates on the PDU's data field as a flat byte range, not on the SDUs inside it. The SO counts bytes from the start of the original data field; the internal FI/LI structure is only interpreted once the full PDU has been reassembled. That is why re-segmentation can chop anywhere — it does not care where SDU boundaries sit.

The same original PDU can be re-segmented again and again into ever-smaller AMD PDU segments as successive grants allow, each carrying the identical SN plus its own SO and its own LSF. A segment covering the middle of the PDU has SO > 0 and LSF = 0; the segment carrying the very end has LSF = 1. There is no upper limit imposed by re-segmentation itself — grants govern how small the pieces get.

🎯

Two kinds of "segment", don't confuse them: ordinary segmentation at first transmission splits an SDU across PDUs and is described by FI. Re-segmentation at retransmission splits an already-built PDU's data field and is described by RF, SO and LSF. The first uses length indicators; the second uses byte offsets.

Reassembly at the Receiver

Everything the transmitter records exists so the receiver can run the process in reverse. Reassembly happens in two nested loops: first rebuild each PDU from any segments, then rebuild each SDU from the PDUs' data units.

At the PDU level (AM only), when segments arrive the receiver groups them by SN, orders them by SO, and stitches the byte ranges together. Once it holds a contiguous range from offset 0 through the segment marked LSF = 1, that SN's full AMD PDU is reconstructed and can be processed like any received PDU. Missing byte ranges simply leave a hole that a later retransmitted segment fills.

At the SDU level, the receiver walks each in-order PDU's data field using the header: the LI chain gives the length of every data unit except the last, and FI says whether the first and last units are partial. A unit marked as a continuation is joined to the fragment held from the previous PDU's tail; a unit marked as a head is held to be joined with the next PDU; every whole unit between is delivered straight to PDCP. Because delivery must be in order and complete, a segmented SDU is only delivered once the PDUs on both sides of it have arrived.

Receiver stepUsesResult
Recombine PDU segments (AM)SN, SO, LSFFull AMD PDU reconstructed once bytes 0…end are contiguous.
Order PDUsSNIn-sequence stream of PDU data fields (AM reorders; UM uses a reordering timer t-Reordering).
Split data field into unitsE-chain, LIByte boundaries between concatenated data units recovered.
Classify outer unitsFIFirst/last units known to be whole or partial; partials joined across PDUs.
DeliverComplete RLC SDUs passed up to PDCP, in order.

The LTE-vs-NR Contrast, Sharpened

Everything above is why LTE RLC is heavier than NR RLC. LTE RLC assembles PDUs reactively, at grant time, doing concatenation, segmentation and (in AM) re-segmentation on the fly — which means LI chains, E-bit lists and re-segmentation offsets all live in the RLC header and all cost per-PDU processing on the critical path between grant and transmission.

🔀

LTE ↔ NR: NR RLC (TS 38.322) removed concatenation, so each NR RLC PDU carries at most one SDU or SDU segment and needs no LI/E chain. Segmentation survives but is described by a compact SI (Segmentation Info) field plus an SO, and there is no separate re-segmented PDU type. NR RLC also dropped in-sequence delivery to PDCP — reordering moved up to NR PDCP — leaving RLC to do only ARQ and segmentation. The net effect: a shorter, more predictable header and a shorter grant-to-air path.

AspectLTE RLC (TS 36.322)NR RLC (TS 38.322)
ConcatenationYes — multiple SDUs per PDUNo — removed; MAC multiplexes instead
SegmentationYesYes (kept)
Length IndicatorsLI + E chain per concatenated SDUNone needed
Framing Info FI2 bits, marks segmented first/last SDUReplaced by SI (one SDU per PDU)
PDU assembly timingAt grant time (reactive)Pre-processed ahead of the grant
Segmentation infoFI for SDUs; SO/LSF for re-segmented PDUsSI (Segmentation Info) + SO; no separate PDU-segment type
In-sequence deliveryRLC delivers in order (UM/AM)Moved up to PDCP; RLC delivers as decoded

NR's motivation was latency. By dropping concatenation and letting RLC build most of a PDU before the exact grant is known — leaving MAC to multiplex ready-made RLC PDUs into the transport block — NR shortens the critical path from grant to transmission. Understanding LTE's concatenation is therefore the cleanest way to understand why NR removed it: the LI chain that makes LTE grants fit so tightly is exactly the per-grant work NR wanted off the fast path.

⚠ Common pitfalls / gotchas

  • Confusing segmentation with re-segmentation. Segmentation splits an SDU and is marked by FI; re-segmentation splits an already-numbered PDU's byte range and is marked by RF/SO/LSF. They use completely different fields and only re-segmentation is AM-only.
  • Assuming NR RLC just "simplified" LTE RLC. NR did not trim the header — it moved work: concatenation vanished, and in-sequence delivery moved from RLC up to PDCP. Reasoning about NR reordering at the RLC layer will mislead you.
  • Forgetting the last unit has no LI. A PDU with k data units carries k−1 length indicators; the final unit's length is "whatever remains". Counting k LIs off-by-ones every reassembly walk.
  • Mixing up UM SN lengths. UM can use a 5-bit or 10-bit SN per RRC config; AM is always 10-bit. A 5-bit UM window is small — high rates can wrap it and cause spurious reordering discards.

Summary

LTE RLC exists to make arbitrarily-sized SDUs fit the fixed byte grant MAC hands it every TTI. It does that with two operations — segmentation (split one SDU across PDUs) and concatenation (pack several SDUs into one PDU) — often both in the same AMD/UMD PDU. The header makes the operation reversible: SN orders and (in AM) tracks PDUs, FI marks whether the outer units are whole or partial, and an E-bit-chained list of 11-bit LI fields delimits the internal boundaries (one per boundary, none for the last unit). For AM retransmissions into a smaller grant, RLC re-segments the PDU's flat byte range using RF, a 15-bit SO and LSF. The receiver reverses everything: recombine segments by SN+SO, order by SN, split by the LI chain, classify outer units by FI, deliver whole SDUs to PDCP in order. The one fact that captures the LTE→NR jump: NR removed concatenation to shorten the grant-to-air latency path, which is why NR RLC PDUs carry no LI fields at all.

Q&A Interview quickfire

Q. What is the single biggest difference between LTE RLC and NR RLC PDU construction?

A. Concatenation. LTE RLC concatenates several RLC SDUs into one PDU (needing an LI+E chain to mark boundaries); NR RLC removed concatenation and relies on MAC multiplexing plus PDU pre-processing, so NR RLC data PDUs carry no length indicators.

Q. What do the two bits of the FI field mean, and what does FI = 11 indicate?

A. The first bit says whether the first payload byte starts an SDU; the second says whether the last payload byte ends one. A bit of 1 means "segment". FI = 11 means both ends are partial — a middle PDU whose first SDU is continued from an earlier PDU and whose last SDU continues into a later one.

Q. How many LI fields does a PDU concatenating four data units carry, and why?

A. Three. There is one LI per internal boundary; the last data unit's length is implicit (whatever payload remains), so a PDU with k units needs k−1 length indicators.

Q. During an AM retransmission the new grant is smaller than the original PDU. What does RLC do, and which fields appear?

A. It re-segments the PDU into an AMD PDU segment: same SN, with RF = 1, a 15-bit SO (Segment Offset) giving where the slice starts in the original data field, and LSF marking the segment that carries the final byte. The receiver reassembles by SN then SO.

Q. Why does NR RLC not need LI fields at all?

A. Because NR removed concatenation. Each NR RLC PDU carries at most one SDU or SDU segment, so there are no internal boundaries to delimit; MAC multiplexes multiple RLC PDUs into the transport block instead.

Where segmentation fits

Segmentation and concatenation are one part of what RLC does; they sit alongside the mode definitions that decide when they apply, the ARQ loop that triggers re-segmentation, and the MAC layer that hands RLC its grant.

RLC Overview & Modes — TM, UM, AM and when each is usedARQ & Status Reports — how AM detects loss and retransmitsMAC PDU & Multiplexing — how the grant and transport block are built