5G NR gNB MAC — Complete Flow

Companion conversation log: 5G NR gNB MAC — Cross-Layer RRC Release Triage walks the same capture as a User ↔ Claude session.

Source pcap: gnb_mac.pcap comes from the Wireshark merge request wireshark/wireshark!12834.

Capture from the gNB radio side (DLT=149, MAC-NR / RLC-NR / PDCP-NR / NR-RRC / NAS-5GS over a synthetic UDP wrapper, srsRAN_Project style). 68 frames covering two consecutive UE radio sessions on the same gNB cell.

Timestamps in the capture begin 2023-10-27T06:29:27.945Z; UE-2 starts ~10.3 s after UE-1.


Session 1 — UE-1 (RNTI 0x4601): Initial Registration

#FrameDirLayerEvent
11UE→gNBNR-RRC (CCCH/LCID 52)RRC Setup Requestmo-Signalling, random e9dde06d…
22gNB→UENR-RRC (CCCH/LCID 0)RRC Setup — SRB1 added (AM, t-PollRetx=45 ms, sr-TransMax=64, periodicBSR=sf10), TAG/CORESET config
33UE→gNBNR-RRC (SRB1) + NAS-5GSRRC Setup Complete + piggyback NAS Registration Request (initial, 5G-GUTI 0xc5003bc1)
45gNB→UENAS-5GSDL Info Transfer — Authentication Request
57UE→gNBNAS-5GSUL Info Transfer — Authentication Response
69gNB→UENAS-5GSDL Info Transfer — NAS Security Mode Command
710UE→gNBNAS-5GSUL Info Transfer — NAS Security Mode Complete + replay of Registration Request
812gNB→UENR-RRCAS Security Mode Commandcipher=nea0, integrity=nia2
913UE→gNBNR-RRCAS Security Mode Complete
1015gNB→UENAS-5GSDL Info Transfer — Registration Accept
1116UE→gNBNAS-5GSUL Info Transfer — Registration Complete
1218gNB→UENAS-5GSDL Info Transfer — Configuration Update Command

Frames 4, 6, 8, 11, 14, 17, 19 are RLC AM Status PDUs (ACK_SN climbs 1→5 on SRB1, no NACKs).

RRC Release for UE-1 lands inside Session 2's timeline (see frames 24, 31, 32). Three back-to-back releases on RNTI 0x4601 with identical PDCP SN=5 / MAC-I 0x3cabf79f are RLC poll-retransmissions of one Release PDU. See Cross-layer release analysis below — this release is abnormal (radio-link loss), not a graceful teardown.


Session 2 — UE-2 (RNTI 0x4602): Service Request, Data, Deregistration

2a. RRC re-establishment & service authorisation

#FrameDirLayerEvent
120UE→gNBNR-RRC (CCCH)RRC Setup Requestmo-Data
221gNB→UENR-RRC (CCCH)RRC Setup — SRB1 config (same template as UE-1)
322UE→gNBNR-RRC + NAS-5GSRRC Setup Complete + piggyback NAS Service Request (5G-S-TMSI 0xe9003dcc)
425gNB→UENR-RRCAS Security Mode Command — nea0 / nia2
526UE→gNBNR-RRCAS Security Mode Complete
628gNB→UENAS-5GSDL Info Transfer — Service Accept
729UE→gNBNAS-5GSUL Info Transfer — UL NAS Transport carrying PDU Session Establishment Request

2b. Capability exchange & DRB setup

#FrameDirLayerEvent
833gNB→UENR-RRCUE Capability Enquiry (RAT=nr)
935UE→gNBNR-RRCUE Capability Information — PowerClass pc2
1037gNB→UENR-RRCRRC Reconfiguration — adds SRB2 + DRB1 for PDU Session 1, QFI=1, default DRB, PDCP SN size 18-bit DL/UL, ROHC notUsed; SRB2 (LCID 2, AM, t-PollRetx=45 ms), DRB1 (LCID 4, AM, t-PollRetx=20 ms, pollPDU=16), dynamic HARQ-ACK codebook
1138UE→gNBNR-RRCRRC Reconfiguration Complete

