RLC-LTE Acknowledged and Unacknowledged Mode in a Real VoLTE Capture

The RLC layer of the LTE attach and VoLTE walkthrough, followed on its own. One phone, UE 70, holds two radio bearers that matter here: DRB 2 carries its SIP signaling in RLC acknowledged mode, and DRB 3 carries its call-1 voice in RLC unacknowledged mode. Two annotated diagrams caption every RLC PDU of each, and this page reads them side by side.

💡 Read the walkthrough and the diagram side by side: this page has two diagrams, one per bearer. The SIP bearer's is linked above for Act One, the voice bearer's further down for Act Two. Open the one you are reading in a split-screen window, or open it in a new tab.

Where RLC sits

RLC (Radio Link Control, TS 36.322) sits between PDCP above and MAC below, and talks only to its peer RLC entity in the eNB. Both bearers on this page are user-plane bearers: the SIP messages and the voice packets are IP packets, carried to the IMS core beyond the gateway.

sequenceDiagram accTitle: LTE user-plane protocol stack, RLC highlighted accDescr: The user-plane layers. An IP packet spans the UE and the gateway. Below it, PDCP, RLC, MAC, and PHY span the UE and the eNB, and GTP-U over S1-U spans the eNB and the gateway. RLC, the subject of this article, is highlighted. participant UE participant eNB participant GW as S-GW / P-GW Note over UE,GW: IP (SIP over TCP and ESP, RTP) Note over UE,eNB: PDCP Note over UE,eNB: RLC Note over UE,eNB: MAC Note over UE,eNB: PHY Note over eNB,GW: S1-U · GTP-U
The LTE user-plane stack, with RLC highlighted. IP packets ride PDCP, RLC, MAC, and PHY between the UE and the eNB, then GTP-U over S1-U to the gateways.

The capture is the same srsRAN eNB log as the main walkthrough, in its re-tagged form: srsRAN marks every frame with UE identity 0, which makes Wireshark merge both phones' RLC state and invent retransmissions. The copy used here sets each frame's identity to its C-RNTI and changes nothing else. Why the capture was re-tagged explains the fix. Every sequence-number claim below depends on it.

What RLC does

RLC takes an SDU (Service Data Unit: one packet handed down by PDCP) and fits it into whatever space MAC's scheduler offers in the next transmission. It can cut one SDU into pieces, pack several SDUs into one PDU (Protocol Data Unit), or both. It has three modes, chosen per bearer when the bearer is created:

MAC already retransmits failed transport blocks with HARQ (Hybrid Automatic Repeat reQuest) within a few milliseconds. AM adds a slower, per-PDU backstop for what HARQ misses. Whether that backstop helps depends on the traffic. SIP signaling must arrive intact, however late, so DRB 2 runs AM. A voice frame that arrives late is useless, so DRB 3 runs UM.

The headers

Both bearers use a 10-bit sequence number, and both headers are 2 bytes. The difference is what fills them.

packet accTitle: RLC-LTE AM data PDU header accDescr: Sixteen bits. One bit D/C, one bit RF, one bit P, two bits FI, one bit E, and then ten bits SN. 0: "D/C" 1: "RF" 2: "P" 3-4: "FI" 5: "E" 6-15: "SN (10 bits)"
RLC AM data PDU header, 10-bit SN (TS 36.322 §6.2.1.4). D/C marks data or control, RF marks a re-segmented retransmission, P is the poll bit, FI is framing info, and E says a length indicator follows.
packet accTitle: RLC-LTE UM data PDU header with a 10-bit SN accDescr: Sixteen bits. Three reserved bits, two bits FI, one bit E, then ten bits SN. 0-2: "R1 R1 R1" 3-4: "FI" 5: "E" 6-15: "SN (10 bits)"
RLC UM data PDU header with the 10-bit SN (TS 36.322 §6.2.1.3). Three reserved bits take the place of D/C, RF, and P: UM has no control PDUs, no re-segmentation, and no poll.
packet accTitle: RLC-LTE AM Status PDU without NACKs accDescr: Sixteen bits. One bit D/C, three bits CPT, ten bits ACK underscore SN, one bit E1, then one padding bit. 0: "D/C" 1-3: "CPT" 4-13: "ACK SN (10 bits)" 14: "E1" 15: "Pad"
RLC AM Status PDU with no NACK (TS 36.322 §6.2.1.6). CPT 000 selects STATUS. Every one of the 166 Status PDUs on DRB 2 has this 2-byte form.

