NR-RRC in a Real 5G Capture

One layer of the 5G NR attach walkthrough, followed on its own: 29 messages over frames 2 to 137, covering two RRC connections — the first from its Setup Request through security, capabilities, the reconfiguration that builds the data bearer, and the release, then the mobile-terminated connection that returns after it.

💡 Read the walkthrough and the diagram side by side. Open the interactive diagram (or PDF) in a split-screen window so the captions stay in view as you read. In Edge, Chrome, or Firefox, right-click the link and pick your browser's split-screen option (Edge labels it "Open link in split screen window"). On macOS, prefer Chrome or Firefox — Safari has no in-browser split screen. Otherwise, open the diagram in a new tab and snap the two windows side by side.

Where RRC sits

sequenceDiagram accTitle: 5G NR control-plane protocol stack, RRC highlighted accDescr: The control-plane layers, top of stack to bottom. NAS spans the UE and the AMF, passing transparently through the gNB. RRC, PDCP, RLC, MAC and PHY each span the UE and the gNB. RRC, the subject of this article, is highlighted. participant UE participant gNB participant AMF Note over UE,AMF: NAS Note over UE,gNB: RRC Note over UE,gNB: PDCP Note over UE,gNB: RLC Note over UE,gNB: MAC Note over UE,gNB: PHY
The 5G NR control-plane stack, with RRC highlighted. RRC is the top of the radio stack proper: it sits above PDCP and talks to its peer RRC entity in the gNB. NAS, above it, is not a radio layer at all — its box stretches past the gNB to the AMF, and RRC is what carries it across the air.

That picture explains the whole shape of this page. RRC's peer is the gNB, so an RRC procedure is a radio negotiation, finished in a millisecond or two. But the box above it reaches all the way to the AMF, and it gets there by riding inside RRC messages. So roughly half of what you are about to read is RRC doing its own job, and the other half is RRC acting as a courier for a conversation it cannot read.

What RRC does

RRC — Radio Resource Control (TS 38.331) is the control protocol of the 5G radio link. Everything below it moves bytes; RRC is the layer that decides which bytes move, over what, and for whom. In one connection, it will:

Two structural facts make RRC messages read the way they do. First, they are ASN.1, encoded with the Unaligned Packed Encoding Rules, which is why a message that configures four protocol layers fits in a couple of hundred bytes and why optional fields appear in a Wireshark tree as explicit presence bits. Second, RRC messages are nested: large configuration blocks are encoded separately and carried as OCTET STRINGs inside their parent, so you routinely see a decode go one level deeper than you expected.

Key fields that are worth learning before we walk through the flow:

FieldMeaning
rrc-TransactionIdentifierA two-bit integer (0–3) that pairs a response with the command that asked for it. Present on network-initiated procedures; absent where there is nothing to pair.
establishmentCauseWhy the UE is opening a connection at all — mo-Signalling, mo-Data, mt-Access, and so on. The first thing you learn about a new connection.
ue-IdentityHow the UE names itself in the very first message, before the cell knows anything about it. A CHOICE of two 39-bit values — and which branch it takes turns out to be the most informative field on this page.
radioBearerConfigThe bearer ledger: which SRBs and DRBs to add, modify or release, and how PDCP and SDAP are configured on each.
masterCellGroupA separately encoded blob holding the RLC, MAC and PHY configuration for the cell group. Everything the lower layers need arrives inside here.
dedicatedNAS-MessageAn OCTET STRING. The core-network message RRC is couriering — and, from RRC's point of view, nothing more than a length and some bytes.
securityConfig / securityAlgorithmConfigWhich ciphering and integrity algorithms the Access Stratum will use. Never a key: only the choice of algorithm crosses the air.

One more piece of vocabulary, because it changes early in the walk. RRC messages travel on logical channels, and the channel is baked into the message's ASN.1 type:

Watch for that switch at frame 4. It is the moment the UE stops being anonymous.

The conversation we're following

💡 Where this diagram comes from. The diagram on this page is one session that VisualEther — the tool that decoded this capture and generated the diagrams here — lifted out of the full six-layer trace. VisualEther splits a capture into per-protocol sessions and names each one; this is the session it labels rrc-connection/timeout/00001, keyed on rrc-connection::0x8000, 29 messages over frames 2 to 137. Point VisualEther at the same PCAP, and this is the session it hands you.

0x8000 is the C-RNTI — the Cell Radio Network Temporary Identifier, the short handle a cell uses to address one connected UE — and the capture reuses it. So this single timeline carries two RRC connections: the long one that attaches, secures itself, opens a data bearer, and is released, and the shorter mobile-terminated one that follows — which, as the closing section explains, goes dark on this diagram rather than finishing.

Three reading notes before the walk:

The flow at a glance

Before the frame-by-frame walk, here is the whole RRC conversation on a single timeline — both connections that share C-RNTI 0x8000, in the order the capture shows them. Connection 1 attaches, secures itself, builds the data bearer, and is released; connection 2 is paged back with mt-Access and goes dark after its own security bring-up. Every frame number matches a step in the walk below.

sequenceDiagram accTitle: NR-RRC flow across two connections sharing C-RNTI 0x8000 accDescr: Connection 1 runs from an RRC Setup Request on the Common Control Channel through RRC Setup, an RRC Setup Complete carrying a NAS Registration Request, several DL and UL Information Transfers that courier NAS, the Access-Stratum Security Mode Command and Complete selecting NEA2 and NIA2, a UE Capability Enquiry and Information exchange, an RRC Reconfiguration that adds SRB2 and the DRB1 data bearer with an SDAP QFI 2 configuration, its Reconfiguration Complete, a long stretch of no RRC while user data flows, and an RRC Release that RLC retransmits once. Connection 2 repeats the Setup handshake with establishment cause mt-Access, an RRC Setup Complete carrying a NAS Service Request, and a fresh Security Mode Command and Complete, after which the connection goes dark because the published keys cover connection 1 only. participant UE participant gNB Note over UE,gNB: Connection 1 — mo-Signalling attach (frames 2–129) UE->>gNB: F2 · RRC Setup Request (CCCH · randomValue · mo-Signalling) gNB->>UE: F3 · RRC Setup (installs SRB1 + masterCellGroup) UE->>gNB: F4 · RRC Setup Complete (+ NAS Registration Request) Note over UE,gNB: UE enters RRC_CONNECTED gNB->>UE: F7 · DL Information Transfer (NAS) UE->>gNB: F9 · UL Information Transfer (NAS) Note over UE,gNB: F11–F15 · more DL/UL Information Transfer<br/>NAS security context comes up inside the payload gNB->>UE: F17 · Security Mode Command (nea2 / nia2) UE->>gNB: F18 · Security Mode Complete (empty — proof is the integrity tag) gNB->>UE: F20 · UE Capability Enquiry (band n5 filter) UE->>gNB: F23 · UE Capability Information (1656-octet container) Note over UE,gNB: F30, F31, F36 · DL/UL Information Transfer (NAS) gNB->>UE: F38 · RRC Reconfiguration (+ SRB2, DRB1, SDAP · QFI 2) UE->>gNB: F39 · RRC Reconfiguration Complete Note over UE,gNB: DRB 1 live · F40–F127 carry no RRC at all gNB->>UE: F128 · RRC Release (no suspendConfig → RRC_IDLE) gNB->>UE: F129 · RRC Release (RLC retransmit — same PDU) Note over UE,gNB: Connection 2 — mt-Access return (frames 131–137) UE->>gNB: F131 · RRC Setup Request (mt-Access · ng-5G-S-TMSI-Part1) gNB->>UE: F132 · RRC Setup (identical to F3) UE->>gNB: F133 · RRC Setup Complete (+ NAS Service Request) gNB->>UE: F136 · Security Mode Command (nea2 / nia2) UE->>gNB: F137 · Security Mode Complete Note over UE,gNB: Fresh K_gNB — then the connection goes dark (keys unpublished)
The two RRC connections on one timeline. Connection 1 (mo-Signalling): Setup handshake, the DL/UL Information Transfers that courier NAS, the AS Security Mode procedure, the UE Capability exchange, the RRC Reconfiguration that adds SRB2 and DRB1, and the Release. Connection 2 (mt-Access): the same Setup and security bring-up on a fresh context, after which the diagram goes dark because the published keys cover connection 1 only.

The walk

Frame 2 — the UE names itself before it has a name. A UL-CCCH-Message, 99 bytes on the wire, and the entire RRC content is three fields. There is no rrc-TransactionIdentifier: a transaction identifier pairs a response with a command, and nothing has been commanded yet.

ue-Identity is a CHOICE, and this connection takes the randomValue branch — 39 bits, b34056b184. establishmentCause is mo-Signalling: mobile-originated signaling, the UE wanting to talk to the core rather than move bulk data. And spare, one zero bit, pads the message to the fixed size the Common Control Channel grant allows.

Remember the identity branch. Frame 131 takes the other one.

Frame 3 — what an RRC Setup actually installs

0.708 ms later, the gNB answers on DL-CCCH-Message with rrc-TransactionIdentifier: 0. The message has exactly two payload IEs, and their sizes are wildly lopsided.

radioBearerConfig is the small one: a one-item srb-ToAddModList naming srb-Identity: 1, and nothing else. In particular, there is no pdcp-Config, so SRB 1 takes the specification's default PDCP profile rather than anything signaled here.

masterCellGroup is the big one: a separately encoded OCTET STRING of 209 octets. Everything the lower layers need is inside it, and unpacked, it is a CellGroupConfig with cellGroupId: 0 and four sections:

That last group is worth pausing on, because it is pure RRC — no layer below ever sees these values. t310 is the timer that starts when the physical layer reports out-of-sync and stops if it recovers; n310 and n311 are how many consecutive bad or good indications it takes to start and stop it; t311 bounds the re-establishment attempt afterward. They are the entire definition of "this link has failed", and they are set before a single byte of user data has moved.

On receipt of this message, the UE enters RRC_CONNECTED.

Expand the tree below to watch that install unwrap. Because an RRC Setup travels on the Common Control Channel, there is no pdcp-nr or rlc-nr layer between mac-nr and nr-rrc — set that against frame 38, where there is. With mac-nr opened a level, the RRC Setup sits directly inside it, and the 209-octet masterCellGroup opens into the nested CellGroupConfig:

