01UserExplain the flow & cross-layer issues

Please explain the message flow in gnb_mac_nr_dlt149.pcap. Please analyze the flows at the session level and perform cross-layer analysis of the issues you see in the flow.

02ClaudeSession-level flow & four issues

analyze_capture detected the full 5G NR radio stack — NAS-5GS, NR-RRC, MAC-NR, RLC-NR, PDCP-NR — behind a DLT_USER 149 wrapper (auto-mapped to udp with the mac_nr_udp / rlc_nr_udp / pdcp_nr_udp heuristics). Rendered with the bundled 5g-nr-radio FXT templates: 68 frames, one UE talking to one gNB across two RRC connections.

ConnectionC-RNTIWindowPurpose
Session 10x460127.9–28.2 sInitial Registration
Session 20x460238.2–43.9 sService Request → PDU session → stall → Deregistration

Session 1 is a clean registration (RRC Setup → Auth → NAS SMC → AS Security Mode nea0/nia2 → Registration Accept/Complete), every SRB1 PDU RLC-ACKed, then 10 s of silence. Session 2's control plane also looks healthy — up to the point where user data should flow.

Cross-layer issues

  • Issue 1 DRB uplink permanently stuck (frames 40–63). The UE sends RLC AM Data SN=0 on the DRB and the gNB answers STATUS ACK_SN=0 ~12 times — SN=0 never acknowledged, RX never advances.
  • Issue 2 UE gives up and deregisters (F64) once the bearer won't drain.
  • Issue 3 Stale-context RRC Release storm on the old connection 0x4601 (F24, 31, 32) — same PDCP SN 5 retransmitted, never ACKed.
  • Issue 4 Final RRC Release storm on 0x4602 (F66, 67, 68) after the UE has already left.

Headline: control plane fine, user plane never carries a byte. Initial root-cause hypothesis (revised later): possibly no PDU Session Establishment Accept / user-plane bring-up — flagged for verification against the NAS containers.

03UserGenerate explore & session flows

Yes. Please generate explore and session-level flows.

04ClaudeDiagrams generated & served

Generated both views and opened them via the auto-spawned visualether serve.

  • Explore: all 68 frames as one UE↔gNB sequence — both RRC connections, the NAS containers, and the failure tail.
  • Sessions: 14 sessions across five trackers — mac-ue×2, rrc-connection×2, nas-5gs×2, pdcp-bearer×4, rlc-bearer×4.

Every session is incomplete::mid-capture — no session has a clean open+close bracket inside the capture, which matches the analysis: connection 1 is never cleanly released before going idle, and connection 2 ends in the unacknowledged RRC-Release retransmission storm rather than a confirmed release. The rlc-bearer entry for DRB LCID 4 is the one that visually shows the SN=0 poll/retransmit storm.

05UserDoes it carry SFN/slot?

Does this PCAP contain SFN and slot information?

06ClaudeNo SFN/slot — field check

Queried mac-nr.sfn and mac-nr.slot across all 68 frames rather than assuming. Both columns are empty on every frame; mac-nr.direction and mac-nr.rnti are populated.

The writer included the mandatory MAC-NR framing tags (RNTI, direction, HARQ id, duplex) but omitted the optional subframe/slot timing tag, so Wireshark has no radio-frame timing to dissect.

  • Cannot do slot-accurate work here: HARQ RTT in slots, k1/k2 offsets, scheduling-occasion alignment, SFN-wrap.
  • Can still order and time-correlate everything via the microsecond pcap capture timestamps — which is exactly what drives the Issue-1 timeline.

To get SFN/slot the capture would have to be re-generated by the gNB/L2 trace with the slot tag enabled, or sourced from a PHY-layer trace.

07UserInvestigate Issue 1 deeply

Let us investigate Issue 1 deeply and assign time markers and tshark frames to your analysis.

08ClaudeDRB stall deep dive + correction

A detailed field extraction overturned part of my earlier guess, and I led with the correction.

Correction. I previously said “no PDU Session Establishment Accept in DL.” That was wrong. The NAS extraction shows it is present: F29 (UL) carries 5GSM 0xc1 = Establishment Request; F37 (DL NAS Transport 0x68) carries 5GSM 0xc2 = Establishment Accept, piggybacked on the RRC Reconfiguration that adds the DRB. So the session opened and the DRB was configured correctly — Issue 1 is a pure radio-side RLC-AM stall, not a session-setup failure.