Four fields carry most of the story:

FieldMeaning
SNSequence number. In LTE it numbers PDUs: each new PDU gets the next SN, whatever it carries.
FIFraming info, 2 bits. The first bit says whether the PDU's first byte starts an SDU (0) or continues one (1); the second whether its last byte ends an SDU (0) or not (1).
E and LIWhen E is set, a length indicator follows the fixed header and marks where one SDU ends and the next begins inside the same PDU.
PAM only. The poll bit obliges the peer to send a Status PDU.

ACK_SN in a Status PDU is cumulative and reads as "the next SN I am still waiting for". ACK_SN=25 means every PDU below 25 arrived, not that PDU 25 did.

One difference from 5G is worth fixing before the walk. In 5G NR, RLC numbers SDUs, so every segment of one SDU carries the same SN (see the RLC-NR page). In LTE, RLC numbers PDUs. A split SDU spreads across PDUs with consecutive SNs, and FI says how the pieces join.

Two bearers, two entities

UE 70's DRB 2 and DRB 3 are separate RLC entities with separate sequence-number spaces. Within each bearer, the uplink and downlink are separate transmitting entities with their own counters too. RRC configured both bearers in the capture:

DRB 2 (IMS signaling)DRB 3 (call-1 voice)
Created byRRC Connection Reconfiguration, frame 32RRC Connection Reconfiguration, frame 846
EPS bearer, QCI6, QCI 57, QCI 1
Logical channel, priorityLCID 4, priority 11LCID 5, priority 2
RLC modeAMUM, bidirectional
Sequence number10-bit10-bit, both directions
UE transmittert-PollRetransmit 80 ms, pollPDU 128, pollByte 125 kB, maxRetxThreshold 4nothing to configure
UE receivert-Reordering 80 ms, t-StatusProhibit 60 mst-Reordering 50 ms
PDCPdiscardTimer infinity12-bit SN, discardTimer 100 ms
Messages in this page's diagram116 (of 452 in the capture)71 (all of them)

A different AM configuration in frame 24 (t-PollRetransmit 120 ms, pollPDU 64, pollByte 750 kB, maxRetxThreshold 16, t-StatusProhibit 50 ms) belongs to DRB 1, the internet bearer, which this page doesn't follow.

The RRC message only configures the UE's side. The eNB's own transmitter timers on DRB 2 are never sent over the air, which matters in Act One.

Act One — DRB 2, acknowledged mode

DRB 2 carries 452 RLC messages over the whole capture, so its diagram keeps four windows, with the original frame numbers: the IMS registration (frames 36–68), call 1 (frames 814–1164), the one retransmission (frames 2919–2953), and an out-of-order pair (frames 3020–3036).

The first PDUs

Frame 36 — the bearer opens. Uplink SN=0: a 68-byte PDU carrying the TCP SYN that opens the UE's SIP connection to the P-CSCF on port 5060. FI is 00, so one whole SDU, and P is set. The eNB's Status PDU, ACK_SN=1, comes back 0.7 ms later in frame 37.

Frame 38 — the downlink starts its own count. The SYN-ACK goes down as downlink SN=0. It has nothing to do with frame 36's SN 0. The eNB polls here, and it polls on every one of its 128 data PDUs on this bearer. TS 36.322 (§5.2.2.1) sets the poll when a PDU empties the transmit buffer, after pollPDU PDUs or pollByte bytes without a poll, or when the transmit window stalls, and on a retransmission when t-PollRetransmit expires. The eNB polls even on SN=105 in frame 3020, which leaves part of an SDU still to send, so it either polls more eagerly than the UE or runs poll counters that aren't signaled. The UE polls on 103 of its 157 data PDUs.