[00003] Frame 3 RRC Setup 2024-04-13T03:06:55.797726Z 📡 gNB 📱 UE
frame : Frame 3: Packet, 291 bytes on wire (2328 bits), 291 bytes captured (2328 bits)
Encapsulation type : Ethernet (1)
Arrival Time : Apr 12, 2024 20:06:55.797726000 Pacific Daylight Time
UTC Arrival Time : Apr 13, 2024 03:06:55.797726000 UTC
Epoch Arrival Time : 1712977615.797726000
Time shift for this packet : 0.000000000 seconds
Time delta from previous captured frame : 708.000 microseconds
Time delta from previous displayed frame : 708.000 microseconds
Time since reference or first frame : 5.998000 milliseconds
Frame Number : 3
Frame Length : 291 bytes (2328 bits)
Capture Length : 291 bytes (2328 bits)
Frame is marked : False
Frame is ignored : False
Protocols in frame : eth:ethertype:ip:udp:mac-nr:nr-rrc
Character encoding : ASCII (0)
eth : Ethernet II, Src: 00:00:00:00:00:00, Dst: 00:00:00:00:00:00
Destination : 00:00:00:00:00:00
Destination (resolved) : 00:00:00:00:00:00
Destination OUI : 00:00:00 (Officially Xerox, but 0:0:0:0:0:0 is more common)
Destination OUI (resolved) : Officially Xerox, but 0:0:0:0:0:0 is more common
.... ..0. .... .... .... .... = LG bit : Globally unique address (factory default)
.... ...0 .... .... .... .... = IG bit : Individual address (unicast)
Address : 00:00:00:00:00:00
Address (resolved) : 00:00:00:00:00:00
Address OUI : 00:00:00 (Officially Xerox, but 0:0:0:0:0:0 is more common)
Address OUI (resolved) : Officially Xerox, but 0:0:0:0:0:0 is more common
.... ..0. .... .... .... .... = LG bit : Globally unique address (factory default)
.... ...0 .... .... .... .... = IG bit : Individual address (unicast)
Source : 00:00:00:00:00:00
Source (resolved) : 00:00:00:00:00:00
Source OUI : 00:00:00 (Officially Xerox, but 0:0:0:0:0:0 is more common)
Source OUI (resolved) : Officially Xerox, but 0:0:0:0:0:0 is more common
.... ..0. .... .... .... .... = LG bit : Globally unique address (factory default)
.... ...0 .... .... .... .... = IG bit : Individual address (unicast)
Address : 00:00:00:00:00:00
Address (resolved) : 00:00:00:00:00:00
Address OUI : 00:00:00 (Officially Xerox, but 0:0:0:0:0:0 is more common)
Address OUI (resolved) : Officially Xerox, but 0:0:0:0:0:0 is more common
.... ..0. .... .... .... .... = LG bit : Globally unique address (factory default)
.... ...0 .... .... .... .... = IG bit : Individual address (unicast)
Type : IPv4 (0x0800)
Stream index : 0
ip : Internet Protocol Version 4, Src: 127.0.0.1, Dst: 127.0.0.1
0100 .... = Version : 4
.... 0101 = Header Length : 20 bytes (5)
Differentiated Services Field : 0x00 (DSCP: CS0, ECN: Not-ECT)
0000 00.. = Differentiated Services Codepoint : Default (0)
.... ..00 = Explicit Congestion Notification : Not ECN-Capable Transport (0)
Total Length : 277
Identification : 0x0002 (2)
010. .... = Flags : 0x2, Don't fragment
0... .... = Reserved bit : Not set
.1.. .... = Don't fragment : Set
..0. .... = More fragments : Not set
...0 0000 0000 0000 = Fragment Offset : 0
Time to Live : 64
Protocol : UDP (17)
Header Checksum : 0xffff [validation disabled]
Header checksum status : Unverified
Source Address : 127.0.0.1
Source or Destination Address : 127.0.0.1
Source Host : 127.0.0.1
Source or Destination Host : 127.0.0.1
Destination Address : 127.0.0.1
Source or Destination Address : 127.0.0.1
Destination Host : 127.0.0.1
Source or Destination Host : 127.0.0.1
Stream index : 0
udp : User Datagram Protocol, Src Port: 13337, Dst Port: 0
Source Port : 13337
Destination Port : 0
Source or Destination Port : 13337
Source or Destination Port : 0
Length : 257
Checksum : 0xffff [unverified]
Checksum Status : Unverified
Stream index : 0
Stream Packet Number : 3
Timestamps
Time since first frame : 5.998000 milliseconds
Time since previous frame : 708.000 microseconds
UDP payload (249 bytes)
mac-nr : MAC-NR DL-SCH (Contention Resolution) (LCID:0 214 bytes) (Padding 0 bytes)
Context (RNTI=32768)
Radio Type : FDD (1)
Direction : Downlink (1)
RNTI : 0x8000 (32768)
RNTI Type : C-RNTI (3)
UEId : 1
System Frame Number : 189
Slot : 9
HarqId : 0
Subheader : (Contention Resolution)
00.. .... = Reserved : 0x00
..11 1110 = LCID : UE Contention Resolution Identity (62)
..11 1110 = LCID : 0x3e
UE Contention Resolution Identity : 1b34056b1846
Subheader : (LCID:0 214 bytes)
0... .... = Reserved : 0x00
.0.. .... = Format : 8 bits
..00 0000 = LCID : CCCH (0)
..00 0000 = LCID : 0x00
SDU Length : 214
DL-SCH SDU […] : 204004068ae0048020c3cc00f80200d07800020d62ea000808012d80da8000f80000000001837084200011116d0000001208000083a74001020266aae92838002081840a1839388122858c1a3878fc000030021810006004b04000c00a60c0018016c200030031850006006b0c000
NR Radio Resource Control (RRC) protocol
DL-CCCH-Message
message : c1 (0)
c1 : rrcSetup (1)
rrcSetup
rrc-TransactionIdentifier : 0
criticalExtensions : rrcSetup (0)
rrcSetup
.... ..0. Optional Field Bit : False (lateNonCriticalExtension is NOT present)
.... ...0 Optional Field Bit : False (nonCriticalExtension is NOT present)
NR Radio Resource Control (RRC) protocol
radioBearerConfig
0... .... Extension Bit : False
.1.. .... Optional Field Bit : True (srb-ToAddModList is present)
..0. .... Optional Field Bit : False (srb3-ToRelease is NOT present)
...0 .... Optional Field Bit : False (drb-ToAddModList is NOT present)
.... 0... Optional Field Bit : False (drb-ToReleaseList is NOT present)
.... .0.. Optional Field Bit : False (securityConfig is NOT present)
srb-ToAddModList : 1 item
Item 0
SRB-ToAddMod
.... ...0 Extension Bit : False
0... .... Optional Field Bit : False (reestablishPDCP is NOT present)
.0.. .... Optional Field Bit : False (discardOnPDCP is NOT present)
..0. .... Optional Field Bit : False (pdcp-Config is NOT present)
srb-Identity : 1
masterCellGroup […] : 5c0090041879801f00401a0f000041ac5d4001010025b01b50001f0000000000306e10840002222da00000024100001074e80020404cd55d25070004103081430727102450b183470f1f800006004302000c0096080018014c18003002d84000600630a000c00d618001801c
NR Radio Resource Control (RRC) protocol
NR Radio Resource Control (RRC) protocol
CellGroupConfig
0... .... Extension Bit : False
.1.. .... Optional Field Bit : True (rlc-BearerToAddModList is present)
..0. .... Optional Field Bit : False (rlc-BearerToReleaseList is NOT present)
...1 .... Optional Field Bit : True (mac-CellGroupConfig is present)
.... 1... Optional Field Bit : True (physicalCellGroupConfig is present)
.... .1.. Optional Field Bit : True (spCellConfig is present)
.... ..0. Optional Field Bit : False (sCellToAddModList is NOT present)
.... ...0 Optional Field Bit : False (sCellToReleaseList is NOT present)
cellGroupId : 0
rlc-BearerToAddModList : 1 item
Item 0
RLC-BearerConfig
.... ...0 Extension Bit : False
1... .... Optional Field Bit : True (servedRadioBearer is present)
.0.. .... Optional Field Bit : False (reestablishRLC is NOT present)
..0. .... Optional Field Bit : False (rlc-Config is NOT present)
...1 .... Optional Field Bit : True (mac-LogicalChannelConfig is present)
logicalChannelIdentity : 1
servedRadioBearer : srb-Identity (0)
srb-Identity : 1
mac-LogicalChannelConfig
.... 0... Extension Bit : False
.... .1.. Optional Field Bit : True (ul-SpecificParameters is present)
ul-SpecificParameters
.... ..0. Extension Bit : False
.... ...0 Optional Field Bit : False (allowedServingCells is NOT present)
0... .... Optional Field Bit : False (allowedSCS-List is NOT present)
.0.. .... Optional Field Bit : False (maxPUSCH-Duration is NOT present)
..0. .... Optional Field Bit : False (configuredGrantType1Allowed is NOT present)
...1 .... Optional Field Bit : True (logicalChannelGroup is present)
.... 1... Optional Field Bit : True (schedulingRequestID is present)
priority : 1
prioritisedBitRate : infinity (15)
bucketSizeDuration : ms50 (3)
logicalChannelGroup : 0
schedulingRequestID : 0
.... ...0 logicalChannelSR-Mask : False
0... .... logicalChannelSR-DelayTimerApplied : False
mac-CellGroupConfig
.0.. .... Extension Bit : False
..0. .... Optional Field Bit : False (drx-Config is NOT present)
...1 .... Optional Field Bit : True (schedulingRequestConfig is present)
.... 1... Optional Field Bit : True (bsr-Config is present)
.... .1.. Optional Field Bit : True (tag-Config is present)
.... ..1. Optional Field Bit : True (phr-Config is present)
schedulingRequestConfig
.... ...1 Optional Field Bit : True (schedulingRequestToAddModList is present)
0... .... Optional Field Bit : False (schedulingRequestToReleaseList is NOT present)
schedulingRequestToAddModList : 1 item
Item 0
SchedulingRequestToAddMod
.... 0... Optional Field Bit : False (sr-ProhibitTimer is NOT present)
schedulingRequestId : 0
sr-TransMax : n16 (2)
bsr-Config
...0 .... Extension Bit : False
.... 0... Optional Field Bit : False (logicalChannelSR-DelayTimer is NOT present)
periodicBSR-Timer : sf1 (0)
retxBSR-Timer : sf80 (3)
tag-Config
.... .0.. Optional Field Bit : False (tag-ToReleaseList is NOT present)
.... ..1. Optional Field Bit : True (tag-ToAddModList is present)
tag-ToAddModList : 1 item
Item 0
TAG
.0.. .... Extension Bit : False
tag-Id : 0
timeAlignmentTimer : infinity (7)
phr-Config : setup (1)
setup
0... .... Extension Bit : False
phr-PeriodicTimer : sf10 (0)
phr-ProhibitTimer : sf0 (0)
phr-Tx-PowerFactorChange : dB1 (0)
.0.. .... multiplePHR : False
..0. .... dummy : False
...0 .... phr-Type2OtherCell : False
phr-ModeOtherCG : real (0)
.... .0.. skipUplinkTxDynamic : False
physicalCellGroupConfig
.... ..0. Extension Bit : False
.... ...0 Optional Field Bit : False (harq-ACK-SpatialBundlingPUCCH is NOT present)
0... .... Optional Field Bit : False (harq-ACK-SpatialBundlingPUSCH is NOT present)
.1.. .... Optional Field Bit : True (p-NR-FR1 is present)
..0. .... Optional Field Bit : False (tpc-SRS-RNTI is NOT present)
...0 .... Optional Field Bit : False (tpc-PUCCH-RNTI is NOT present)
.... 0... Optional Field Bit : False (tpc-PUSCH-RNTI is NOT present)
.... .0.. Optional Field Bit : False (sp-CSI-RNTI is NOT present)
.... ..0. Optional Field Bit : False (cs-RNTI is NOT present)
p-NR-FR1 : 23 dBm
pdsch-HARQ-ACK-Codebook : dynamic (1)
spCellConfig
.... ..0. Extension Bit : False
.... ...0 Optional Field Bit : False (servCellIndex is NOT present)
0... .... Optional Field Bit : False (reconfigurationWithSync is NOT present)
.1.. .... Optional Field Bit : True (rlf-TimersAndConstants is present)
..0. .... Optional Field Bit : False (rlmInSyncOutOfSyncThreshold is NOT present)
...1 .... Optional Field Bit : True (spCellConfigDedicated is present)
rlf-TimersAndConstants : setup (1)
setup
.... .1.. Extension Bit : True
t310 : ms1000 (5)
n310 : n1 (0)
n311 : n1 (0)
0... .... Small Number Bit : False
Number of Sequence Extensions : 0
.... ...1 Extension Present Bit : True (extension addition group is present)
t311 : ms1000 (0)
spCellConfigDedicated
0... .... Extension Bit : False
.0.. .... Optional Field Bit : False (tdd-UL-DL-ConfigurationDedicated is NOT present)
..1. .... Optional Field Bit : True (initialDownlinkBWP is present)
...0 .... Optional Field Bit : False (downlinkBWP-ToReleaseList is NOT present)
.... 0... Optional Field Bit : False (downlinkBWP-ToAddModList is NOT present)
.... .1.. Optional Field Bit : True (firstActiveDownlinkBWP-Id is present)
.... ..0. Optional Field Bit : False (bwp-InactivityTimer is NOT present)
.... ...1 Optional Field Bit : True (defaultDownlinkBWP-Id is present)
1... .... Optional Field Bit : True (uplinkConfig is present)
.0.. .... Optional Field Bit : False (supplementaryUplink is NOT present)
..1. .... Optional Field Bit : True (pdcch-ServingCellConfig is present)
...1 .... Optional Field Bit : True (pdsch-ServingCellConfig is present)
.... 0... Optional Field Bit : False (csi-MeasConfig is NOT present)
.... .0.. Optional Field Bit : False (sCellDeactivationTimer is NOT present)
.... ..0. Optional Field Bit : False (crossCarrierSchedulingConfig is NOT present)
.... ...0 Optional Field Bit : False (dummy1 is NOT present)
0... .... Optional Field Bit : False (pathlossReferenceLinking is NOT present)
.0.. .... Optional Field Bit : False (servingCellMO is NOT present)
initialDownlinkBWP
..0. .... Extension Bit : False
...1 .... Optional Field Bit : True (pdcch-Config is present)
.... 1... Optional Field Bit : True (pdsch-Config is present)
.... .0.. Optional Field Bit : False (sps-Config is NOT present)
.... ..1. Optional Field Bit : True (radioLinkMonitoringConfig is present)
pdcch-Config : setup (1)
setup
0... .... Extension Bit : False
.1.. .... Optional Field Bit : True (controlResourceSetToAddModList is present)
..0. .... Optional Field Bit : False (controlResourceSetToReleaseList is NOT present)
...1 .... Optional Field Bit : True (searchSpacesToAddModList is present)
.... 0... Optional Field Bit : False (searchSpacesToReleaseList is NOT present)
.... .0.. Optional Field Bit : False (downlinkPreemption is NOT present)
.... ..0. Optional Field Bit : False (tpc-PUSCH is NOT present)
.... ...0 Optional Field Bit : False (tpc-PUCCH is NOT present)
0... .... Optional Field Bit : False (tpc-SRS is NOT present)
controlResourceSetToAddModList : 1 item
Item 0
ControlResourceSet
...0 .... Extension Bit : False
.... 0... Optional Field Bit : False (tci-StatesPDCCH-ToAddList is NOT present)
.... .0.. Optional Field Bit : False (tci-StatesPDCCH-ToReleaseList is NOT present)
.... ..0. Optional Field Bit : False (tci-PresentInDCI is NOT present)
.... ...0 Optional Field Bit : False (pdcch-DMRS-ScramblingID is NOT present)
controlResourceSetId : 1
frequencyDomainResources : f00000000000 [bit length 45, 3 LSB pad bits, 1111 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0... decimal value 32985348833280]
duration : 2
cce-REG-MappingType : nonInterleaved (1)
nonInterleaved : NULL
precoderGranularity : sameAsREG-bundle (0)
searchSpacesToAddModList : 1 item
Item 0
SearchSpace
.1.. .... Optional Field Bit : True (controlResourceSetId is present)
..1. .... Optional Field Bit : True (monitoringSlotPeriodicityAndOffset is present)
...0 .... Optional Field Bit : False (duration is NOT present)
.... 1... Optional Field Bit : True (monitoringSymbolsWithinSlot is present)
.... .1.. Optional Field Bit : True (nrofCandidates is present)
.... ..1. Optional Field Bit : True (searchSpaceType is present)
searchSpaceId : 2
controlResourceSetId : 1
monitoringSlotPeriodicityAndOffset : sl1 (0)
sl1 : NULL
monitoringSymbolsWithinSlot : 8000 [bit length 14, 2 LSB pad bits, 1000 0000 0000 00.. decimal value 8192]
nrofCandidates
aggregationLevel1 : n0 (0)
aggregationLevel2 : n4 (4)
aggregationLevel4 : n2 (2)
aggregationLevel8 : n1 (1)
aggregationLevel16 : n0 (0)
searchSpaceType : ue-Specific (1)
ue-Specific
...0 .... Extension Bit : False
dci-Formats : formats0-1-And-1-1 (1)
pdsch-Config : setup (1)
setup
.... ..0. Extension Bit : False
.... ...1 Optional Field Bit : True (dataScramblingIdentityPDSCH is present)
1... .... Optional Field Bit : True (dmrs-DownlinkForPDSCH-MappingTypeA is present)
.0.. .... Optional Field Bit : False (dmrs-DownlinkForPDSCH-MappingTypeB is NOT present)
..1. .... Optional Field Bit : True (tci-StatesToAddModList is present)
...0 .... Optional Field Bit : False (tci-StatesToReleaseList is NOT present)
.... 0... Optional Field Bit : False (vrb-ToPRB-Interleaver is NOT present)
.... .0.. Optional Field Bit : False (pdsch-TimeDomainAllocationList is NOT present)
.... ..0. Optional Field Bit : False (pdsch-AggregationFactor is NOT present)
.... ...0 Optional Field Bit : False (rateMatchPatternToAddModList is NOT present)
0... .... Optional Field Bit : False (rateMatchPatternToReleaseList is NOT present)
.0.. .... Optional Field Bit : False (rateMatchPatternGroup1 is NOT present)
..0. .... Optional Field Bit : False (rateMatchPatternGroup2 is NOT present)
...0 .... Optional Field Bit : False (mcs-Table is NOT present)
.... 0... Optional Field Bit : False (maxNrofCodeWordsScheduledByDCI is NOT present)
.... .0.. Optional Field Bit : False (zp-CSI-RS-ResourceToAddModList is NOT present)
.... ..0. Optional Field Bit : False (zp-CSI-RS-ResourceToReleaseList is NOT present)
.... ...0 Optional Field Bit : False (aperiodic-ZP-CSI-RS-ResourceSetsToAddModList is NOT present)
0... .... Optional Field Bit : False (aperiodic-ZP-CSI-RS-ResourceSetsToReleaseList is NOT present)
.0.. .... Optional Field Bit : False (sp-ZP-CSI-RS-ResourceSetsToAddModList is NOT present)
..0. .... Optional Field Bit : False (sp-ZP-CSI-RS-ResourceSetsToReleaseList is NOT present)
...0 .... Optional Field Bit : False (p-ZP-CSI-RS-ResourceSet is NOT present)
dataScramblingIdentityPDSCH : 0
dmrs-DownlinkForPDSCH-MappingTypeA : setup (1)
setup
.... ...0 Extension Bit : False
0... .... Optional Field Bit : False (dmrs-Type is NOT present)
.1.. .... Optional Field Bit : True (dmrs-AdditionalPosition is present)
..0. .... Optional Field Bit : False (maxLength is NOT present)
...0 .... Optional Field Bit : False (scramblingID0 is NOT present)
.... 0... Optional Field Bit : False (scramblingID1 is NOT present)
.... .0.. Optional Field Bit : False (phaseTrackingRS is NOT present)
dmrs-AdditionalPosition : pos1 (1)
tci-StatesToAddModList : 1 item
Item 0
TCI-State
.... ...0 Extension Bit : False
0... .... Optional Field Bit : False (qcl-Type2 is NOT present)
tci-StateId : 0
qcl-Type1
0... .... Extension Bit : False
.0.. .... Optional Field Bit : False (cell is NOT present)
..0. .... Optional Field Bit : False (bwp-Id is NOT present)
referenceSignal : ssb (1)
ssb : 1
qcl-Type : typeD (3)
resourceAllocation : resourceAllocationType1 (1)
rbg-Size : config1 (0)
prb-BundlingType : staticBundling (0)
staticBundling
1... .... Optional Field Bit : True (bundleSize is present)
bundleSize : wideband (1)
radioLinkMonitoringConfig : setup (1)
setup
...0 .... Extension Bit : False
.... 1... Optional Field Bit : True (failureDetectionResourcesToAddModList is present)
.... .0.. Optional Field Bit : False (failureDetectionResourcesToReleaseList is NOT present)
.... ..0. Optional Field Bit : False (beamFailureInstanceMaxCount is NOT present)
.... ...0 Optional Field Bit : False (beamFailureDetectionTimer is NOT present)
failureDetectionResourcesToAddModList : 1 item
Item 0
RadioLinkMonitoringRS
.... 0... Extension Bit : False
radioLinkMonitoringRS-Id : 0
purpose : rlf (1)
detectionResource : ssb-Index (0)
ssb-Index : 1
firstActiveDownlinkBWP-Id : 0
defaultDownlinkBWP-Id : 0
uplinkConfig
0... .... Extension Bit : False
.1.. .... Optional Field Bit : True (initialUplinkBWP is present)
..0. .... Optional Field Bit : False (uplinkBWP-ToReleaseList is NOT present)
...0 .... Optional Field Bit : False (uplinkBWP-ToAddModList is NOT present)
.... 1... Optional Field Bit : True (firstActiveUplinkBWP-Id is present)
.... .1.. Optional Field Bit : True (pusch-ServingCellConfig is present)
.... ..0. Optional Field Bit : False (carrierSwitching is NOT present)
initialUplinkBWP
.... ...0 Extension Bit : False
1... .... Optional Field Bit : True (pucch-Config is present)
.1.. .... Optional Field Bit : True (pusch-Config is present)
..0. .... Optional Field Bit : False (configuredGrantConfig is NOT present)
...1 .... Optional Field Bit : True (srs-Config is present)
.... 0... Optional Field Bit : False (beamFailureRecoveryConfig is NOT present)
pucch-Config : setup (1)
setup
.... ..0. Extension Bit : False
.... ...1 Optional Field Bit : True (resourceSetToAddModList is present)
0... .... Optional Field Bit : False (resourceSetToReleaseList is NOT present)
.1.. .... Optional Field Bit : True (resourceToAddModList is present)
..0. .... Optional Field Bit : False (resourceToReleaseList is NOT present)
...1 .... Optional Field Bit : True (format1 is present)
.... 1... Optional Field Bit : True (format2 is present)
.... .1.. Optional Field Bit : True (format3 is present)
.... ..0. Optional Field Bit : False (format4 is NOT present)
.... ...1 Optional Field Bit : True (schedulingRequestResourceToAddModList is present)
0... .... Optional Field Bit : False (schedulingRequestResourceToReleaseList is NOT present)
.0.. .... Optional Field Bit : False (multi-CSI-PUCCH-ResourceList is NOT present)
..1. .... Optional Field Bit : True (dl-DataToUL-ACK is present)
...0 .... Optional Field Bit : False (spatialRelationInfoToAddModList is NOT present)
.... 0... Optional Field Bit : False (spatialRelationInfoToReleaseList is NOT present)
.... .1.. Optional Field Bit : True (pucch-PowerControl is present)
resourceSetToAddModList : 2 items
Item 0
PUCCH-ResourceSet
0... .... Optional Field Bit : False (maxPayloadSize is NOT present)
pucch-ResourceSetId : 0
resourceList : 8 items
Item 0
PUCCH-ResourceId : 0
Item 1
PUCCH-ResourceId : 1
Item 2
PUCCH-ResourceId : 2
Item 3
PUCCH-ResourceId : 3
Item 4
PUCCH-ResourceId : 4
Item 5
PUCCH-ResourceId : 5
Item 6
PUCCH-ResourceId : 6
Item 7
PUCCH-ResourceId : 7
Item 1
PUCCH-ResourceSet
0... .... Optional Field Bit : False (maxPayloadSize is NOT present)
pucch-ResourceSetId : 1
resourceList : 8 items
Item 0
PUCCH-ResourceId : 8
Item 1
PUCCH-ResourceId : 9
Item 2
PUCCH-ResourceId : 10
Item 3
PUCCH-ResourceId : 11
Item 4
PUCCH-ResourceId : 12
Item 5
PUCCH-ResourceId : 13
Item 6
PUCCH-ResourceId : 14
Item 7
PUCCH-ResourceId : 15
resourceToAddModList : 16 items
Item 0
PUCCH-Resource
.... ...1 Optional Field Bit : True (intraSlotFrequencyHopping is present)
1... .... Optional Field Bit : True (secondHopPRB is present)
pucch-ResourceId : 0
startingPRB : 0
intraSlotFrequencyHopping : enabled (0)
secondHopPRB : 24
format : format0 (0)
format0
initialCyclicShift : 0
nrofSymbols : 2
startingSymbolIndex : 0
Item 1
PUCCH-Resource
.... ..1. Optional Field Bit : True (intraSlotFrequencyHopping is present)
.... ...1 Optional Field Bit : True (secondHopPRB is present)
pucch-ResourceId : 1
startingPRB : 0
intraSlotFrequencyHopping : enabled (0)
secondHopPRB : 24
format : format0 (0)
format0
initialCyclicShift : 0
nrofSymbols : 2
startingSymbolIndex : 2
Item 2
PUCCH-Resource
.... .1.. Optional Field Bit : True (intraSlotFrequencyHopping is present)
.... ..1. Optional Field Bit : True (secondHopPRB is present)
pucch-ResourceId : 2
startingPRB : 0
intraSlotFrequencyHopping : enabled (0)
secondHopPRB : 24
format : format0 (0)
format0
initialCyclicShift : 0
nrofSymbols : 2
startingSymbolIndex : 4
Item 3
PUCCH-Resource
.... 1... Optional Field Bit : True (intraSlotFrequencyHopping is present)
.... .1.. Optional Field Bit : True (secondHopPRB is present)
pucch-ResourceId : 3
startingPRB : 0
intraSlotFrequencyHopping : enabled (0)
secondHopPRB : 24
format : format0 (0)
format0
initialCyclicShift : 0
nrofSymbols : 2
startingSymbolIndex : 6
Item 4
PUCCH-Resource
...1 .... Optional Field Bit : True (intraSlotFrequencyHopping is present)
.... 1... Optional Field Bit : True (secondHopPRB is present)
pucch-ResourceId : 4
startingPRB : 0
intraSlotFrequencyHopping : enabled (0)
secondHopPRB : 24
format : format0 (0)
format0
initialCyclicShift : 0
nrofSymbols : 2
startingSymbolIndex : 8
Item 5
PUCCH-Resource
..1. .... Optional Field Bit : True (intraSlotFrequencyHopping is present)
...1 .... Optional Field Bit : True (secondHopPRB is present)
pucch-ResourceId : 5
startingPRB : 0
intraSlotFrequencyHopping : enabled (0)
secondHopPRB : 24
format : format0 (0)
format0
initialCyclicShift : 0
nrofSymbols : 2
startingSymbolIndex : 10
Item 6
PUCCH-Resource
.1.. .... Optional Field Bit : True (intraSlotFrequencyHopping is present)
..1. .... Optional Field Bit : True (secondHopPRB is present)
pucch-ResourceId : 6
startingPRB : 0
intraSlotFrequencyHopping : enabled (0)
secondHopPRB : 24
format : format0 (0)
format0
initialCyclicShift : 0
nrofSymbols : 2
startingSymbolIndex : 12
Item 7
PUCCH-Resource
1... .... Optional Field Bit : True (intraSlotFrequencyHopping is present)
.1.. .... Optional Field Bit : True (secondHopPRB is present)
pucch-ResourceId : 7
startingPRB : 0
intraSlotFrequencyHopping : enabled (0)
secondHopPRB : 24
format : format1 (1)
format1
initialCyclicShift : 0
nrofSymbols : 14
startingSymbolIndex : 0
timeDomainOCC : 0
Item 8
PUCCH-Resource
.... .1.. Optional Field Bit : True (intraSlotFrequencyHopping is present)
.... ..1. Optional Field Bit : True (secondHopPRB is present)
pucch-ResourceId : 8
startingPRB : 0
intraSlotFrequencyHopping : enabled (0)
secondHopPRB : 19
format : format2 (2)
format2
nrofPRBs : 6
nrofSymbols : 2
startingSymbolIndex : 0
Item 9
PUCCH-Resource
.... 1... Optional Field Bit : True (intraSlotFrequencyHopping is present)
.... .1.. Optional Field Bit : True (secondHopPRB is present)
pucch-ResourceId : 9
startingPRB : 0
intraSlotFrequencyHopping : enabled (0)
secondHopPRB : 19
format : format2 (2)
format2
nrofPRBs : 6
nrofSymbols : 2
startingSymbolIndex : 2
Item 10
PUCCH-Resource
...1 .... Optional Field Bit : True (intraSlotFrequencyHopping is present)
.... 1... Optional Field Bit : True (secondHopPRB is present)
pucch-ResourceId : 10
startingPRB : 0
intraSlotFrequencyHopping : enabled (0)
secondHopPRB : 19
format : format2 (2)
format2
nrofPRBs : 6
nrofSymbols : 2
startingSymbolIndex : 4
Item 11
PUCCH-Resource
..1. .... Optional Field Bit : True (intraSlotFrequencyHopping is present)
...1 .... Optional Field Bit : True (secondHopPRB is present)
pucch-ResourceId : 11
startingPRB : 0
intraSlotFrequencyHopping : enabled (0)
secondHopPRB : 19
format : format2 (2)
format2
nrofPRBs : 6
nrofSymbols : 2
startingSymbolIndex : 6
Item 12
PUCCH-Resource
.1.. .... Optional Field Bit : True (intraSlotFrequencyHopping is present)
..1. .... Optional Field Bit : True (secondHopPRB is present)
pucch-ResourceId : 12
startingPRB : 0
intraSlotFrequencyHopping : enabled (0)
secondHopPRB : 19
format : format2 (2)
format2
nrofPRBs : 6
nrofSymbols : 2
startingSymbolIndex : 8
Item 13
PUCCH-Resource
1... .... Optional Field Bit : True (intraSlotFrequencyHopping is present)
.1.. .... Optional Field Bit : True (secondHopPRB is present)
pucch-ResourceId : 13
startingPRB : 0
intraSlotFrequencyHopping : enabled (0)
secondHopPRB : 19
format : format2 (2)
format2
nrofPRBs : 6
nrofSymbols : 2
startingSymbolIndex : 10
Item 14
PUCCH-Resource
.... ...1 Optional Field Bit : True (intraSlotFrequencyHopping is present)
1... .... Optional Field Bit : True (secondHopPRB is present)
pucch-ResourceId : 14
startingPRB : 0
intraSlotFrequencyHopping : enabled (0)
secondHopPRB : 19
format : format2 (2)
format2
nrofPRBs : 6
nrofSymbols : 2
startingSymbolIndex : 12
Item 15
PUCCH-Resource
.... ..1. Optional Field Bit : True (intraSlotFrequencyHopping is present)
.... ...1 Optional Field Bit : True (secondHopPRB is present)
pucch-ResourceId : 15
startingPRB : 0
intraSlotFrequencyHopping : enabled (0)
secondHopPRB : 24
format : format3 (3)
format3
nrofPRBs : 1
nrofSymbols : 14
startingSymbolIndex : 0
format1 : setup (1)
setup
.1.. .... Optional Field Bit : True (interslotFrequencyHopping is present)
..0. .... Optional Field Bit : False (additionalDMRS is NOT present)
...0 .... Optional Field Bit : False (maxCodeRate is NOT present)
.... 0... Optional Field Bit : False (nrofSlots is NOT present)
.... .0.. Optional Field Bit : False (pi2BPSK is NOT present)
.... ..0. Optional Field Bit : False (simultaneousHARQ-ACK-CSI is NOT present)
interslotFrequencyHopping : enabled (0)
format2 : setup (1)
setup
0... .... Optional Field Bit : False (interslotFrequencyHopping is NOT present)
.0.. .... Optional Field Bit : False (additionalDMRS is NOT present)
..1. .... Optional Field Bit : True (maxCodeRate is present)
...0 .... Optional Field Bit : False (nrofSlots is NOT present)
.... 0... Optional Field Bit : False (pi2BPSK is NOT present)
.... .1.. Optional Field Bit : True (simultaneousHARQ-ACK-CSI is present)
maxCodeRate : zeroDot25 (2)
simultaneousHARQ-ACK-CSI : true (0)
format3 : setup (1)
setup
..1. .... Optional Field Bit : True (interslotFrequencyHopping is present)
...1 .... Optional Field Bit : True (additionalDMRS is present)
.... 1... Optional Field Bit : True (maxCodeRate is present)
.... .0.. Optional Field Bit : False (nrofSlots is NOT present)
.... ..0. Optional Field Bit : False (pi2BPSK is NOT present)
.... ...1 Optional Field Bit : True (simultaneousHARQ-ACK-CSI is present)
interslotFrequencyHopping : enabled (0)
additionalDMRS : true (0)
maxCodeRate : zeroDot25 (2)
simultaneousHARQ-ACK-CSI : true (0)
schedulingRequestResourceToAddModList : 1 item
Item 0
NR Radio Resource Control (RRC) protocol
SchedulingRequestResourceConfig
.... ..1. Optional Field Bit : True (periodicityAndOffset is present)
.... ...1 Optional Field Bit : True (resource is present)
schedulingRequestResourceId : 1
schedulingRequestID : 0
periodicityAndOffset : sl10 (7)
sl10 : 9
resource : 6
dl-DataToUL-ACK : 8 items
Item 0
dl-DataToUL-ACK item : 2
Item 1
dl-DataToUL-ACK item : 3
Item 2
dl-DataToUL-ACK item : 4
Item 3
dl-DataToUL-ACK item : 5
Item 4
dl-DataToUL-ACK item : 6
Item 5
dl-DataToUL-ACK item : 7
Item 6
dl-DataToUL-ACK item : 8
Item 7
dl-DataToUL-ACK item : 9
pucch-PowerControl
0... .... Extension Bit : False
.1.. .... Optional Field Bit : True (deltaF-PUCCH-f0 is present)
..1. .... Optional Field Bit : True (deltaF-PUCCH-f1 is present)
...1 .... Optional Field Bit : True (deltaF-PUCCH-f2 is present)
.... 1... Optional Field Bit : True (deltaF-PUCCH-f3 is present)
.... .1.. Optional Field Bit : True (deltaF-PUCCH-f4 is present)
.... ..0. Optional Field Bit : False (p0-Set is NOT present)
.... ...1 Optional Field Bit : True (pathlossReferenceRSs is present)
0... .... Optional Field Bit : False (twoPUCCH-PC-AdjustmentStates is NOT present)
deltaF-PUCCH-f0 : 0 dB
deltaF-PUCCH-f1 : 0 dB
deltaF-PUCCH-f2 : 0 dB
deltaF-PUCCH-f3 : 0 dB
deltaF-PUCCH-f4 : 0 dB
pathlossReferenceRSs : 1 item
Item 0
PUCCH-PathlossReferenceRS
pucch-PathlossReferenceRS-Id : 0
referenceSignal : ssb-Index (0)
ssb-Index : 1
pusch-Config : setup (1)
setup
.... ..0. Extension Bit : False
.... ...0 Optional Field Bit : False (dataScramblingIdentityPUSCH is NOT present)
1... .... Optional Field Bit : True (txConfig is present)
.1.. .... Optional Field Bit : True (dmrs-UplinkForPUSCH-MappingTypeA is present)
..0. .... Optional Field Bit : False (dmrs-UplinkForPUSCH-MappingTypeB is NOT present)
...1 .... Optional Field Bit : True (pusch-PowerControl is present)
.... 0... Optional Field Bit : False (frequencyHopping is NOT present)
.... .0.. Optional Field Bit : False (frequencyHoppingOffsetLists is NOT present)
.... ..0. Optional Field Bit : False (pusch-TimeDomainAllocationList is NOT present)
.... ...0 Optional Field Bit : False (pusch-AggregationFactor is NOT present)
0... .... Optional Field Bit : False (mcs-Table is NOT present)
.0.. .... Optional Field Bit : False (mcs-TableTransformPrecoder is NOT present)
..0. .... Optional Field Bit : False (transformPrecoder is NOT present)
...1 .... Optional Field Bit : True (codebookSubset is present)
.... 1... Optional Field Bit : True (maxRank is present)
.... .0.. Optional Field Bit : False (rbg-Size is NOT present)
.... ..1. Optional Field Bit : True (uci-OnPUSCH is present)
.... ...0 Optional Field Bit : False (tp-pi2BPSK is NOT present)
txConfig : codebook (0)
dmrs-UplinkForPUSCH-MappingTypeA : setup (1)
setup
..0. .... Extension Bit : False
...0 .... Optional Field Bit : False (dmrs-Type is NOT present)
.... 1... Optional Field Bit : True (dmrs-AdditionalPosition is present)
.... .0.. Optional Field Bit : False (phaseTrackingRS is NOT present)
.... ..0. Optional Field Bit : False (maxLength is NOT present)
.... ...1 Optional Field Bit : True (transformPrecodingDisabled is present)
0... .... Optional Field Bit : False (transformPrecodingEnabled is NOT present)
dmrs-AdditionalPosition : pos1 (1)
transformPrecodingDisabled
...0 .... Extension Bit : False
.... 0... Optional Field Bit : False (scramblingID0 is NOT present)
.... .0.. Optional Field Bit : False (scramblingID1 is NOT present)
pusch-PowerControl
.... ..0. Optional Field Bit : False (tpc-Accumulation is NOT present)
.... ...1 Optional Field Bit : True (msg3-Alpha is present)
1... .... Optional Field Bit : True (p0-NominalWithoutGrant is present)
.1.. .... Optional Field Bit : True (p0-AlphaSets is present)
..1. .... Optional Field Bit : True (pathlossReferenceRSToAddModList is present)
...0 .... Optional Field Bit : False (pathlossReferenceRSToReleaseList is NOT present)
.... 0... Optional Field Bit : False (twoPUSCH-PC-AdjustmentStates is NOT present)
.... .0.. Optional Field Bit : False (deltaMCS is NOT present)
.... ..1. Optional Field Bit : True (sri-PUSCH-MappingToAddModList is present)
.... ...0 Optional Field Bit : False (sri-PUSCH-MappingToReleaseList is NOT present)
msg3-Alpha : alpha08 (5)
p0-NominalWithoutGrant : -90 dBm
p0-AlphaSets : 1 item
Item 0
P0-PUSCH-AlphaSet
1... .... Optional Field Bit : True (p0 is present)
.1.. .... Optional Field Bit : True (alpha is present)
p0-PUSCH-AlphaSetId : 0
p0 : 0 dB
alpha : alpha08 (5)
pathlossReferenceRSToAddModList : 1 item
Item 0
PUSCH-PathlossReferenceRS
pusch-PathlossReferenceRS-Id : 0
referenceSignal : ssb-Index (0)
ssb-Index : 1
sri-PUSCH-MappingToAddModList : 1 item
Item 0
SRI-PUSCH-PowerControl
sri-PUSCH-PowerControlId : 0
sri-PUSCH-PathlossReferenceRS-Id : 0
sri-P0-PUSCH-AlphaSetId : 0
sri-PUSCH-ClosedLoopIndex : i0 (0)
resourceAllocation : resourceAllocationType1 (1)
codebookSubset : nonCoherent (2)
maxRank : 1
uci-OnPUSCH : setup (1)
setup
.1.. .... Optional Field Bit : True (betaOffsets is present)
betaOffsets : semiStatic (1)
semiStatic
...1 .... Optional Field Bit : True (betaOffsetACK-Index1 is present)
.... 1... Optional Field Bit : True (betaOffsetACK-Index2 is present)
.... .1.. Optional Field Bit : True (betaOffsetACK-Index3 is present)
.... ..1. Optional Field Bit : True (betaOffsetCSI-Part1-Index1 is present)
.... ...1 Optional Field Bit : True (betaOffsetCSI-Part1-Index2 is present)
1... .... Optional Field Bit : True (betaOffsetCSI-Part2-Index1 is present)
.1.. .... Optional Field Bit : True (betaOffsetCSI-Part2-Index2 is present)
betaOffsetACK-Index1 : 9
betaOffsetACK-Index2 : 9
betaOffsetACK-Index3 : 9
betaOffsetCSI-Part1-Index1 : 6
betaOffsetCSI-Part1-Index2 : 6
betaOffsetCSI-Part2-Index1 : 6
betaOffsetCSI-Part2-Index2 : 6
scaling : f1 (3)
srs-Config : setup (1)
setup
0... .... Extension Bit : False
.0.. .... Optional Field Bit : False (srs-ResourceSetToReleaseList is NOT present)
..1. .... Optional Field Bit : True (srs-ResourceSetToAddModList is present)
...0 .... Optional Field Bit : False (srs-ResourceToReleaseList is NOT present)
.... 1... Optional Field Bit : True (srs-ResourceToAddModList is present)
.... .0.. Optional Field Bit : False (tpc-Accumulation is NOT present)
srs-ResourceSetToAddModList : 1 item
Item 0
SRS-ResourceSet
..0. .... Extension Bit : False
...1 .... Optional Field Bit : True (srs-ResourceIdList is present)
.... 1... Optional Field Bit : True (alpha is present)
.... .1.. Optional Field Bit : True (p0 is present)
.... ..1. Optional Field Bit : True (pathlossReferenceRS is present)
.... ...0 Optional Field Bit : False (srs-PowerControlAdjustmentStates is NOT present)
srs-ResourceSetId : 0
srs-ResourceIdList : 1 item
Item 0
SRS-ResourceId : 0
resourceType : aperiodic (0)
aperiodic
0... .... Extension Bit : False
.0.. .... Optional Field Bit : False (csi-RS is NOT present)
..1. .... Optional Field Bit : True (slotOffset is present)
aperiodicSRS-ResourceTrigger : 1
slotOffset : 7
usage : codebook (1)
alpha : alpha0 (0)
p0 : 0 dBm
pathlossReferenceRS : ssb-Index (0)
ssb-Index : 1
srs-ResourceToAddModList : 1 item
Item 0
SRS-Resource
.... 0... Extension Bit : False
.... .0.. Optional Field Bit : False (ptrs-PortIndex is NOT present)
.... ..1. Optional Field Bit : True (spatialRelationInfo is present)
srs-ResourceId : 0
nrofSRS-Ports : port1 (0)
transmissionComb : n2 (0)
n2
combOffset-n2 : 0
cyclicShift-n2 : 0
resourceMapping
startPosition : 0
nrofSymbols : n1 (0)
repetitionFactor : n1 (0)
freqDomainPosition : 0
freqDomainShift : 0
freqHopping
c-SRS : 0
b-SRS : 0
b-hop : 0
groupOrSequenceHopping : groupHopping (1)
resourceType : aperiodic (0)
aperiodic
.0.. .... Extension Bit : False
sequenceId : 0
spatialRelationInfo
.... 0... Optional Field Bit : False (servingCellId is NOT present)
referenceSignal : ssb-Index (0)
ssb-Index : 1
firstActiveUplinkBWP-Id : 0
pusch-ServingCellConfig : setup (1)
setup
.0.. .... Extension Bit : False
..0. .... Optional Field Bit : False (codeBlockGroupTransmission is NOT present)
...0 .... Optional Field Bit : False (rateMatching is NOT present)
.... 0... Optional Field Bit : False (xOverhead is NOT present)
pdcch-ServingCellConfig : setup (1)
setup
.... ..0. Extension Bit : False
.... ...0 Optional Field Bit : False (slotFormatIndicator is NOT present)
pdsch-ServingCellConfig : setup (1)
setup
.0.. .... Extension Bit : False
..0. .... Optional Field Bit : False (codeBlockGroupTransmission is NOT present)
...0 .... Optional Field Bit : False (xOverhead is NOT present)
.... 0... Optional Field Bit : False (nrofHARQ-ProcessesForPDSCH is NOT present)
.... .0.. Optional Field Bit : False (pucch-Cell is NOT present)
tag-Id : 0
Subheader : (Padding 0 bytes)
00.. .... = Reserved : 0x00
..11 1111 = LCID : Padding (63)
..11 1111 = LCID : 0x3f
Rendered from a Wireshark PCAP by VisualEther.

