MAC-NR in a Real 5G Capture

This article covers the MAC-NR layer of the 5G NR attach walkthrough. We will examine every MAC-NR subheader and control element on one UE, from Msg3 โ€” sent while the UE is still anonymous โ€” to the last scheduled transmission.

๐Ÿ’ก 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 MAC sits

MAC appears in both planes of the 5G radio stack, so it gets both pictures. Read them as two views of one thing, not as two MACs.

Control plane โ€” signaling

sequenceDiagram accTitle: 5G NR control-plane protocol stack, MAC 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. MAC, 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 MAC highlighted. MAC sits between RLC above and PHY below, and talks to its peer MAC entity in the gNB. NAS passes transparently through the gNB to the AMF.

User plane โ€” data

sequenceDiagram accTitle: 5G NR user-plane protocol stack, MAC highlighted accDescr: The user-plane layers, top of stack to bottom. SDAP, PDCP, RLC, MAC and PHY each span the UE and the gNB. Below them, the N3 interface, GTP-U carrying the QoS Flow Identifier, spans the gNB and the UPF. MAC, the subject of this article, is highlighted. participant UE participant gNB participant UPF Note over UE,gNB: SDAP Note over UE,gNB: PDCP Note over UE,gNB: RLC Note over UE,gNB: MAC Note over UE,gNB: PHY Note over gNB,UPF: N3 ยท GTP-U (QFI)
The 5G NR user-plane stack, with MAC highlighted. MAC occupies the same position, under RLC and above PHY, but the layer at the top of the stack is SDAP rather than RRC. Below the radio stack, an N3 box (GTP-U carrying the QFI) spans the gNB and the UPF.

The two MAC boxes are the same entity

This is where MAC differs from the layers above it, and the distinction is easy to miss because the two diagrams look symmetrical.

PDCP and RLC run one entity per bearer. A UE with a signaling bearer and a data bearer genuinely has two PDCP entities and two RLC entities, each with its own sequence-number space โ€” which is why the PDCP and RLC companions each walk two separate diagrams, one per bearer.

MAC runs one entity per UE. The MAC box in the control-plane picture and the MAC box in the user-plane picture are not two instances of a layer; they are the same scheduler, drawn twice because the stack above it differs. Everything from both planes arrives at it, and it packs them into the same transport blocks. The figure below redraws the two stacks as the funnel they actually are.

flowchart TD accTitle: Two radio bearers converging on one MAC entity accDescr: Two parallel chains feed one MAC entity. The signaling chain runs RRC to a PDCP entity to an RLC entity, and reaches MAC on logical channel ID 1. The data chain runs SDAP to a second PDCP entity to a second RLC entity, and reaches MAC on logical channel ID 4. Each chain has its own sequence-number space. Both arrive at a single MAC entity, one per UE, keyed on C-RNTI 0x8000, which multiplexes them into shared transport blocks and passes them to PHY. subgraph SRB["Signaling radio bearer โ€” SRB 1"] RRC["RRC"] --> PDCP1["PDCP entity<br/>own SN space"] --> RLC1["RLC entity<br/>own SN space"] end subgraph DRB["Data radio bearer โ€” DRB 1"] SDAP["SDAP"] --> PDCP2["PDCP entity<br/>own SN space"] --> RLC2["RLC entity<br/>own SN space"] end RLC1 -->|"LCID 1"| MAC["<b>MAC โ€” one entity per UE</b><br/>keyed on C-RNTI 0x8000"] RLC2 -->|"LCID 4"| MAC MAC --> PHY["PHY<br/>shared transport blocks"]
The same two planes redrawn as one funnel, with this capture's own bearers. RRC and SDAP each sit on top of their own PDCP and RLC entities, but both chains end at a single MAC entity, which tells them apart only by the LCID on each subheader. Frame 4 on the walk below is this picture in one transport block.

That single MAC box at the bottom of the funnel is why this page has one diagram and one session, keyed on the C-RNTI rather than on a bearer: there is only one MAC conversation to follow. It carries signaling and user data together, told apart solely by the logical-channel ID on each subheader โ€” and the walk below is full of frames that do exactly that.

What MAC does

MAC โ€” Medium Access Control (TS 38.321) is the layer that decides who transmits, when, and how much. Everything above it hands down packets and assumes airtime exists. MAC is where airtime actually gets allocated, and where the several independent streams sharing one radio link get packed into the fixed-size blocks the physical layer can carry.

We will see the following MAC functions in this capture:

Everything MAC does is in the clear. The capture is genuinely ciphered โ€” NEA2 (AES) on the access stratum โ€” but ciphering is a PDCP function that starts below the PDCP header, so LCIDs, lengths, control elements and padding all read without keys.

Important items to understand the flow:

FieldMeaning
LCIDLogical Channel ID, 6 bits. Values 1โ€“32 name a dedicated logical channel (a bearer's traffic); the common control channel sits outside that range, as LCID 0 on the downlink and LCID 52 on the uplink; everything else from 33 up names a control element or padding (TS 38.321 Tables 6.2.1-1 and 6.2.1-2). The meaning is direction-specific โ€” LCID 61 is a Short BSR going up and a Timing Advance Command coming down.
SubheaderThe per-SDU header inside a MAC PDU: reserved bits, a format bit, the LCID, and โ€” for a variable-length SDU โ€” an SDU Length. Reading a MAC PDU is walking this chain.
BSRBuffer Status Report. A control element saying how many bytes are still queued after this transmission, as a 5-bit index into a table of byte ranges (TS 38.321 ยง6.1.3.1).
LCGLogical Channel Group, 0โ€“7. A BSR reports per group, not per channel; RRC assigns each logical channel to a group.
PHRPower Headroom Report. How much transmit power the UE has left below its configured maximum โ€” the scheduler's cue that it can widen the grant or must not.
TATiming Advance Command. A 6-bit relative adjustment, centered on 31, that keeps this UE's uplink arriving inside the cell's symbol boundary.
PaddingLCID 63. A transport block is a fixed size once granted, so whatever the scheduler over-allocated must be filled. How much padding a link burns is a direct measure of how well the scheduler guessed.

The conversation we're following

๐Ÿ’ก Where this diagram comes from. This page follows one session out of the full attach walkthrough. VisualEther โ€” the tool that decoded this capture and generated the diagrams here โ€” splits a trace into per-protocol sessions and names each one; this is the one it labels mac-ue/timeout/00002, keyed on C-RNTI 0x8000.

MAC sees everything: every RRC message, every RLC PDU, every user-plane packet in this capture crossed the air inside one of these transport blocks.

The session begins at frame 2 rather than frame 1 because frame 1 is the Random Access Response, addressed to RA-RNTI 0x0500 rather than to a UE identity. It ends at frame 146 because the next frame in the capture is 32.45 seconds later, past the 30-second idle timeout that closes the session โ€” hence the timeout bucket in the name.

Here are the statistics for the 144 frames of the MAC session we are following:

UplinkDownlink
Frames6876
Logical-channel SDUs38 on LCID 4, 24 on LCID 1, 2 on LCID 5229 on LCID 4, 26 on LCID 1, 2 on LCID 0
Control elements66 Short BSR, 37 Single-Entry PHR23 Timing Advance, 2 Contention Resolution
Padding subheaders57, carrying 30955 bytes64, carrying 0 bytes

Keep the last row in mind as you read the walk. The uplink threw away 30955 bytes on padding; the downlink threw away none โ€” on the same link, under the same rules. What frame 3 told the scheduler explains why the two directions differ so sharply.

Two RRC connections share this session. MAC sessions are keyed on C-RNTI alone, and the cell handed 0x8000 straight back out to a second UE context: UEId 1 runs frames 2 to 129, UEId 2 runs frames 131 to 146. The Random Access Response that opens the second connection โ€” frame 130 โ€” is excluded for the same reason frame 1 is.

One last thing before the walk: the diagram's 475 arrows are not 475 subheaders. The diagram draws each control element twice โ€” once on its own, with its fields expanded, and once in place, showing where it sat inside the MAC PDU. That doubles the 66 Short BSRs, the 37 PHRs and the 2 Contention Resolution elements in the table above, so 105 arrows are the same 105 elements seen a second time. Timing Advance Commands are drawn once. Subtract the repeats and the session's real content is 370 MAC subheaders.

The walk

Frames 2 and 3 โ€” winning the right to be addressed

Frame 2 is Msg3, and the UE is still anonymous. The subheader says LCID 52, which on the uplink shared channel means CCCH of size 48 bits (TS 38.321 Table 6.2.1-2) โ€” the only logical channel a UE may use before the network has agreed who it is. There is no length field, because 48 bits is the length: six bytes, 1b34056b1846, decoding as an RRC RRCSetupRequest whose ue-Identity is the random value b34056b184 and whose establishmentCause is mo-Signalling.

Behind it, 24 bytes of padding. The Random Access Response sized the grant that carried Msg3, before anyone knew how large the UE's first message would be.

Nothing so far singles this UE out. Several devices can pick the same preamble in the same slot, receive the same grant, and transmit Msg3 on top of one another.

๐Ÿ“ก [00002] Frame 2 RRC Setup Request 2024-04-13T03:06:55.797018Z ๐Ÿ“ฑ UE ๐Ÿ“ก gNB
frame : Frame 2: Packet, 99 bytes on wire (792 bits), 99 bytes captured (792 bits)
Encapsulation type : Ethernet (1)
Arrival Time : Apr 12, 2024 20:06:55.797018000 Pacific Daylight Time
UTC Arrival Time : Apr 13, 2024 03:06:55.797018000 UTC
Epoch Arrival Time : 1712977615.797018000
Time shift for this packet : 0.000000000 seconds
Time delta from previous captured frame : 5.290000 milliseconds
Time delta from previous displayed frame : 5.290000 milliseconds
Time since reference or first frame : 5.290000 milliseconds
Frame Number : 2
Frame Length : 99 bytes (792 bits)
Capture Length : 99 bytes (792 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 : 85
Identification : 0x0001 (1)
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 : 65
Checksum : 0xffff [unverified]
Checksum Status : Unverified
Stream index : 0
Stream Packet Number : 2
Timestamps
Time since first frame : 5.290000 milliseconds
Time since previous frame : 5.290000 milliseconds
UDP payload (57 bytes)
mac-nr : MAC-NR UL-SCH (LCID:52 6 bytes) (Padding 24 bytes)
Context (RNTI=32768)
Radio Type : FDD (1)
Direction : Uplink (0)
RNTI : 0x8000 (32768)
RNTI Type : C-RNTI (3)
UEId : 1
System Frame Number : 189
Slot : 7
HarqId : 0
PHR Type2 other cell PHR : False
Subheader : (LCID:52 6 bytes)
00.. .... = Reserved : 0x00
..11 0100 = LCID : CCCH (48 bits) (52)
..11 0100 = LCID : 0x34
UL-SCH SDU : 1b34056b1846
NR Radio Resource Control (RRC) protocol
UL-CCCH-Message
message : c1 (0)
c1 : rrcSetupRequest (0)
rrcSetupRequest
rrcSetupRequest
ue-Identity : randomValue (1)
randomValue : b34056b184 [bit length 39, 1 LSB pad bits, 1011 0011 0100 0000 0101 0110 1011 0001 1000 010. decimal value 384939284674]
establishmentCause : mo-Signalling (3)
spare : 00 [bit length 1, 7 LSB pad bits, 0... .... decimal value 0]
Subheader : (Padding 24 bytes)
00.. .... = Reserved : 0x00
..11 1111 = LCID : Padding (63)
..11 1111 = LCID : 0x3f
Rendered from a Wireshark PCAP by VisualEther.

Frame 2, Msg3: one CCCH subheader with no length field, six bytes of RRCSetupRequest, and 24 bytes of padding. Expand the MAC-NR layer to see the LCID 52 subheader and the random ue-Identity the UE picked for itself.

Frame 3 is Msg4, and it resolves that โ€” 0.708 ms later. The gNB sends a UE Contention Resolution Identity control element (LCID 62, TS 38.321 Table 6.2.1-1) whose six-octet payload is 1b34056b1846: a byte-for-byte echo of what the UE just sent.

TS 38.321 ยง5.1.5 states the rule plainly. A UE receiving this element compares it with the CCCH SDU it transmitted in Msg3. On a match, it declares contention resolution successful, stops ra-ContentionResolutionTimer, and โ€” for a random access started from idle โ€” promotes the Temporary C-RNTI it was given in the Random Access Response into its own C-RNTI. Every UE that sent a different Msg3 sees a mismatch, loses, and starts again.

One thing to note: the Random Access Response assigns Temporary C-RNTI 0x1001, yet every frame from Msg3 onward is stamped C-RNTI 0x8000 in the capture's own MAC-NR context. The promotion is not visible as a change in the RNTI field. You read contention resolution from the identity echo, not from the identifier.

And multiplexed behind that control element, in the same transport block: LCID 0 โ€” CCCH on the downlink โ€” carrying a 214-byte SDU, which is the RRC RRCSetup. Contention resolution and connection setup are unrelated procedures at two different layers, and MAC delivers both in one transmission because a MAC PDU is simply a concatenation of independently labeled subheaders (TS 38.321 ยง6.1.2).

Note the order: control element first, SDU second. That is the downlink rule. The uplink's is the mirror image, and the next frame shows it.

โœ… [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, Msg4: the UE Contention Resolution Identity control element (LCID 62) echoing 1b34056b1846, followed by the LCID 0 subheader carrying the 214-byte RRCSetup. Control element first, SDU second โ€” the downlink ordering rule.

Frame 4 โ€” the complete multiplexing repertoire, in one PDU

The first uplink after contention resolution, 28.259 ms later, contains four subheaders:

  1. LCID 1, a 108-byte SDU โ€” SRB 1's signaling traffic. Inside it, Wireshark reads an RLC-AM PDU with SN=0, wrapping PDCP SN=0, wrapping an RRC rrcSetupComplete, wrapping a NAS Registration Request. Five layers in 108 bytes โ€” MAC, RLC, PDCP, RRC and NAS โ€” and MAC sees none of the four above it: to MAC this is an opaque octet string that arrived on logical channel 1.
  2. A Short BSR on Logical Channel Group 0, buffer-size index 0 โ€” which TS 38.321 ยง6.1.3.1 defines as literally BS = 0.
  3. A Single-Entry PHR (LCID 57, TS 38.321 ยง6.1.3.8) with Power Headroom index 57 and Pcmax index 52, which the dissector expands to 26 dB <= PH < 28 dB and 22 dBm <= Pcmax,f,c < 23 dBm.
  4. 508 bytes of padding.

That is one logical-channel SDU, two control elements, and padding โ€” MAC's entire repertoire in a single transport block, in the first frame after the connection exists.

โœ… [00004] Frame 4 RRC Setup Complete 2024-04-13T03:06:55.825985Z ๐Ÿ“ฑ UE ๐Ÿ“ก gNB
frame : Frame 4: Packet, 691 bytes on wire (5528 bits), 691 bytes captured (5528 bits)
Encapsulation type : Ethernet (1)
Arrival Time : Apr 12, 2024 20:06:55.825985000 Pacific Daylight Time
UTC Arrival Time : Apr 13, 2024 03:06:55.825985000 UTC
Epoch Arrival Time : 1712977615.825985000
Time shift for this packet : 0.000000000 seconds
Time delta from previous captured frame : 28.259000 milliseconds
Time delta from previous displayed frame : 28.259000 milliseconds
Time since reference or first frame : 34.257000 milliseconds
Frame Number : 4
Frame Length : 691 bytes (5528 bits)
Capture Length : 691 bytes (5528 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 : 677
Identification : 0x0003 (3)
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 : 657
Checksum : 0xffff [unverified]
Checksum Status : Unverified
Stream index : 0
Stream Packet Number : 4
Timestamps
Time since first frame : 34.257000 milliseconds
Time since previous frame : 28.259000 milliseconds
UDP payload (649 bytes)
mac-nr : MAC-NR UL-SCH (LCID:1 108 bytes) (Short BSR LCG ID=0 BS=0) (PHR PH=57 PCMAX_f_c=52) (Padding 508 bytes)
Context (RNTI=32768)
Radio Type : FDD (1)
Direction : Uplink (0)
RNTI : 0x8000 (32768)
RNTI Type : C-RNTI (3)
UEId : 1
System Frame Number : 192
Slot : 6
HarqId : 0
PHR Type2 other cell PHR : False
Subheader : (LCID:1 108 bytes)
0... .... = Reserved : 0x00
.0.. .... = Format : 8 bits
..00 0001 = LCID : 1 (1)
..00 0001 = LCID : 0x01
SDU Length : 108
UL-SCH SDU : c000000010c41fc00825c7e0197a0a3f4067e004119000bf200f110fe0041c23456782e02f07071003d2649aa0f140e68b0e3db267aa6e528f19f031481846dcff0608e4ea6c11174838a62b9778f1371225af3c59959a3e4349e912b7302ed47d9cb36886e2c06000000000
RLC-NR UEId=1 [UL] [AM] SRB:1 [DATA] (P) SN=0 [106-bytes]
Context
Direction : Uplink (0)
RLC Mode : Acknowledged Mode (4)
UEId : 1
Bearer Type : SRB (4)
Bearer Id : 1
PDU Length : 108
Sequence Number length : 12
AM
AM Header (P) SN=0
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 0000 = Sequence Number : 0
AM Data : 000010c41fc00825c7e0197a0a3f4067e004119000bf200f110fe0041c23456782e02f07071003d2649aa0f140e68b0e3db267aa6e528f19f031481846dcff0608e4ea6c11174838a62b9778f1371225af3c59959a3e4349e912b7302ed47d9cb36886e2c06000000000
PDCP-NR (SN=0 )
Configuration : UEId= 1 SRB-1 (direction=Uplink, plane=Signalling)
Direction : Uplink (0)
Plane : Signalling (1)
UE : 1
Bearer type : DCCH (1)
Bearer Id : 1
Seqnum length : 12
MAC-I Present : True
Ciphering disabled : False
0000 .... = Reserved : 0
.... 0000 0000 0000 = Seq Num : 0
Sequence Analysis - OK
Expected SN : 0
OK : True
NR Radio Resource Control (RRC) protocol
UL-DCCH-Message
message : c1 (0)
c1 : rrcSetupComplete (2)
rrcSetupComplete
rrc-TransactionIdentifier : 0
criticalExtensions : rrcSetupComplete (0)
rrcSetupComplete
1... .... Optional Field Bit : True (registeredAMF is present)
.1.. .... Optional Field Bit : True (guami-Type is present)
..0. .... Optional Field Bit : False (s-NSSAI-List is NOT present)
...0 .... Optional Field Bit : False (ng-5G-S-TMSI-Value is NOT present)
.... 0... Optional Field Bit : False (lateNonCriticalExtension is NOT present)
.... .1.. Optional Field Bit : True (nonCriticalExtension is present)
selectedPLMN-Identity : 1
registeredAMF
..0. .... Optional Field Bit : False (plmn-Identity is NOT present)
amf-Identifier : fe0041 [bit length 24, 1111 1110 0000 0000 0100 0001 decimal value 16646209]
guami-Type : native (0)
dedicatedNAS-Message : 7e0197a0a3f4067e004119000bf200f110fe0041c23456782e02f07071003d2649aa0f140e68b0e3db267aa6e528f19f031481846dcff0608e4ea6c11174838a62b9778f1371225af3c59959a3e4349e912b7302ed47d9cb36886e2c
Non-Access-Stratum 5GS (NAS)PDU
Security protected NAS 5GS message
Extended protocol discriminator : 5G mobility management messages (126)
0000 .... = Spare Half Octet : 0
.... 0001 = Security header type : Integrity protected (1)
Message authentication code : 0x97a0a3f4
Sequence number : 6
Plain NAS 5GS Message
Extended protocol discriminator : 5G mobility management messages (126)
0000 .... = Spare Half Octet : 0
.... 0000 = Security header type : Plain NAS message, not security protected (0)
Message type : Registration request (0x41)
5GS registration type
.... 1... = Follow-On Request bit (FOR) : Follow-on request pending
.... .001 = 5GS registration type : initial registration (1)
NAS key set identifier
0... .... = Type of security context flag (TSC) : Native security context (for KSIAMF)
.001 .... = NAS key set identifier : 1
5GS mobile identity
Length : 11
1... .... = Spare : 1
.1.. .... = Spare : 1
..1. .... = Spare : 1
...1 .... = Spare : 1
.... 0... = Spare : 0
.... .010 = Type of identity : 5G-GUTI (2)
Mobile Country Code (MCC) : Test network (001)
Mobile Network Code (MNC) : Test network (01)
AMF Region ID : 254
0000 0000 01.. .... = AMF Set ID : 1
..00 0001 = AMF Pointer : 1
5G-TMSI : 3258209912 (0xc2345678)
TMSI/P-TMSI/M-TMSI/5G-TMSI : 3258209912 (0xc2345678)
UE security capability
Element ID : 0x2e
Length : 2
1... .... = 5G-EA0 : Supported
.1.. .... = 128-5G-EA1 : Supported
..1. .... = 128-5G-EA2 : Supported
...1 .... = 128-5G-EA3 : Supported
.... 0... = 5G-EA4 : Not supported
.... .0.. = 5G-EA5 : Not supported
.... ..0. = 5G-EA6 : Not supported
.... ...0 = 5G-EA7 : Not supported
0... .... = 5G-IA0 : Not supported
.1.. .... = 128-5G-IA1 : Supported
..1. .... = 128-5G-IA2 : Supported
...1 .... = 128-5G-IA3 : Supported
.... 0... = 5G-IA4 : Not supported
.... .0.. = 5G-IA5 : Not supported
.... ..0. = 5G-IA6 : Not supported
.... ...0 = 5G-IA7 : Not supported
NAS message container
Element ID : 0x71
Length : 61
Encrypted data
nonCriticalExtension
.... 0... Optional Field Bit : False (iab-NodeIndication-r16 is NOT present)
.... .0.. Optional Field Bit : False (idleMeasAvailable-r16 is NOT present)
.... ..0. Optional Field Bit : False (ue-MeasurementsAvailable-r16 is NOT present)
.... ...0 Optional Field Bit : False (mobilityHistoryAvail-r16 is NOT present)
0... .... Optional Field Bit : False (mobilityState-r16 is NOT present)
.1.. .... Optional Field Bit : True (nonCriticalExtension is present)
nonCriticalExtension
..1. .... Optional Field Bit : True (ul-RRC-Segmentation-r16 is present)
...0 .... Optional Field Bit : False (nonCriticalExtension is NOT present)
ul-RRC-Segmentation-r16 : true (0)
MAC : 0x00000000 [Matches calculated result]
Subheader : (Short BSR LCG ID=0 BS=0)
00.. .... = Reserved : 0x00
..11 1101 = LCID : Short BSR (61)
..11 1101 = LCID : 0x3d
000. .... = LCG : 0
...0 0000 = Buffer Size for LCG0 : BS = 0 (0)
Subheader : (PHR PH=57 PCMAX_f_c=52)
00.. .... = Reserved : 0x00
..11 1001 = LCID : Single Entry PHR (57)
..11 1001 = LCID : 0x39
00.. .... = Reserved : 0x0
..11 1001 = Power Headroom : 26 dB <= PH < 28 dB (57)
00.. .... = Reserved : 0x0
..11 0100 = Pcmax,c,f : 22 dBm <= Pcmax,f,c < 23 dBm (52)
Subheader : (Padding 508 bytes)
00.. .... = Reserved : 0x00
..11 1111 = LCID : Padding (63)
..11 1111 = LCID : 0x3f
Rendered from a Wireshark PCAP by VisualEther.

Frame 4's full MAC PDU: four subheaders in one uplink transport block. Expand the RLC, PDCP, RRC and NAS layers to see the 108-byte SDU unwrap all the way to a Registration Request.

Two details in that list repay attention.

The first BSR asks for nothing โ€” and that is correct, not broken. The UE had one RLC PDU queued, the grant took it whole, and MAC assembled both into the same PDU. By the time the buffer-size field was filled in, the buffer it describes had already been emptied into the very frame carrying it. A BSR is a snapshot of what is left over, not of what is being sent.

And the control elements come after the SDU, not before it. TS 38.321 ยง6.1.2 puts uplink control elements after all SDUs and before the padding, and downlink control elements before all SDUs. Compare frame 3, where the Contention Resolution element came first. Both orders hold across all 144 frames of this session without a single exception, and where a BSR and a PHR appear together, the BSR always comes first.

Power headroom, for its part, is the gap between the power the UE is permitted to use and the power it actually used. A large positive headroom tells the scheduler it can widen the grant or use denser modulation; a headroom near zero says the UE is at the wall and a bigger grant would only produce errors. It is the power-domain twin of the BSR: the BSR says how much I have to send, the PHR says how hard I can push. All 37 PHRs in this session report the identical pair of indices โ€” nothing about this UE's power situation changes for the whole capture.

Frames 21 to 29 โ€” the scheduling loop, and what it costs

This is the run that teaches the Buffer Status Report, because it is the only place in the session where the UE has a real backlog, and you can watch it drain.

Frame 21 โ€” the first BSR that asks for something. LCG 0, buffer-size index 16, which the level table reads as 1038 < BS <= 1446 bytes still queued after this transmission. The UE has been asked for its radio capabilities; the answer is far too large for one grant, and RLC has cut it up. The data SDU in this frame is 611 bytes; the BSR alongside says roughly a kilobyte and a half is still waiting.

Frame 22 โ€” index 13, 5.992 ms later. 384 < BS <= 535 left. The scheduler granted, the UE sent 619 bytes, the buffer shrank by roughly a grant's worth. Note that 619: it is the largest logical-channel SDU the uplink ever carries in this session, and frames 51, 79 and 96 all reach the same figure.

Frame 23 โ€” index 0, 0.999 ms later. The capability report is out. Nothing is queued. Three grants, three reports, and the scheduler now knows it can stop.

Frames 25 to 29 โ€” except it does not stop. Five consecutive uplink transport blocks, spaced exactly 1.000 ms apart, each carrying a Short BSR that reports zero and then padding โ€” and not one logical-channel SDU between them. Frame 25's padding is 621 bytes, and 18 uplink frames in this session carry exactly that figure. (Frame 27 also carries a PHR, so it pads with 618 instead.)

Set 621 beside the 619-byte maximum SDU and the picture completes itself: the gNB offers one grant size over and over, whether or not the UE has anything to put in it. MAC cannot decline a grant and cannot send a short transport block, so it sends the only thing it has โ€” a Short BSR โ€” and fills the rest.

The gNB cannot see the UE's buffer; it can only see reports about that buffer's recent past, and it must commit airtime before the report it is acting on can be confirmed. Over-granting is the cheaper mistake, so over-granting is what you get. 23 of the 68 uplink frames in this session carry no logical-channel data whatsoever.

Frame 38 โ€” where a Logical Channel Group comes from

A 165-byte SDU on LCID 1, decoding to an RRC Reconfiguration. Two entries in it matter to MAC:

The group assignment is the field to hold on to. A Buffer Status Report does not report per logical channel โ€” it reports per group โ€” and this frame is where the mapping is decided. From here on, a BSR naming LCG 1 is talking about the data bearer and one naming LCG 0 is talking about signaling. Every LCG 1 report in the session appears after this frame.

Note also what the message does not contain: no mac-CellGroupConfig. MAC itself is never reconfigured after frame 3, which is the subject of the next section.

Frame 41 opens LCID 4 โ€” a 55-byte SDU on the logical channel frame 38 just created, carrying an RLC-AM PDU on DRB 1 with an 18-bit sequence number, a PDCP PDU, and an SDAP header with QoS Flow Identifier 2. To MAC, this is logical channel 4 rather than logical channel 1: same subheader format, same multiplexing rules, same control elements. Only the number changed. From here, 38 uplink and 29 downlink subheaders carry LCID 4.

Frames 50 and 78 โ€” five subheaders, and the biggest ask

Frame 50 is the busiest PDU shape in the session. Three LCID 4 SDUs โ€” 3 bytes of RLC status, then 67 bytes, then 542 bytes โ€” followed by a Short BSR and a Single-Entry PHR, with no padding subheader at all. Five subheaders, and only 13 of the 144 frames get that far.

Its BSR is the first on Logical Channel Group 1, index 16 โ€” 1038 < BS <= 1446 bytes queued on the data bearer, because frame 38 put LCID 4 in that group. This is how grouping assists the scheduler: it now knows not just how much the UE has to send but what kind, so signaling backlog and user-plane backlog arrive as separately numbered reports.

Frame 78 is the largest thing the UE ever asks for. LCG 1, index 17 โ€” 1446 < BS <= 2014 bytes still queued, the highest index anywhere in the session. Follow it forward: frame 79 reports 16, frame 80 reports 14, frame 81 reports 0. Four grants to clear a two-kilobyte backlog, at roughly one grant per millisecond โ€” and then frames 82, 83, 85, 86 and 87 are the same over-granted, BSR-plus-padding blocks that followed frame 23. The pattern is not specific to signaling. It repeats every time a burst ends.

Turn the link around, and the numbers change completely.

Frame 90 carries a 1226-byte SDU whole, with a zero-byte padding subheader behind it. Frame 102 carries 90 bytes with no padding subheader at all โ€” 12 downlink frames in this session end exactly where their SDU does. Frame 109 is the largest MAC SDU in the capture: 1438 bytes on LCID 4, a single subheader in a single transport block, no control element, no padding. Frame 110 completes it with 69 bytes and starts the next with 1367, two RLC sequence numbers in flight at once, told apart by nothing but their subheader lengths. Frame 111 carries 140 and then 578 and closes the burst.

More than three kilobytes in three transmissions, and nothing wasted. The uplink's ceiling, meanwhile, is 619 bytes.

Frames 6 to 127 โ€” a metronome with nothing left to time

Threaded through everything above is a control element that does nothing at all, on a perfect schedule.

LCID 61 on the downlink is the Timing Advance Command (TS 38.321 ยง6.1.3.4): one byte, carrying a 2-bit TAG ID and a 6-bit command. Timing advance is how a cell keeps every UE's uplink arriving inside the same symbol boundary despite different propagation delays โ€” the further away the UE, the earlier it must transmit.

There are 23 of them in this session, and every single one carries TAG 0 and the value 31. TS 38.213 ยง4.2 defines this element's value as a relative adjustment centered on 31, so 31 means no change.

Frames 6, 33, 34, 35, 45, 46, 60, 61, 65, 74, 88, 93, 94, and then 120 through 127 are the 21 commands of the first connection, and every consecutive interval among them falls between 599.957 ms and 600.032 ms. Frames 120 to 127 are eight of them back to back with no other traffic on the link at all.

Now, read the configuration the connection was given in frame 3: tag-Config sets tag-Id 0 with timeAlignmentTimer infinity. A Timing Advance Command restarts that timer (TS 38.321 ยง5.2), but a timer set to infinity never expires, so there is nothing to restart.

Frames 128 and 129 โ€” RLC retransmission seen at MAC level

Frame 128 is the RRC Release: a 10-byte SDU on LCID 1, alone in its transport block โ€” no BSR, no PHR, not even a padding subheader. Ten bytes granted, ten bytes sent.

Frame 129 is the identical PDU again, 44.894 ms later. The cause of duplicate transmission is one layer up: RLC-AM polled with frame 128, got no status report back, and its t-PollRetransmit timer fired. From MAC's point of view, a second, unrelated 10-byte SDU arrived on logical channel 1.

That is worth keeping as a diagnostic habit. A repeated MAC SDU is rarely a MAC event.

What frame 3 told the scheduler

The RLC companion to this page ends on a spec default that nothing in the trace ever configures. MAC is the opposite case, and it is the more satisfying one: the RRCSetup in frame 3 carries a complete mac-CellGroupConfig, in the clear (nested inside a 209-octet masterCellGroup, if you want to see how it got there), and everything you have just read is that configuration playing out. Nothing after frame 3 touches it โ€” frame 38's reconfiguration carries no mac-CellGroupConfig at all.

Configured in frame 3What the 144 frames show
periodicBSR-Timer sf1 โ€” one subframe, the shortest the enumeration offersA Short BSR on 66 of the 68 uplink transmissions. The only two exceptions are frames 2 and 131, the two Msg3s, which carry nothing but a CCCH SDU.
retxBSR-Timer sf80Not separately observable: with a periodic BSR already pending every millisecond, no retransmission trigger can be told apart from the periodic one.
phr-PeriodicTimer sf10, phr-ProhibitTimer sf0, phr-Tx-PowerFactorChange dB137 PHRs. No two are closer together than 9.988 ms, and the widest gap is 8280.171 ms.
tag-Config { tag-Id 0, timeAlignmentTimer infinity }23 Timing Advance Commands on TAG 0, every one carrying 31 โ€” on a timer that can never expire.
drx-Config absentNo discontinuous reception. The UE listens continuously; nothing in the trace is ever deferred to a wake-up.

Read the first row against frames 25 to 29, and the five-in-a-row BSR burst stops looking like a scheduler bug. periodicBSR-Timer at sf1 means a periodic BSR is pending essentially every millisecond; a BSR only transmits when a grant exists to carry it; and a grant existed every millisecond through that stretch. The trace is doing precisely what frame 3 told it to.

The third row is the same logic in the power domain. phr-Tx-PowerFactorChange dB1 would trigger a report whenever path loss moved by more than a decibel โ€” but the Power Headroom index sits at 57 in all 37 reports, and index 57 is a two-decibel-wide bucket (26 dB <= PH < 28 dB), so nothing in the trace suggests it ever fires. The only trigger left is phr-PeriodicTimer at sf10, and sure enough, no two PHRs in the session land closer than 9.988 ms apart. The gaps run much wider than 10 ms whenever the UE has no grant to put a report on, which is why the session holds 37 PHRs against 66 BSRs.

Which leaves the question the padding row of the earlier table posed: why does the uplink waste 30955 bytes while the downlink wastes zero?

Not because the directions run different rules โ€” they run identical ones. Because they have different information, the gNB sizes a downlink transport block against a buffer it owns and can read directly. Hence it never allocates more than it has: 64 downlink padding subheaders in this session, all of them the bare one-byte LCID 63 with nothing after it, and 12 downlink frames with no padding subheader at all. The uplink grant, by contrast, is sized from a Buffer Status Report that described the past โ€” and MAC must fill whatever arrives, exactly. Padding is not waste the UE chose. It is the visible residue of a control loop that has to guess.

The later connections

The full capture holds three RRC connections on the same cell. This session covers two of them, because MAC sessions are keyed on C-RNTI alone and the cell handed 0x8000 back out.

The second connection opens at frame 131, 3196.459 ms after the last frame of the first, with another LCID 52 CCCH transmission. Frame 132's Contention Resolution Identity echoes 0838468acf04 โ€” not the 1b34056b1846 of frame 3. That difference is the proof this is a genuinely new random access rather than a continuation: the identity is whatever Msg3 the UE actually sent this time, and a new random value produces a new echo. The MAC-NR context field agrees, stamping UEId 2 from here on.

Every interaction from the first connection repeats. Frame 132's 214-byte RRCSetup carries the same mac-CellGroupConfig โ€” periodicBSR-Timer sf1, phr-PeriodicTimer sf10, timeAlignmentTimer infinity, no drx-Config. Frame 133's uplink is frame 4's four-subheader pattern: a 54-byte LCID 1 SDU, a Short BSR reading zero, a PHR reading the identical index 57 and index 52, and 562 bytes of padding. Frames 135 and 144 are two more Timing Advance Commands, 600.017 ms apart, both carrying 31. Frames 145 and 146 are another RRC Release and another RLC-driven repeat of it, 44.915 ms later.

The third connection is outside this session. It begins 32.45 seconds after frame 146 โ€” past the 30-second idle timeout that defines the session boundary โ€” so the diagram ends mid-retransmission rather than at anything the protocol would call an ending.

Takeaways

  1. Contention resolution is an identity echo, not an identifier change. The gNB replays the UE's own Msg3 bytes back at it; the UE that recognizes them wins.
  2. A subheader chain is the whole MAC PDU format. One transport block carried a logical-channel SDU, a BSR, a PHR, and 508 bytes of padding in frame 4 โ€” four subheaders, four independent things, one transmission. Uplink puts control elements last, downlink puts them first, and both orders held across all 144 frames without exception.
  3. A BSR reports the leftovers. 55 of 66 reports here say zero, because the grant that carried the report also carried the data it would have described. When a BSR is non-zero, watch the index fall across consecutive frames โ€” 16, then 13, then 0 โ€” and you are watching the scheduling loop close.
  4. The LCID space is direction-specific. LCID 61 is a Short BSR going up and a Timing Advance Command coming down. Reading a MAC trace without tracking direction will mislead you within a dozen frames.
  5. Padding measures the scheduler's uncertainty. 30955 bytes wasted on the uplink against zero on the downlink, on the same link, with the same rules โ€” because one side can read its own buffer and the other has to be told about it after the fact.

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 isolated one UE's MAC entity from the rest of the cell. Point it at your own 5G, LTE, or IMS trace and read it the same way.