Frame 39 — segmentation and concatenation in one PDU. Uplink SN=1 is 526 bytes with FI = 01: it starts with the start of an SDU and ends in the middle of one. A length indicator, LI=54, closes the first SDU, a 54-byte packet holding the handshake's final TCP ACK. The remaining 468 bytes begin a 1452-byte SDU, the first TCP segment of the SIP REGISTER. Frame 40's SN=2, FI = 10, carries the other 984 bytes, and Wireshark reassembles the SDU from SN 1 and SN 2.

Frames 50 and 55 — t-StatusProhibit at work. The UE sends a Status PDU in frame 50. The eNB polls again in frame 52, but the UE's answer, frame 55, comes 78 ms later. t-StatusProhibit stops the UE from sending another Status PDU for 60 ms after the last, and the UE then has to wait for an uplink grant: frames 50 and 55 are 80 ms apart. With one exception, covered below, UE Status PDUs arrive 14 to 78 ms after the data they acknowledge; the eNB's arrive as little as 0.03 ms after. The UE has to ask for uplink time before it can send even 2 bytes, while the eNB schedules its own downlink.

Frames 56–68 — the protected REGISTER. The unprotected TCP connection closes, and a new one opens inside IPsec ESP to the P-CSCF's protected port 6100. RLC doesn't notice: an ESP packet is just another SDU. The second REGISTER goes up as four PDUs, SN 8 to 11, and ACK_SN=12 in frame 66 confirms all of uplink SN 0 to 11 without a single NACK. The 200 OK comes down whole in one 1144-byte PDU.

The INVITE in four PDUs

Twenty-one seconds later UE 70 dials. The same entity continues its count: the SYN for the INVITE's TCP connection goes up as SN=20 in frame 814. The INVITE itself is 2187 bytes of TCP in two segments, two SDUs of 1322 and 1018 bytes. The uplink grants are smaller than either, so RLC spreads them across four PDUs:

sequenceDiagram accTitle: The SIP INVITE segmented across four RLC AM PDUs accDescr: The UE sends SN 21 with a TCP ACK and the first 444 bytes of the first SDU, SN 22 with its last 878 bytes and the poll bit, SN 23 with the first 800 bytes of the second SDU, and SN 24 with its last 218 bytes and the poll bit. The eNB answers with a Status PDU, ACK SN 25. participant UE as UE 70 participant eNB UE->>eNB: f817 · SN 21 · FI 01 · TCP ACK + first 444 bytes UE->>eNB: f818 · SN 22 · FI 10 · P=1 · last 878 bytes UE->>eNB: f819 · SN 23 · FI 01 · first 800 bytes of SDU 2 UE->>eNB: f821 · SN 24 · FI 10 · P=1 · INVITE complete eNB->>UE: f824 · STATUS · ACK SN=25 Note over UE,eNB: Two SDUs, four PDUs, four sequence numbers, one acknowledgment
UE 70's INVITE on DRB 2, frames 817 to 824. Two SDUs travel in four PDUs with four sequence numbers, and one cumulative Status PDU confirms them all. Downlink PDUs in between are left out.

SN=22 sets the poll bit in the middle of the INVITE. Of the four triggers, only "this PDU empties the buffer" can fire there (pollPDU 128 and pollByte 125 kB are far off), so the INVITE's second TCP segment had most likely not reached RLC yet. The four PDUs leave the UE over 17 ms.

Frames 847 to 852 show the third FI value. The PRACK goes up as three PDUs, and the middle one, SN=27 in frame 851, has FI = 11: it begins mid-SDU and ends mid-SDU. Its first 995 bytes finish one SDU, and LI=995 marks where the next one starts.