Frame 3's full field tree — the RRC Setup that installs SRB 1, with the mac-nr node opened one level. Follow mac-nr -> nr-rrc -> DL-CCCH-Message -> rrcSetup. From there, -> radioBearerConfig holds the one-item SRB 1 bearer, and -> masterCellGroup -> CellGroupConfig holds the nested RLC, MAC and PHY configuration.

Frame 4 — the channel changes. 28.259 ms after Msg4, and this is now a UL-DCCH-Message on SRB 1. Two RRC-owned IEs do routing work: selectedPLMN-Identity: 1 says which broadcast PLMN the UE picked, and registeredAMF names the core node it was last registered with — amf-Identifier: fe0041, guami-Type: native — so the gNB can hand the payload to the right AMF rather than guessing. Frame 133 will solve the same problem a completely different way.

The payload itself is a dedicatedNAS-Message of 92 octets, and to RRC that is all it is: a length and some bytes. Opened, it is a Registration Request with Security header type: Integrity protected (1), message authentication code 0x97a0a3f4, NAS sequence number 6, 5GS registration type: initial registration (1), and a 5G-GUTI carrying 5G-TMSI: 0xc2345678. Keep that TMSI in mind; it comes back on the other side of a release.

Frames 7 to 15 — RRC as a courier. Six messages, and RRC's contribution to all of them is delivery. DLInformationTransfer and ULInformationTransfer exist for exactly one purpose: to move a NAS payload across the air on an existing bearer.