Frames 40–68 are UE→gNB PDCP PDUs on LCID 4 / DRB1, interleaved with gNB RLC AM Status ACKs (all ACK_SN=0, no NACKs — DRB just opened). The PDCP plane is reported as Signalling because the dissector cannot bind LCID 4 to a DRB without an explicit drb-pcap mapping, but the COUNT progression and pollPDU=16-driven Status requests are real.

2d. Deregistration & release

#FrameDirLayerEvent
1264UE→gNBNAS-5GS (SRB2)UL Info Transfer — Deregistration Request (UE-originating)
1366gNB→UENR-RRCRRC Release (PDCP SN=4, MAC-I 0x21c437d8)
1467gNB→UENR-RRCRRC Release — retransmit (poll-retx storm, UE already gone)
1568gNB→UENR-RRCRRC Release — retransmit

Cross-layer release analysis

The capture contains 6 RRC Release frames but only 2 distinct release events — one per UE. Each release is a single PDU retransmitted three times because RLC-AM keeps polling for a Status PDU that the UE will never send. The retx storms look alike on the surface but the root causes are very different:

EventUEFramesPDCP SNMAC-IVerdict
Release UE-1RNTI 0x460124, 31, 3250x3cabf79fAbnormal — radio-link loss
Release UE-2RNTI 0x460266, 67, 6840x21c437d8Normal — switch-off deregistration

UE-1 (0x4601) — abnormal release

Walking the layers:

Verdict. No graceful NAS Deregistration, no Configuration Update Complete, no MAC CE indicating reattach. This is an inactivity / RLF-driven release of a UE that had silently dropped off the air. Confirmation would come from an NGAP capture showing UE Context Release Request with cause radio-connection-with-UE-lost (TS 38.413 §9.3.1.2), or a UE-side trace showing T310 expiry during the silent window.

UE-2 (0x4602) — normal release

Walking the layers:

Verdict. Textbook switch-off deregistration. The retx storm is a benign side-effect of the spec-compliant interaction between "UE goes silent immediately on switch-off" and "RLC-AM polls until max-retx".

Side-by-side summary

UE-1 (0x4601)UE-2 (0x4602)
Last UE→gNB activityF19 RLC Status (t=28.265 s)F64 Deregistration Request (t=43.788 s)
Gap before Release~10 s of silence7 ms (NGAP round-trip)
Triggering DL PDUConfiguration Update Command (SN=4) un-ACKedclean ack-chain through Reconfiguration, then Release
RLC max-retx fired?Should have at ~360 ms but Release is 10 s later → gNB inactivity / RLF cleanupN/A — UE moved to IDLE by NAS switch-off
UE state at ReleaseAlready in IDLE due to UE-side RLF (N310/T310 expiry probable)Already in IDLE due to NAS switch-off
Cause classAbnormal — radio-link loss / inactivity cleanupNormal — graceful deregistration

Sessions index (from sessions.fxt)

All sessions are reported as incomplete::mid-capture because the radio side captures don't carry SCTP/IP teardown markers — the FXT uses auto-start so each per-bearer view is still rendered.

Session typeCountPer-UE breakdown
mac-ue2one per C-RNTI
rrc-connection2one per C-RNTI
pdcp-bearer3SRB1 ×2, DRB1 ×1 (UE-2 only)
rlc-bearer3same split as PDCP
nas-5gs2UE-1 initial-registration, UE-2 service-request

Tooling

Templates used: bundled 5g-nr-radio/explore.fxt.xml and 5g-nr-radio/sessions.fxt.xml. Tshark flags: DLT=149→udp + all six MAC/RLC/PDCP LTE/NR heuristics + nas-5gs.null_decipher:TRUE (safe here because AS cipher is NEA0).

Source of the gnb_mac.pcap sample: Wireshark merge request !12834.