Frame 845 — the 183 in one PDU. Downlink SN=22 is 2164 bytes, FI = 00, and holds the whole 183 Session Progress: both TCP segments as two SDUs of 1322 and 838 bytes, divided by LI=1322. The 180 Ringing (frame 891), the 200 OK to the UPDATE (frame 892), and the 200 OK to the INVITE (frame 976) arrive the same way. Across the capture, 54 uplink PDUs end partway through an SDU, against 5 downlink. Segmentation depends on the grant, not on the protocol.

Frame 991 — then silence. ACK_SN=30 rides in the same transport block as a voice packet on DRB 3. For the next 4.5 seconds voice flows on DRB 3, and DRB 2 sends nothing at all: an AM entity with an empty buffer is silent.

Frame 1152 — a voice packet on the AM bearer. After the BYE, the eNB releases DRB 3 in frame 1146. About 40 ms later UE 70 sends its next comfort-noise packet, RTP sequence 36, on schedule 160 ms after the last one. With the voice bearer's packet filters gone, the packet falls through to the IMS PDN's default bearer: it rides inside DRB 2's SN=34, ahead of the UE's 200 OK to the BYE.

The one retransmission

Wireshark flags one retransmission on this bearer: "AM SN Repeated", downlink SN 102, in frame 2940, at the end of call 5. It is real in the sense that the eNB really sent SN 102 twice. It was also unnecessary, and the radio timing shows why.

FrameRadio frame (SFN), subframeDirectionPDUWhat it means
2922140, 3DLSN=101, P=1A TCP ACK from the P-CSCF
2924141, 0DLSN=102, P=1Another TCP ACK. The eNB's poll timer starts.
2927141, 3ULACK_SN=102Answers the poll on SN 101. Starts the UE's 60 ms t-StatusProhibit.
2941148, 8ULACK_SN=103Acknowledges SN 102
2940149, 0DLSN=102, P=1 again80 subframes after the original
sequenceDiagram accTitle: t-StatusProhibit against t-PollRetransmit on DRB 2 accDescr: The eNB sends SN 102 with the poll bit in SFN 141 subframe 0. The UE's Status PDU in subframe 3 acknowledges only up to SN 101 and starts its 60 ms status prohibit timer. The UE's next Status PDU, acknowledging SN 102, goes up in SFN 148 subframe 8. The eNB retransmits SN 102 in SFN 149 subframe 0, 80 ms after the original. participant UE as UE 70 participant eNB eNB->>UE: f2924 · SN 102 · P=1 · SFN 141 sf 0 UE->>eNB: f2927 · STATUS · ACK SN=102 · SFN 141 sf 3 Note over UE: t-StatusProhibit 60 ms, then wait for a grant UE->>eNB: f2941 · STATUS · ACK SN=103 · SFN 148 sf 8 eNB->>UE: f2940 · SN 102 again · SFN 149 sf 0 Note over eNB: t-PollRetransmit expired 80 ms after the original
The race behind the one retransmission on DRB 2. The UE has SN 102 but may not report it until t-StatusProhibit runs out. Its report goes up two subframes before the eNB's 80 ms poll timer resends the PDU.

Four facts settle it:

Frame 2927 could not include SN 102: SN 102 reached the UE only 3 subframes earlier, and an LTE FDD uplink transmission is built from a grant 4 subframes ahead. Frame 2927 did start the UE's 60 ms t-StatusProhibit. From then on the UE had SN 102 and a poll to answer, but wasn't allowed to answer until the timer ran out, and then had to wait for a grant. Its report and the eNB's poll timer crossed on the air: the report went up 2 subframes before the copy came down. The UE discards the duplicate (TS 36.322 §5.1.3.2.2).

So Wireshark's own wording, "probably because didn't receive Status PDU?", is right: the eNB resent because no Status PDU had arrived in time, not because anything was lost. When a UE's t-StatusProhibit plus its uplink scheduling delay comes close to the eNB's t-PollRetransmit, expect occasional resends like this one.