FrameRRC messageNAS containerNAS security header type
7DLInformationTransfer42 octetsPlain NAS message, not security protected (0)
9ULInformationTransfer28 octetsIntegrity protected (1)
11DLInformationTransfer18 octetsIntegrity protected with new 5GS security context (3)
12ULInformationTransfer74 octetsIntegrity protected and ciphered with new 5GS security context (4)
14DLInformationTransfer23 octetsIntegrity protected with new 5GS security context (3)
15ULInformationTransfer10 octetsIntegrity protected and ciphered with new 5GS security context (4)

Two RRC-level observations hide in that table.

The first is a field that is missing. Every DLInformationTransfer here carries rrc-TransactionIdentifier: 0; not one ULInformationTransfer carries the field at all. That is not the capture being lossy — TS 38.331 does not define it for the uplink message. Transaction identifiers belong to network-initiated procedures, and a UE pushing a NAS message upward is not answering an RRC command. All five uplink transfers in this session — frames 9, 12, 15, 31 and 36 — are missing it for the same reason.

The second is what happens at frame 12, when the security header type reaches 4, and the container's tail becomes Encrypted data. Nothing changed at the RRC layer. The core's own security context came up inside a payload RRC never inspects, and from here most NAS bodies in the capture are sealed. The radio layers are still completely in the clear. That split is the subject of the decryption companion; here it is enough to notice that RRC neither caused it nor noticed it.