t=0 = frame 1 @ 06:29:27.945. Bearer map from the F37 config: bearer 1 = SRB1, bearer 2 = SRB2, bearer 4 = DRB1 (LCID 4, AM, t-PollRetransmit=ms20).

The stall (frames 40–63, ~4.1 s)

Every UE uplink PDU on bearer 4 is SN=0, SI=complete, P=1; every gNB reply is STATUS, ACK_SN=0, no NACK.

Framet_rel (s)DirRLC on bearer 4
4011.143ULDATA SN=0, P=1
4111.144DLSTATUS ACK_SN=0
4412.143ULDATA SN=0, P=1
4813.143ULDATA SN=0 ×2
5214.143ULDATA SN=0
5815.143ULDATA SN=0
6315.225DLSTATUS ACK_SN=0 (12th & last)

Two interleaved timers: a ~1.000 s cadence (the upper layer re-offering the same single SDU — the SN never leaves 0, proving exactly one packet) and ~20–40 ms bursts within each second (RLC t-PollRetransmit).

Why ACK_SN=0 is the smoking gun

Per TS 38.322, ACK_SN is the next not-received SN; everything below is acknowledged. Had the gNB accepted SN=0, the first STATUS (F41) would read ACK_SN=1. All 12 read ACK_SN=0 — the gNB RLC-AM RX entity reports its initial state on every poll and never advances RX_Next.

Cross-layer reconciliation

Because this is a gNB-side trace, a logged UL PDU is one the gNB MAC already decoded post-HARQ:

  • PHY/MAC: ok delivered — SN=0 demuxed on LCID 4 every time, no HARQ failure.
  • RLC-AM (gNB RX): stuck — receives SN=0 but never delivers it up / never advances ACK_SN. This is the defect.
  • PDCP/SDAP: never receives the SDU → no IP packet reaches N3.
  • Downlink DRB: zero DATA PDUs — every DL bearer-4 frame is a STATUS.

Termination & verdict

At F64 (t=15.843 s) the UE sends a Deregistration Request (UE-originating) on SRB2 — abandoning the call 4.70 s after its first DRB packet. The gNB then triple-sends RRC Release (F66/67/68) which the departed UE never acknowledges.

ItemFinding
SymptomSingle SDU SN=0 retransmitted ~18× (F40–62)
gNB response12× STATUS ACK_SN=0 (F41–63)
Ruled outSession setup (Accept present F37), HARQ/MAC, ciphering (nea0 null)
Root causegNB RLC-AM receive entity for DRB1/LCID 4 fails to deliver/ACK SN=0
09UserAuthor the FXT highlighter

Yes — author the custom FXT highlighter for the stall.

10ClaudeCustom FXT, validated & rendered

Derived explore-drb-stall.fxt.xml from the 5g-nr-radio sample and injected two firebrick highlighter templates so the stalled DRB frames stop rendering in the same neutral lavender as healthy ARQ.

The clean-filter insight: in this capture ACK_SN=0 is unique to the stalled DRB (every SRB status PDU reports ACK_SN ≥ 1), so a template anchored on rlc-nr.am.ack-sn == 0 catches exactly the 12 stall STATUS PDUs with no false positives.

  • STATUS template (priority 355, anchored on am.ack-sn): fired on exactly the 12 DRB status PDUs, zero SRB status PDUs.
  • DATA template (priority 348, UL, anchored on am.sn): fired on exactly the bearer-4 SN=0 (re)transmissions; SRB RLC data stayed with the higher-priority NR-RRC templates.

validate_fxt: valid, 100% frame coverage, no template conflicts. Regenerated the diagram; verified against the NDJSON that frames 40–62 carry 🛑📤 DRB UL Data SN=0 (never ACKed) and 41–63 carry 🛑📥 DRB STATUS — ACK_SN=0 (no progress), bracketed by the two firebrick RRC-Release storms.

Each data PDU shows SN+Poll and each STATUS shows ACK_SN, with frame.number in every remark — so the SN=0 / ACK_SN=0 loop can be counted directly off the diagram.

Method. One pcap driven through VisualEther via its MCP integration with Claude — analyze_capture for protocol detection, explore + extract_sessions with the 5g-nr-radio templates for the sequence and per-session views, and query_fields for the frame-indexed RLC/NAS matrices that pinned the stall and corrected the root cause. The custom explore-drb-stall.fxt.xml was checked with validate_fxt (100% coverage) before rendering. Capture: gnb_mac_nr_dlt149.pcap — 5G NR mac-nr over DLT_USER 149, from Wireshark MR !12834 (srsRAN, R. Falkenberg).