SN 131 before SN 130

The last window shows two Wireshark flags that look like a loss and aren't. During call 6, UE 70 sends two SDUs as four PDUs. Wireshark logs SN=131 (frame 3027, SFN 811 subframe 8) before SN=130 (frame 3028, SFN 812 subframe 5). It flags SN 130 as missing at frame 3027, then calls frame 3028 "retransmitted, most likely in response to NACK".

Neither flag holds up. SN 130 appears once in the capture, and no NACK exists anywhere. The likely cause is HARQ below RLC. In LTE FDD an uplink HARQ retransmission comes 8 subframes after the first attempt, which would put a failed first try of SN 130 in SFN 811 subframe 7, one subframe before SN 131 went up. The eNB's RLC receiver holds SN 131 until SN 130 arrives, which is what its reordering window and t-Reordering timer exist for. Its Status PDU in frame 3036, ACK_SN=133, has no NACK. Wireshark's reassembly doesn't reorder, so it never rebuilds these two SDUs, and the SIP message they carry stays undecoded. It is almost certainly UE 70's 183 Session Progress: the 183 reaches UE 71 in frame 3039, and UE 70 receives a PRACK for it in frame 3046.

Over the whole capture, DRB 2 carried 157 uplink and 128 downlink data PDUs and 166 Status PDUs. No Status PDU carried a NACK, and the eNB sent one PDU twice.

Act Two — DRB 3, unacknowledged mode

Call 1's voice bearer exists from frame 846 to frame 1146. Its RLC session is 71 PDUs, frames 985 to 1140, and its diagram shows all of them.

Frame 985 — the first voice PDU. Uplink SN=0, 77 bytes: the 2-byte UM header, a 2-byte PDCP header, and a 73-byte IP packet with RTP sequence 1 from UE 70 (192.168.101.2) to the media relay (172.22.0.16). FI is 00, one whole SDU. The header has no poll bit to set, and nothing answers.

Frame 1003 — the downlink's own SN 0. The relay's stream from UE 71 starts at downlink SN=0. UE 71 encodes at AMR-WB frame type 8 (23.85 kbit/s) and UE 70 at frame type 2 (12.65 kbit/s), so downlink speech PDUs are 105 bytes against the uplink's 77.

What never appears. All 71 PDUs on this bearer are data PDUs. There is no Status PDU, no ACK_SN, and no poll bit in either direction, and no PDU is ever sent twice. Compare frame 991: the same transport block carries uplink voice SN=2 on DRB 3 and a Status PDU for DRB 2. Two entities share one MAC PDU and follow different rules.

Speech, then silence

The uplink sends seven speech packets 20 ms apart, as the SDP's ptime:20 asked. Then UE 70 stops talking, and AMR-WB silence suppression (TS 26.193) takes over:

sequenceDiagram accTitle: Speech then silence suppression on the RLC UM voice bearer accDescr: The UE sends UM SN 0 to 6 as 77-byte speech PDUs every 20 ms. SN 7 is a 51-byte SID FIRST frame. SN 8, 60 ms later, is a SID UPDATE. SN 9 to 34 are SID UPDATE frames every 160 ms. The eNB sends nothing back on this bearer. participant UE as UE 70 participant eNB loop Every 20 ms, frames 985 to 1000 UE->>eNB: UM SN 0 to 6 · speech · 77 bytes end UE->>eNB: f1004 · SN 7 · SID FIRST · 51 bytes UE->>eNB: f1012 · SN 8 · SID UPDATE · 60 ms later loop Every 160 ms, frames 1024 to 1140 UE->>eNB: SN 9 to 34 · SID UPDATE · 51 bytes end Note over UE,eNB: No poll, no Status PDU, no retransmission
UE 70's uplink on DRB 3. Seven speech packets 20 ms apart, then comfort noise: SID_FIRST, a SID_UPDATE 60 ms later, and one SID_UPDATE every 160 ms to the end of the call. No PDU draws any response.