Frames 17 and 18 — the one security procedure that belongs to RRC. The SecurityModeCommand is 81 bytes on the wire, and its whole payload beyond rrc-TransactionIdentifier: 0 is a securityConfigSMC holding cipheringAlgorithm: nea2 (2) and integrityProtAlgorithm: nia2 (2) — AES in counter mode for confidentiality, AES-CMAC for integrity.

Two absences matter as much as those two values. There is no key in this message, and there never is: both ends derive the Access-Stratum keys locally from a hierarchy that never crosses the air, which is precisely why the Wireshark issue had to publish the UE keys before this capture could be read at all. And there is no nas-Container, so this is a plain security activation rather than the key change that accompanies a handover.

Note the scope, too. This one message secures every radio bearer of the connection — including DRB 1, which does not exist yet and will not until frame 38.

The SecurityModeComplete comes back 10.220 ms later, and its entire content is rrc-TransactionIdentifier: 0. No IEs. Not even an echo of the algorithms it just accepted. The message body is empty because the confirmation is not in the body: it is in the integrity tag PDCP wraps around it. A wrong key gives a digest that will not verify, and the gNB learns everything it needs from that. An empty RRC message whose only real payload is proof of a shared secret.

For where ciphering actually begins — which is not quite where most people guess — see the PDCP companion; for the key hierarchy they descend from — K_gNB fanning out into four keys, of which the issue publishes two — the decryption companion.

Frame 20 — and it is a narrower question than it looks. The UECapabilityEnquiry asks for rat-Type: nr, and then does something worth copying: it attaches a capabilityRequestFilter, four octets, 80040040, which decodes to a frequencyBandListFilter with exactly one entry — bandNR: 5.

The gNB is not asking "what can you do?". It is asking "what can you do on NR band n5?". Ask an unfiltered question of a modern UE and the answer runs to many kilobytes. Even filtered, the answer here is the largest RRC message in the capture.

Frame 23 — the answer, and the reason the lower layers had to work. rrc-TransactionIdentifier: 0 matches the enquiry, and a single UE-CapabilityRAT-Container of 1656 octets holds everything else. Inside: accessStratumRelease: rel16, then per-layer blocks that read like a table of contents for this whole article series — pdcp-Parameters (ROHC profiles 0x0000, 0x0001 and 0x0002 supported, maxNumberROHC-ContextSessions: cs24, shortSN: supported), rlc-Parameters (am-WithShortSN, um-WithShortSN and um-WithLongSN all supported), mac-Parameters (longDRX-Cycle and shortDRX-Cycle supported), then the physical-layer parameters, the feature-set machinery, and — for a capture named after Minimization of Drive Tests — loggedMeasurements-r16: supported (0).

The frame itself is 691 bytes on the wire. A 1656-octet container did not fit in one transmission, so RLC cut it into pieces and reassembled it — and RRC never saw the split. It was handed one complete message. The RLC companion walks the same event from below, as a three-segment run.

Frames 30, 31 and 36 — back to couriering. Containers of 53, 10 and 92 octets, all now Security header type: Integrity protected and ciphered (2). Type 2 rather than type 4: the "new security context" marker is gone, so the NAS context established back at frames 11–15 is simply in use. Frame 36's container is 92 octets — the same size as the Registration Request the connection opened with — and the network's answer, two frames later, is the one RRC message on this timeline that builds a data bearer.

Frame 38 — the richest message in the capture

One RRCReconfiguration, rrc-TransactionIdentifier: 0, 235 bytes on the wire, and in those 235 bytes it configures four protocol layers, adds two bearers, and carries a sealed NAS message. Five sibling pages in this series point back at this frame; it lives here.

The bearers. radioBearerConfig carries an srb-ToAddModList naming srb-Identity: 2 — a second signaling bearer, again with no pdcp-Config, so defaults — and a drb-ToAddModList naming drb-Identity: 1, the capture's only data bearer.

What DRB 1 gets. Its cnAssociation is an sdap-Config: pdu-Session: 1, sdap-HeaderDL: absent (1), sdap-HeaderUL: present (0), defaultDRB: True, and a one-item mappedQoS-FlowsToAdd naming QFI: 2. Those two enumerated values are the entire reason every SDAP PDU in this capture is an uplink one — the SDAP companion is a page about a header that is absent, and this is where it was switched off. Its pdcp-Config sets discardTimer: infinity, pdcp-SN-SizeUL: len18bits, pdcp-SN-SizeDL: len18bits, headerCompression: notUsed, and statusReportRequired: true — and, worth noticing, carries no integrityProtection, so user-plane data on this bearer is ciphered but not integrity-protected.

The security restatement. securityConfig repeats cipheringAlgorithm: nea2 and integrityProtAlgorithm: nia2 and adds keyToUse: master. There is no masterKeyUpdate, so nothing is re-keyed: the new bearers are being told which existing key set they inherit.

The 18-octet masterCellGroup. Set that against frame 3's 209 octets and the encoding tells you something about the protocol: a cell-group configuration is a delta, not a replacement. mac-CellGroupConfig, physicalCellGroupConfig and spCellConfig are all absent here, so everything frame 3 established stays exactly as it was. What these 18 octets add is a two-item rlc-BearerToAddModList:

DRB 1SRB 2
logicalChannelIdentity42
servedRadioBearerdrb-Identity: 1srb-Identity: 2
rlc-Configam, signaled in fullabsent — defaults
priority13
logicalChannelGroup10

DRB 1's rlc-Config is the only RLC configuration signaled anywhere in this capture: ul-AM-RLC with sn-FieldLength: size18, t-PollRetransmit: ms80, pollPDU: p32768, pollByte: kB750, maxRetxThreshold: t8; dl-AM-RLC with sn-FieldLength: size18, t-Reassembly: ms80, t-StatusProhibit: ms30.

And a NAS message that stays shut. dedicatedNAS-MessageList holds one item of 122 octets — Security header type: Integrity protected and ciphered (2), message authentication code 0x9b072356, NAS sequence number 3, then Encrypted data. One frame in which the RRC decodes completely and the payload inside it does not. That is the capture's two-security-layer story compressed into a single packet, and it is the frame Wireshark work-item 19757 was filed about.

Expand the tree below and the nesting becomes concrete — nr-rrc inside pdcp-nr inside rlc-nr inside mac-nr, and then two more levels of nr-rrc inside itself where masterCellGroup and the NAS container unwrap:

⚙️ [00042] Frame 38 RRC Reconfiguration 2024-04-13T03:06:58.116758Z 📡 gNB 📱 UE
frame : Frame 38: Packet, 235 bytes on wire (1880 bits), 235 bytes captured (1880 bits)
Encapsulation type : Ethernet (1)
Arrival Time : Apr 12, 2024 20:06:58.116758000 Pacific Daylight Time
UTC Arrival Time : Apr 13, 2024 03:06:58.116758000 UTC
Epoch Arrival Time : 1712977618.116758000
Time shift for this packet : 0.000000000 seconds
Time delta from previous captured frame : 301.014000 milliseconds
Time delta from previous displayed frame : 301.014000 milliseconds
Time since reference or first frame : 2.325030000 seconds
Frame Number : 38
Frame Length : 235 bytes (1880 bits)
Capture Length : 235 bytes (1880 bits)
Frame is marked : False
Frame is ignored : False
Protocols in frame : eth:ethertype:ip:udp:mac-nr:rlc-nr:pdcp-nr:nr-rrc:nas-5gs
Character encoding : ASCII (0)
eth : Ethernet II, Src: 00:00:00:00:00:00, Dst: 00:00:00:00:00:00
Destination : 00:00:00:00:00:00
Destination (resolved) : 00:00:00:00:00:00
Destination OUI : 00:00:00 (Officially Xerox, but 0:0:0:0:0:0 is more common)
Destination OUI (resolved) : Officially Xerox, but 0:0:0:0:0:0 is more common
.... ..0. .... .... .... .... = LG bit : Globally unique address (factory default)
.... ...0 .... .... .... .... = IG bit : Individual address (unicast)
Address : 00:00:00:00:00:00
Address (resolved) : 00:00:00:00:00:00
Address OUI : 00:00:00 (Officially Xerox, but 0:0:0:0:0:0 is more common)
Address OUI (resolved) : Officially Xerox, but 0:0:0:0:0:0 is more common
.... ..0. .... .... .... .... = LG bit : Globally unique address (factory default)
.... ...0 .... .... .... .... = IG bit : Individual address (unicast)
Source : 00:00:00:00:00:00
Source (resolved) : 00:00:00:00:00:00
Source OUI : 00:00:00 (Officially Xerox, but 0:0:0:0:0:0 is more common)
Source OUI (resolved) : Officially Xerox, but 0:0:0:0:0:0 is more common
.... ..0. .... .... .... .... = LG bit : Globally unique address (factory default)
.... ...0 .... .... .... .... = IG bit : Individual address (unicast)
Address : 00:00:00:00:00:00
Address (resolved) : 00:00:00:00:00:00
Address OUI : 00:00:00 (Officially Xerox, but 0:0:0:0:0:0 is more common)
Address OUI (resolved) : Officially Xerox, but 0:0:0:0:0:0 is more common
.... ..0. .... .... .... .... = LG bit : Globally unique address (factory default)
.... ...0 .... .... .... .... = IG bit : Individual address (unicast)
Type : IPv4 (0x0800)
Stream index : 0
ip : Internet Protocol Version 4, Src: 127.0.0.1, Dst: 127.0.0.1
0100 .... = Version : 4
.... 0101 = Header Length : 20 bytes (5)
Differentiated Services Field : 0x00 (DSCP: CS0, ECN: Not-ECT)
0000 00.. = Differentiated Services Codepoint : Default (0)
.... ..00 = Explicit Congestion Notification : Not ECN-Capable Transport (0)
Total Length : 221
Identification : 0x0025 (37)
010. .... = Flags : 0x2, Don't fragment
0... .... = Reserved bit : Not set
.1.. .... = Don't fragment : Set
..0. .... = More fragments : Not set
...0 0000 0000 0000 = Fragment Offset : 0
Time to Live : 64
Protocol : UDP (17)
Header Checksum : 0xffff [validation disabled]
Header checksum status : Unverified
Source Address : 127.0.0.1
Source or Destination Address : 127.0.0.1
Source Host : 127.0.0.1
Source or Destination Host : 127.0.0.1
Destination Address : 127.0.0.1
Source or Destination Address : 127.0.0.1
Destination Host : 127.0.0.1
Source or Destination Host : 127.0.0.1
Stream index : 0
udp : User Datagram Protocol, Src Port: 13337, Dst Port: 0
Source Port : 13337
Destination Port : 0
Source or Destination Port : 13337
Source or Destination Port : 0
Length : 201
Checksum : 0xffff [unverified]
Checksum Status : Unverified
Stream index : 0
Stream Packet Number : 38
Timestamps
Time since first frame : 2.325030000 seconds
Time since previous frame : 301.014000 milliseconds
UDP payload (193 bytes)
mac-nr : MAC-NR DL-SCH (LCID:1 165 bytes) (Padding 0 bytes)
Context (RNTI=32768)
Radio Type : FDD (1)
Direction : Downlink (1)
RNTI : 0x8000 (32768)
RNTI Type : C-RNTI (3)
UEId : 1
System Frame Number : 421
Slot : 8
HarqId : 2
Subheader : (LCID:1 165 bytes)
0... .... = Reserved : 0x00
.0.. .... = Format : 8 bits
..00 0001 = LCID : 1 (1)
..00 0001 = LCID : 0x01
SDU Length : 165
DL-SCH SDU […] : c00600069714fb5e390b6c6caa8d2797fecedc8a24a8c153a18f8a9677267862ba21e50c33c5e2cfb90f0ede1c70ebabb200b46d31c14773e4d21249ec3a8318cdd9672ebf1c0fa020770c5eff7410692dfb8c05aea95af117216bc76099bbcb5e759766eb99f49cc6cc0525639f6
RLC-NR UEId=1 [DL] [AM] SRB:1 [DATA] (P) SN=6 [163-bytes]
Context
Direction : Downlink (1)
RLC Mode : Acknowledged Mode (4)
UEId : 1
Bearer Type : SRB (4)
Bearer Id : 1
PDU Length : 165
Sequence Number length : 12
AM
AM Header (P) SN=6
1... .... = Data/Control : Data PDU
.1.. .... = Polling Bit : Status report is requested
..00 .... = Segmentation Info : Data field contains all bytes of an RLC SDU (0x0)
.... 0000 0000 0110 = Sequence Number : 6
AM Data […] : 00069714fb5e390b6c6caa8d2797fecedc8a24a8c153a18f8a9677267862ba21e50c33c5e2cfb90f0ede1c70ebabb200b46d31c14773e4d21249ec3a8318cdd9672ebf1c0fa020770c5eff7410692dfb8c05aea95af117216bc76099bbcb5e759766eb99f49cc6cc0525639f61b5bcc5
PDCP-NR (SN=6 )
Configuration : UEId= 1 SRB-1 (direction=Downlink, plane=Signalling)
Direction : Downlink (1)
Plane : Signalling (1)
UE : 1
Bearer type : DCCH (1)
Bearer Id : 1
Seqnum length : 12
MAC-I Present : True
Ciphering disabled : False
UE Security (ciphering=NEA2 (AES), integrity=NIA2 (AES))
Configuration frame : 17
Ciphering Algorithm : NEA2 (AES) (2)
Integrity Algorithm : NIA2 (AES) (2)
BEARER : 0
DIRECTION : Downlink (1)
COUNT : 6
CIPHER KEY : 95F23667A60D91689B31772783E6FDDD
0000 .... = Reserved : 0
.... 0000 0000 0110 = Seq Num : 6
Sequence Analysis - OK
Previous frame for Bearer : 30
Expected SN : 6
OK : True
Deciphered Data […] : 008aa0409a01a00404ebf0d225009200158e019f23af019061e6409094197980001e9f80a6c1c8d580d5703c3a5f51ae0c26e268d126fb9b5a5a7ce3dab4fb0e5f74455d7b6809dcc5943aba2b496456dd4c682f856e82e338a368e2efee1d7454e13f8a50b13fb124e7f2b2
NR Radio Resource Control (RRC) protocol
DL-DCCH-Message
message : c1 (0)
c1 : rrcReconfiguration (0)
NR Radio Resource Control (RRC) protocol
rrcReconfiguration
rrc-TransactionIdentifier : 0
criticalExtensions : rrcReconfiguration (0)
rrcReconfiguration
1... .... Optional Field Bit : True (radioBearerConfig is present)
.0.. .... Optional Field Bit : False (secondaryCellGroup is NOT present)
..0. .... Optional Field Bit : False (measConfig is NOT present)
...0 .... Optional Field Bit : False (lateNonCriticalExtension is NOT present)
.... 1... Optional Field Bit : True (nonCriticalExtension is present)
NR Radio Resource Control (RRC) protocol
radioBearerConfig
.... .0.. Extension Bit : False
.... ..1. Optional Field Bit : True (srb-ToAddModList is present)
.... ...0 Optional Field Bit : False (srb3-ToRelease is NOT present)
1... .... Optional Field Bit : True (drb-ToAddModList is present)
.0.. .... Optional Field Bit : False (drb-ToReleaseList is NOT present)
..1. .... Optional Field Bit : True (securityConfig is present)
srb-ToAddModList : 1 item
Item 0
SRB-ToAddMod
.... 0... Extension Bit : False
.... .0.. Optional Field Bit : False (reestablishPDCP is NOT present)
.... ..0. Optional Field Bit : False (discardOnPDCP is NOT present)
.... ...0 Optional Field Bit : False (pdcp-Config is NOT present)
srb-Identity : 2
drb-ToAddModList : 1 item
Item 0
DRB-ToAddMod
.... ...0 Extension Bit : False
1... .... Optional Field Bit : True (cnAssociation is present)
.0.. .... Optional Field Bit : False (reestablishPDCP is NOT present)
..0. .... Optional Field Bit : False (recoverPDCP is NOT present)
...1 .... Optional Field Bit : True (pdcp-Config is present)
cnAssociation : sdap-Config (1)
sdap-Config
.... .0.. Extension Bit : False
.... ..1. Optional Field Bit : True (mappedQoS-FlowsToAdd is present)
.... ...0 Optional Field Bit : False (mappedQoS-FlowsToRelease is NOT present)
pdu-Session : 1
sdap-HeaderDL : absent (1)
sdap-HeaderUL : present (0)
..1. .... defaultDRB : True
mappedQoS-FlowsToAdd : 1 item
Item 0
QFI : 2
drb-Identity : 1
pdcp-Config
.... 0... Extension Bit : False
.... .1.. Optional Field Bit : True (drb is present)
.... ..0. Optional Field Bit : False (moreThanOneRLC is NOT present)
.... ...0 Optional Field Bit : False (t-Reordering is NOT present)
drb
1... .... Optional Field Bit : True (discardTimer is present)
.1.. .... Optional Field Bit : True (pdcp-SN-SizeUL is present)
..1. .... Optional Field Bit : True (pdcp-SN-SizeDL is present)
...0 .... Optional Field Bit : False (integrityProtection is NOT present)
.... 1... Optional Field Bit : True (statusReportRequired is present)
.... .0.. Optional Field Bit : False (outOfOrderDelivery is NOT present)
discardTimer : infinity (15)
pdcp-SN-SizeUL : len18bits (1)
pdcp-SN-SizeDL : len18bits (1)
.... 0... Extension Bit : False
headerCompression : notUsed (0)
notUsed : NULL
statusReportRequired : true (0)
securityConfig
.... ...0 Extension Bit : False
1... .... Optional Field Bit : True (securityAlgorithmConfig is present)
.1.. .... Optional Field Bit : True (keyToUse is present)
securityAlgorithmConfig
..0. .... Extension Bit : False
...1 .... Optional Field Bit : True (integrityProtAlgorithm is present)
.... 0... Extension Present Bit : False
cipheringAlgorithm : nea2 (2)
0... .... Extension Present Bit : False
integrityProtAlgorithm : nia2 (2)
keyToUse : master (0)
nonCriticalExtension
.... .1.. Optional Field Bit : True (masterCellGroup is present)
.... ..0. Optional Field Bit : False (fullConfig is NOT present)
.... ...1 Optional Field Bit : True (dedicatedNAS-MessageList is present)
0... .... Optional Field Bit : False (masterKeyUpdate is NOT present)
.0.. .... Optional Field Bit : False (dedicatedSIB1-Delivery is NOT present)
..0. .... Optional Field Bit : False (dedicatedSystemInformationDelivery is NOT present)
...0 .... Optional Field Bit : False (otherConfig is NOT present)
.... 0... Optional Field Bit : False (nonCriticalExtension is NOT present)
masterCellGroup : 4002b1c033e475e0320c3cc81212832f3000
NR Radio Resource Control (RRC) protocol
NR Radio Resource Control (RRC) protocol
CellGroupConfig
0... .... Extension Bit : False
.1.. .... Optional Field Bit : True (rlc-BearerToAddModList is present)
..0. .... Optional Field Bit : False (rlc-BearerToReleaseList is NOT present)
...0 .... Optional Field Bit : False (mac-CellGroupConfig is NOT present)
.... 0... Optional Field Bit : False (physicalCellGroupConfig is NOT present)
.... .0.. Optional Field Bit : False (spCellConfig is NOT present)
.... ..0. Optional Field Bit : False (sCellToAddModList is NOT present)
.... ...0 Optional Field Bit : False (sCellToReleaseList is NOT present)
cellGroupId : 0
rlc-BearerToAddModList : 2 items
Item 0
RLC-BearerConfig
.... ...0 Extension Bit : False
1... .... Optional Field Bit : True (servedRadioBearer is present)
.0.. .... Optional Field Bit : False (reestablishRLC is NOT present)
..1. .... Optional Field Bit : True (rlc-Config is present)
...1 .... Optional Field Bit : True (mac-LogicalChannelConfig is present)
logicalChannelIdentity : 4
servedRadioBearer : drb-Identity (1)
drb-Identity : 1
.... ...0 Extension Bit : False
rlc-Config : am (0)
am
ul-AM-RLC
..1. .... Optional Field Bit : True (sn-FieldLength is present)
sn-FieldLength : size18 (1)
t-PollRetransmit : ms80 (15)
pollPDU : p32768 (18)
pollByte : kB750 (14)
maxRetxThreshold : t8 (5)
dl-AM-RLC
1... .... Optional Field Bit : True (sn-FieldLength is present)
sn-FieldLength : size18 (1)
t-Reassembly : ms80 (16)
t-StatusProhibit : ms30 (6)
mac-LogicalChannelConfig
.... .0.. Extension Bit : False
.... ..1. Optional Field Bit : True (ul-SpecificParameters is present)
ul-SpecificParameters
.... ...0 Extension Bit : False
0... .... Optional Field Bit : False (allowedServingCells is NOT present)
.0.. .... Optional Field Bit : False (allowedSCS-List is NOT present)
..0. .... Optional Field Bit : False (maxPUSCH-Duration is NOT present)
...0 .... Optional Field Bit : False (configuredGrantType1Allowed is NOT present)
.... 1... Optional Field Bit : True (logicalChannelGroup is present)
.... .1.. Optional Field Bit : True (schedulingRequestID is present)
priority : 1
prioritisedBitRate : infinity (15)
bucketSizeDuration : ms50 (3)
logicalChannelGroup : 1
schedulingRequestID : 0
0... .... logicalChannelSR-Mask : False
.0.. .... logicalChannelSR-DelayTimerApplied : False
Item 1
RLC-BearerConfig
..0. .... Extension Bit : False
...1 .... Optional Field Bit : True (servedRadioBearer is present)
.... 0... Optional Field Bit : False (reestablishRLC is NOT present)
.... .0.. Optional Field Bit : False (rlc-Config is NOT present)
.... ..1. Optional Field Bit : True (mac-LogicalChannelConfig is present)
logicalChannelIdentity : 2
servedRadioBearer : srb-Identity (0)
srb-Identity : 2
mac-LogicalChannelConfig
.... ...0 Extension Bit : False
1... .... Optional Field Bit : True (ul-SpecificParameters is present)
ul-SpecificParameters
.0.. .... Extension Bit : False
..0. .... Optional Field Bit : False (allowedServingCells is NOT present)
...0 .... Optional Field Bit : False (allowedSCS-List is NOT present)
.... 0... Optional Field Bit : False (maxPUSCH-Duration is NOT present)
.... .0.. Optional Field Bit : False (configuredGrantType1Allowed is NOT present)
.... ..1. Optional Field Bit : True (logicalChannelGroup is present)
.... ...1 Optional Field Bit : True (schedulingRequestID is present)
priority : 3
prioritisedBitRate : infinity (15)
bucketSizeDuration : ms50 (3)
logicalChannelGroup : 0
schedulingRequestID : 0
..0. .... logicalChannelSR-Mask : False
...0 .... logicalChannelSR-DelayTimerApplied : False
dedicatedNAS-MessageList : 1 item
Item 0
DedicatedNAS-Message […] : 7e029b0723560355c0f0e97d46b8309b89a3449bee6d6969f38f6ad3ec397dd11575eda027731650eae8ad25915b7531a0be15ba0b8ce28da38bbfb875d15384fe2942c4fec4939fcaca325d3a94bd7e7ff20f7351fa4913327cf815a5524eb8fc404d3524a57ff1360
Non-Access-Stratum 5GS (NAS)PDU
Security protected NAS 5GS message
Extended protocol discriminator : 5G mobility management messages (126)
0000 .... = Spare Half Octet : 0
.... 0010 = Security header type : Integrity protected and ciphered (2)
Message authentication code : 0x9b072356
Sequence number : 3
Encrypted data
MAC : 0x3c518bcb
Subheader : (Padding 0 bytes)
00.. .... = Reserved : 0x00
..11 1111 = LCID : Padding (63)
..11 1111 = LCID : 0x3f
Rendered from a Wireshark PCAP by VisualEther.