AMR-WB marks a silence descriptor (SID) frame with frame type 9 and tells the two kinds apart with its STI bit: 0 for SID_FIRST, 1 for SID_UPDATE. Each update carries comfort-noise parameters so the far end can play matching background noise. The packets shrink from 53 bytes of UDP to 27, and the PDUs from 77 bytes to 51. The downlink follows the same pattern from frame 1021: SID_FIRST, then a SID_UPDATE 59 ms later, then one every 160 ms.

Frames 1119 and 1121 — two packets in one UM PDU. UE 71 speaks again briefly. Downlink SN=29 carries a speech packet with the RTP marker bit set, the start of a talk spurt. Downlink SN=30, 156 bytes, carries two SDUs: RTP 30 (speech, 103 bytes with its PDCP header) and RTP 31 (SID_FIRST, 49 bytes), divided by LI=103. RTP 31 was already waiting at the eNB when it built the PDU, so RLC packed both. From here the downlink RLC SN runs one behind the RTP and PDCP sequence numbers, a reminder that RLC numbers PDUs.

Frame 1140 — the end. Uplink SN=34, RTP 35. In 4.4 s the bearer carried 35 uplink and 36 downlink PDUs, 16 of them carrying speech. In frame 1146 the eNB releases DRB 3 and the entity disappears with no closing exchange: UM keeps no state the peer needs to confirm.

What the sequence number is for in UM

UM keeps the sequence number so the receiver can put PDUs back in order, drop duplicates, and spot gaps. The UE's downlink receiver uses a 512-SN reordering window (half the 10-bit space). When an SN is missing, it waits up to t-Reordering, 50 ms here, for the PDU to arrive late, perhaps after a HARQ retransmission. When the timer runs out it gives up on the missing PDU and passes on what it has. It never asks for the PDU again. In this call no SN is skipped in either direction, so the timer never expires.

Two other settings point the same way. PDCP's discardTimer drops any voice packet not sent within 100 ms, and each AMR-WB frame covers only 20 ms of audio. A packet recovered after an AM-style poll and retransmission, 80 ms or more later, would arrive too late to play. For voice, a short gap filled by the codec is better than a late packet.

AM and UM side by side

DRB 2, RLC AMDRB 3, RLC UM
CarriesSIP over TCP, inside IPsec ESPAMR-WB RTP
Header2 bytes: D/C, RF, P, FI, E, SN2 bytes: 3 reserved bits, FI, E, SN
Control PDUs166 Status PDUs, 2 bytes eachnone
Poll bitevery downlink data PDU, 103 of 157 uplinkdoesn't exist
Retransmissions1, timer-driven and unnecessarynot possible
Segmentationcommon uplink (the INVITE: 4 PDUs)never needed
Concatenationcommon downlink (a whole 183 in 1 PDU)once (frame 1121)
Receiver waits for a gapt-Reordering 80 ms, then reports it missingt-Reordering 50 ms, then skips it
Cost of a lost PDUdelay until it is resenta short gap in the audio

Takeaways

  1. The mode follows the traffic. SIP must arrive intact, so its bearer acknowledges and retransmits. Voice must arrive on time, so its bearer does neither.
  2. LTE RLC numbers PDUs. One SDU can span several sequence numbers, and one PDU can hold several SDUs. FI and the length indicators describe the joins.
  3. Segmentation depends on the grant. The UE cut the INVITE into four PDUs; the eNB sent the 183 in one.
  4. A duplicate SN isn't automatically a loss. The one retransmission came from t-PollRetransmit expiring while the UE's Status PDU, held back by t-StatusProhibit, was already on its way. Check for a NACK first; here there was none.
  5. Wireshark's RLC flags assume in-order logging. HARQ can reorder PDUs below RLC, and the flags "missing" and "retransmitted in response to NACK" then describe the log, not the link.

Where this sits in the stack