Frame 38's full field tree — the RRC Reconfiguration that builds DRB 1, with the mac-nr node opened one level. Follow mac-nr -> rlc-nr -> pdcp-nr -> nr-rrc -> DL-DCCH-Message -> rrcReconfiguration. From there, -> radioBearerConfig has the SDAP and PDCP settings, and -> nonCriticalExtension holds both -> masterCellGroup (the nested CellGroupConfig that configures RLC and MAC) and -> dedicatedNAS-MessageList (which decodes only as far as its security header).

One last thing worth noting for what is not in frame 38: there is no measConfig and no secondaryCellGroup. No measurement reporting is ever configured in this trace, even though the UE advertised R16 logged-measurement support back at frame 23.

Frame 39 — Reconfiguration Complete, 18.216 ms later. Content: rrc-TransactionIdentifier: 0. Nothing else, for the same reason frame 18 was empty. DRB 1 is live.

And then RRC stops. Frames 40 to 127 contain no RRC message at all. The connection is at its busiest through that whole stretch — user data on DRB 1, RLC status reports, MAC grants, Buffer Status Reports — and the layer that built the road has nothing further to say. This is the normal steady state of a working RRC connection: silence.

Frame 128 — RRC Release, and it is as plain as an RRC Release gets. 79 bytes on the wire, rrc-TransactionIdentifier: 0, and every optional IE explicitly absent: no redirectedCarrierInfo, no cellReselectionPriorities, no deprioritisationReq, and — the one that decides the outcome — no suspendConfig.

That absence is the state transition. With a suspendConfig, the UE would move to RRC_INACTIVE, keeping its context for a cheap resume later. Without one, it goes to RRC_IDLE, and the whole Access-Stratum context is torn down: keys, both SRBs, DRB 1, every entity frames 3, 17 and 38 configured. When the UE comes back at frame 131, it comes back to nothing.

Frame 129 — the same release again, and RRC only sent it once. Identical content, 44.894 ms later. This is not a second RRCRelease; RLC retransmitted the PDU because its poll went unanswered. The RLC companion explains what that 44.894 ms actually measures.

The later connections

Frame 131 — a second connection on the same C-RNTI. 0x8000 is reused, which is why this shares a timeline with everything above, but the RRC connection is genuinely new: no keys, no bearers, nothing inherited. Same message type as frame 2, same 99 bytes on the wire — and both values inside it are different in kind. establishmentCause is mt-Access: the network reaching for the UE rather than the other way round. And ue-Identity takes the other branch of the CHOICE, ng-5G-S-TMSI-Part1, 838468acf0. That difference gets its own section below.

Frame 132 — the same RRC Setup, byte for byte. 0.711 ms after Msg3, against 0.708 ms on the first connection. Its masterCellGroup is 209 octets again, and it is identical to frame 3's: same SRB 1 bearer config, same BSR and PHR timers, same p-NR-FR1: 23 dBm, same t310 and t311 of ms1000. A fresh connection to the same cell gets the same starting configuration; nothing the first connection learned carries into the setup message.

Frame 133 — the second half of an identity. 28.257 ms after Msg4, against 28.259 ms the first time. selectedPLMN-Identity: 1, a 40-octet NAS container holding a Service Request with Service type: Mobile terminated services (2) and mobile identity 5G-S-TMSI carrying 5G-TMSI: 0xc2345678 — the same TMSI frame 4's 5G-GUTI held. And one field frame 4 did not have: ng-5G-S-TMSI-Value: ng-5G-S-TMSI-Part2, nine bits, 0000.

Two fields frame 4 did have are gone: no registeredAMF, no guami-Type. They are not needed, and the next section explains why.

Frames 136 and 137 — AS security, from scratch. cipheringAlgorithm: nea2, integrityProtAlgorithm: nia2 — the same algorithms frame 17 chose, but a genuinely new activation with a newly derived K_gNB, because frame 128 destroyed the previous context. The SecurityModeComplete returns 13.228 ms later, empty apart from rrc-TransactionIdentifier: 0, exactly as at frame 18. Every RRC connection secures itself independently; there is no inheriting radio keys across an idle period.

And then the diagram stops — but the conversation does not, and the distinction matters.

The session ends at frame 137 because the extractor's 30-second idle timer closed it there. The readable RRC ends there too, and for a different reason. Frames 139, 140, 142, 145 and 146 are all LCID 1 PDCP data PDUs on 0x8000 — five more RRC messages on this same connection — and every one of them is opaque. Frame 136 activated security with a freshly derived K_gNB, and the keys the Wireshark issue publishes cover the first connection only, so from frame 139 onward the dissector can report a Signalling Data blob and a length and nothing else.

That is not a gap in the trace; it is the same rule this page has been describing, seen from the other side. The PDCP companion builds its security-boundary argument on exactly these five frames: on a connection nobody holds a key for, the last two messages that stay readable are the two that bracket security activation — frames 136 and 137 — and the very next PDU goes dark.

Two things can still be read off the envelope of that dark stretch. There is no data bearer on it: every logical channel on it is LCID 1, so DRB 1 was never rebuilt on connection 2. And frames 145 and 146 carry byte-identical payloads with the RLC poll bit set, both at PDCP SN 3 — precisely the shape of frames 128 and 129. That is the signature of an RRCRelease and its poll-retransmit. On this connection, though, it is an inference from the envelope rather than a decode.

So the honest comparison with connection 1 is not "nothing follows" — it is that the capture stops being able to show you what follows. The capture's third connection then opens at frame 148 with establishmentCause: mt-Access again, and gets no further than its own Setup Complete before the file runs out.

The identity that arrives in two pieces

Put the two Setup Requests side by side. Same message type, same channel, same 99 bytes on the wire, same 39-bit identity field, and the same zero spare bit — and yet:

Connection 1 (frames 2, 4)Connection 2 (frames 131, 133)
establishmentCausemo-Signallingmt-Access
ue-Identity branchrandomValueng-5G-S-TMSI-Part1
Value (39 bits)b34056b184838468acf0
ng-5G-S-TMSI-Part2 in Msg5absentpresent, nine bits, 0000
registeredAMF in Msg5fe0041, guami-Type: nativeabsent
NAS message in Msg5Registration Request, initial registrationService Request, mobile terminated

The mechanism behind the second column is one of the neater pieces of engineering in TS 38.331, and this capture shows all of it.

A 5G-S-TMSI is 48 bits — an AMF Set ID, an AMF Pointer, and a 32-bit 5G-TMSI (TS 23.003). Msg3 is sent on the Common Control Channel, before any dedicated bearer exists, in a grant whose size is fixed by system information. There is no room for 48 bits of identity, so InitialUE-Identity gives ue-Identity only 39. RRC's answer is to split the identity across two messages: ng-5G-S-TMSI-Part1 carries 39 bits in Msg3, and ng-5G-S-TMSI-Part2 carries the remaining nine in the RRCSetupComplete — the first message with a dedicated bearer beneath it and room to spare.

Both halves are on this timeline, and the second one arrives with a bonus. A 5G-S-TMSI carries the AMF Set ID and the AMF Pointer, so once the gNB holds the whole thing it already knows a good deal about where the UE's NAS context lives — which is the engineering reason registeredAMF is an optional field rather than a mandatory one. Frame 133 leaves it out; frame 4, whose Msg3 named the UE with a random number that says nothing about any AMF, includes it along with guami-Type.

Be careful with the direction of that arrow, though. TS 38.331 conditions registeredAMF on the upper layers supplying a registered AMF — the same NAS-driven conditional that governs ue-Identity. So the honest reading is not that the TMSI caused the omission, but that one NAS decision plausibly drove both.

Which leaves the obvious question: the UE clearly had a 5G-S-TMSI at frame 2 — the very same 0xc2345678 appears in frame 4's 5G-GUTI. Why draw a random number?

Because the choice is not RRC's to make. TS 38.331 §5.3.3.3 says the UE uses ng-5G-S-TMSI-Part1 when the upper layers provide a 5G-S-TMSI for this connection establishment, and a freshly drawn 39-bit random value otherwise. Frame 4's NAS body says the first connection was opened for an initial registration; frame 133's says the second was opened for a mobile-terminated Service request. The wire shows NAS handing an identity down on the second and not on the first, and the spec says that decision belongs to NAS. Same UE, same TMSI in memory, two different identification strategies — chosen one layer above the one you are watching.

There is a diagnostic habit in this. When you open a 5G radio trace at the very first uplink message, before anything is decipherable and before any bearer exists, the ue-Identity branch and the establishmentCause are already there, in the clear, in the first handful of bytes. randomValue plus mo-Signalling says a UE is starting a registration and the network does not yet know who it is. ng-5G-S-TMSI-Part1 plus mt-Access says a known subscriber is being paged back. You know the shape of the next thirty frames before you have read one of them.

Takeaways

  1. RRC spends much of its time as a courier. Both InformationTransfer message types exist for nothing but ferrying a dedicatedNAS-Message across the air, and both RRCSetupCompletes and frame 38 carry one too. To RRC, each one is a length and some bytes — which is why the NAS bodies going dark at frame 12 changed nothing at the RRC layer.
  2. Absent fields carry as much meaning as present ones. No suspendConfig at frame 128 is the difference between RRC_IDLE and RRC_INACTIVE. No rlc-Config at frame 3 is what makes SRB 1 run a spec default. No integrityProtection at frame 38 is why user data is ciphered but unauthenticated. In an ASN.1 protocol, read the presence bits.
  3. Configuration is a delta, not a snapshot. Frame 3's masterCellGroup is 209 octets; frame 38's is 18, and everything it does not mention stays as it was. Never reconstruct a UE's configuration from the last reconfiguration alone.
  4. One frame can configure four layers at once. Frame 38's 235 bytes set SDAP's header switches, PDCP's sequence-number size, RLC's timers and MAC's logical-channel priorities in a single message — and then hand over a sealed NAS payload for good measure.
  5. Every RRC connection secures itself from scratch. The release at frame 128 destroyed the Access-Stratum context, so frame 136 ran the whole Security Mode procedure again — same algorithms, new K_gNB. Radio keys do not survive a release to RRC_IDLE.
  6. The first uplink message already tells you what kind of connection this is. establishmentCause says who started it, and the ue-Identity branch says whether the core handed down a subscriber identity to start it with — both in the clear, both before security exists.

Where this sits in the stack

This page follows one layer of a much larger trace. The layers around it tell different parts of the same story:

Try it on your own capture

Every arrow in this diagram was decoded and captioned by VisualEther from a raw Wireshark PCAP — including the session split that lifted one protocol's conversation off a six-layer timeline. Point it at your own 5G, LTE, or IMS trace and read it the same way.