Logical, Transport & Physical Channels in 5G NR
The three channel types and how logical channels map to transport and physical channels.
The three-layer channel model is not taxonomy for its own sake. Each layer exists because a different part of the system needs to make a decision, and each layer hides from the layer below exactly the information that layer must not depend on.
Contents
- 01Why Three Layers of Channels
- 02The Complete Mapping, Downlink and Uplink
- 03Logical Channels, One by One
- 04Which Messages Ride Which Logical Channel
- 05LCID, eLCID, and the Subheader on the Wire
- 06Transport Channels and Their Properties
- 07Transport Blocks, CRC, and Channel Coding
- 08Physical Channels and Physical Signals
- 09RNTIs: Who Addresses What
- 10DCI: Formats and Content
- 11UCI and the PUCCH Formats
- 12Sidelink Channel Mapping
- 13Multiplexing Rules: What Can Share a Transport Block
- 14End-to-End Traces: Six Messages Down the Stack
- 15Failure Modes and What Each One Means
- 16Illustrative Message Traces
- 17Configuration Reference (ASN.1 and Ranges)
- 18Release Deltas: Rel-15 to Rel-18
- 19Reading Channel Mapping in Logs: A Checklist
- 20Glossary
- 21References
1. Why Three Layers of Channels
The three-layer channel model is not taxonomy for its own sake. Each layer exists because a different part of the system needs to make a decision, and each layer hides from the layer below exactly the information that layer must not depend on.
| Layer | Answers the question | Lives at | What it deliberately hides |
|---|---|---|---|
| Logical channel | What kind of information is this? Control or traffic, broadcast or dedicated, which bearer | The RLC / MAC boundary — one logical channel per RLC entity | Nothing yet. This is where the type is still visible, and it is the last layer at which it is |
| Transport channel | How should the radio treat it? HARQ or not, scheduled or fixed, which coding, what transport block structure | The MAC / PHY boundary | Which logical channel the bytes came from. DL-SCH cannot tell system information from a video frame, and does not need to |
| Physical channel | Where on the air does it go? Which resource elements, which modulation, which antenna ports | Over the air, on the resource grid | Everything above the transport block. PDSCH sees a bit sequence with a size and a code rate |
Table 1. The separation is what makes NR's flexibility affordable: a new logical channel needs no physical-layer change, and a new numerology needs no change to the logical channel model.
The consequence worth remembering is that the mapping is many-to-one going down and ambiguous coming up. Five downlink logical channels collapse onto three transport channels and then onto two physical channels. Recovering the logical channel from a received transport block is possible only because MAC put a subheader in front of every SDU — and for broadcast and paging, not even that: those use a transparent MAC PDU with no subheader at all, and the receiver knows what it is holding purely from the RNTI that addressed the PDCCH.
There is a fourth category that the three-layer model does not cover at all, and it causes more log confusion than the model itself: physical layer control. DCI on PDCCH and UCI on PUCCH originate in the physical layer, carry nothing from above, and therefore have no logical channel and no transport channel. A HARQ-ACK will never appear in a MAC PDU. If you are looking for the logical channel a scheduling grant rode on, there is not one.
2. The Complete Mapping, Downlink and Uplink
The asymmetry between the two pictures is entirely explained by who is talking to whom. Downlink has to address an audience it cannot see — hence BCCH and PCCH, hence broadcast transport channels, hence the transparent MAC PDU. Uplink always has exactly one sender and one receiver, both of which already know each other, so the whole broadcast branch disappears.
3. Logical Channels, One by One
| Channel | Full name | Direction | Carries | RLC mode |
|---|---|---|---|---|
BCCH | Broadcast Control Channel | DL only | System information: the MIB (via BCH) and SIB1 plus all other SI messages (via DL-SCH). Cell-wide, unacknowledged, unaddressed | TM |
PCCH | Paging Control Channel | DL only | Paging messages, and system-information change notification for UEs in RRC_IDLE and RRC_INACTIVE | TM |
CCCH | Common Control Channel | DL and UL | RRC messages exchanged before the UE has a dedicated identity — SRB0. Two UL sizes exist, 48 bits and 64 bits, with different LCIDs | TM |
DCCH | Dedicated Control Channel | DL and UL | RRC and NAS signalling for an identified UE — SRB1, SRB2, SRB3, and SRB4 from Rel-17 | AM |
DTCH | Dedicated Traffic Channel | DL and UL | User-plane data. One DTCH per DRB, so a UE with three DRBs has three DTCHs in each direction | AM or UM |
Table 2. The five Uu logical channels. RLC transparent mode means no RLC header at all — which is why a broadcast SDU crosses the whole stack with almost no overhead.
Rel-17 adds two more downlink logical channels for multicast/broadcast services — MCCH for the multicast control information and MTCH for the multicast traffic itself — both mapped to DL-SCH and addressed by G-RNTI rather than by a UE's own C-RNTI. They are the first downlink logical channels that are neither cell-wide broadcast nor single-UE dedicated. Everything else below applies to the five Rel-15 channels.
The RLC mode column carries more weight than it looks. TM adds no RLC header, provides no segmentation and no retransmission — appropriate for something the network broadcasts repeatedly and never expects an acknowledgement for. AM adds a two- or four-octet header with a sequence number, does ARQ, and is what makes SRB1 reliable enough to carry a reconfiguration. UM adds a header and does segmentation and reassembly but no retransmission, which is what a voice bearer wants. See the companion 07 MAC PDU and Control Elements document for the header formats themselves.
CCCH is transparent-mode in both directions, which has a direct consequence for random access: an uplink CCCH SDU cannot be segmented, so RRCSetupRequest has to fit whole into the MSG3 grant. That is why the message is exactly 48 bits and why RRCResumeRequest1 — which needs 64 bits for the longer I-RNTI — got its own logical channel size and its own LCID rather than being segmented. See the companion 03 Random Access document.
4. Which Messages Ride Which Logical Channel
This is the table most often wanted and least often written down: given a message name in a log, which logical channel was it on?
| Logical channel | SRB / DRB | RRC and NAS messages that ride it | Notes |
|---|---|---|---|
BCCH → BCH | -- | MIB | The only thing on BCH. 24 bits of RRC, and nothing else ever |
BCCH → DL-SCH | -- | SIB1; SystemInformation carrying SIB2 through SIB21 and beyond, including posSIB positioning blocks | BCCH-DL-SCH-Message is the ASN.1 container. See the companion 17 System Information document |
PCCH | -- | Paging — a list of up to 32 PagingRecord entries | Also used for SI change notification and, from Rel-16, ETWS/CMAS indication via the Short Message in DCI |
CCCH (UL, 48 bits) | SRB0 | RRCSetupRequest, RRCResumeRequest, RRCReestablishmentRequest, RRCSystemInfoRequest | LCID 52 |
CCCH (UL, 64 bits) | SRB0 | RRCResumeRequest1 | LCID 0. Needed because the full I-RNTI does not fit in 48 bits |
CCCH (DL) | SRB0 | RRCSetup, RRCReject | LCID 0. Note that RRCReestablishment and RRCResume are not here — they go on DCCH/SRB1 |
DCCH | SRB1 | RRCReconfiguration / Complete, RRCSetupComplete, RRCReestablishment / Complete, RRCResume / Complete, RRCRelease, SecurityModeCommand / Complete, UECapabilityEnquiry / Information, MeasurementReport, ULInformationTransfer / DLInformationTransfer, MobilityFromNRCommand, UEAssistanceInformation | The workhorse. All NAS before security is established, and all RRC after |
DCCH | SRB2 | ULInformationTransfer / DLInformationTransfer only — i.e. NAS transport | Lower priority than SRB1, and only established after security. Keeps bulk NAS from delaying RRC |
DCCH | SRB3 | RRCReconfiguration and friends, direct to the secondary node | NR-DC only. See the companion 13 RRC Overview document |
DCCH | SRB4 | Application-layer measurement reports (MeasurementReportAppLayer) | Rel-17 |
DTCH | DRB 1..32 | None — no RRC or NAS message ever rides DTCH | IP, Ethernet or unstructured PDU-session data, through SDAP and PDCP |
Table 3. Message-to-logical-channel mapping. The two entries worth memorising are the CCCH size split and the fact that RRCReestablishment is on SRB1, not SRB0.
A very common misreading: seeing RRCReestablishmentRequest on CCCH and assuming the response is also on CCCH. It is not — RRCReestablishment is sent on SRB1/DCCH, which is possible because the target cell retrieves the UE context and can re-establish SRB1 before replying. If you are looking for a DL CCCH message during re-establishment you will not find one, and its absence is not a fault.
5. LCID, eLCID, and the Subheader on the Wire
A logical channel becomes concrete at exactly one place: the 6-bit LCID field in the MAC subheader. Everything above it is naming; everything below it is bits. Six bits gives 64 codepoints, and Rel-15 spent nearly all of them, which is why Rel-16 had to add an extension mechanism.
5.1 DL-SCH LCID values
| LCID | Meaning | Notes |
|---|---|---|
| 0 | CCCH | Downlink common control — RRCSetup and RRCReject |
| 1 – 32 | Identity of a logical channel | DCCH and DTCH. SRB1 = 1, SRB2 = 2, SRB3 = 3 by fixed convention; DRBs get logicalChannelIdentity values assigned in RLC-BearerConfig, commonly from 4 upward |
| 33 | Extended LCID field, two octets | Rel-16. The two following octets give codepoints 320 .. 65855 |
| 34 | Extended LCID field, one octet | Rel-16. The following octet gives codepoints 64 .. 319 |
| 35 – 46 | Reserved in Rel-15; progressively assigned in Rel-16 and Rel-17 | New MAC CEs for positioning, multi-TRP and SCell handling landed here. Always check the release of the table you are decoding against |
| 47 | Recommended bit rate | Network suggests a bit rate to the UE |
| 48 | SP ZP CSI-RS Resource Set Activation/Deactivation | -- |
| 49 | PUCCH spatial relation Activation/Deactivation | -- |
| 50 | SP SRS Activation/Deactivation | -- |
| 51 | SP CSI reporting on PUCCH Activation/Deactivation | -- |
| 52 | TCI State Indication for UE-specific PDCCH | Beam for control |
| 53 | TCI States Activation/Deactivation for UE-specific PDSCH | Beam candidate set for data |
| 54 | Aperiodic CSI Trigger State Subselection | -- |
| 55 | SP CSI-RS / CSI-IM Resource Set Activation/Deactivation | -- |
| 56 | Duplication Activation/Deactivation | PDCP duplication control |
| 57 | SCell Activation/Deactivation (four octets) | For serving cell indices above 7 |
| 58 | SCell Activation/Deactivation (one octet) | -- |
| 59 | Long DRX Command | Fixed size, R/LCID subheader |
| 60 | DRX Command | Fixed size, R/LCID subheader |
| 61 | Timing Advance Command | Two octets: 2-bit TAG identity, 6-bit relative TA command |
| 62 | UE Contention Resolution Identity | 48 bits echoing the MSG3 CCCH SDU. See the companion 03 Random Access document |
| 63 | Padding | Always last. R/LCID subheader, no length field |
Table 4. DL-SCH LCID codepoints, TS 38.321 Table 6.2.1-1. Note the structure: SDUs at the bottom of the range, control elements at the top, extension escapes in the middle.
5.2 UL-SCH LCID values
| LCID | Meaning | Notes |
|---|---|---|
| 0 | CCCH of size 64 bits | Carries RRCResumeRequest1. The CCCH1 logical channel in TS 38.331 |
| 1 – 32 | Identity of a logical channel | DCCH and DTCH, as in the downlink |
| 33 | Extended LCID field, two octets | Rel-16 |
| 34 | Extended LCID field, one octet | Rel-16 |
| 35 – 51 | Reserved in Rel-15; progressively assigned in Rel-16 and Rel-17 | Beam failure recovery, LBT failure, pre-emptive BSR, sidelink BSR and timing-advance reporting CEs occupy part of this range depending on release |
| 52 | CCCH of size 48 bits | The ordinary RRCSetupRequest / RRCResumeRequest / RRCReestablishmentRequest / RRCSystemInfoRequest path |
| 53 | Recommended bit rate query | UE asks for a bit rate |
| 54 | Multiple Entry PHR (four octets) | Power headroom for many carriers. See the companion 10 BSR, PHR, SR document |
| 55 | Configured Grant Confirmation | Confirms activation of a Type 2 configured grant |
| 56 | Multiple Entry PHR (one octet) | -- |
| 57 | Single Entry PHR | Two octets, one carrier |
| 58 | C-RNTI | Two octets. The implicit contention-resolution mechanism for a UE that already has a C-RNTI |
| 59 | Short Truncated BSR | One octet |
| 60 | Long Truncated BSR | Variable size, needs an L field |
| 61 | Short BSR | One octet: 3-bit LCG ID + 5-bit buffer size index |
| 62 | Long BSR | Variable size: an 8-bit LCG bitmap then one buffer size octet per reported group |
| 63 | Padding | Always last |
Table 5. UL-SCH LCID codepoints, TS 38.321 Table 6.2.1-2. The asymmetry at 0 and 52 exists purely so that the two CCCH sizes are distinguishable without a length field.
5.3 The extended LCID space
Rel-16 needed more control-element codepoints than the 6-bit field had left, and could not simply reuse reserved values because a receiver that does not recognise a fixed-size CE cannot find the next subheader — there is no length field to skip over. The solution was two escape codepoints that introduce a wider field.
How much room the escape actually bought.
Native 6-bit LCID: 64 codepoints (0 .. 63)
One-octet eLCID via LCID 34: 256 values → codepoints 64 .. 319
Two-octet eLCID via LCID 33: 65 536 values → codepoints 320 .. 65 855
Total addressable: 64 + 256 + 65 536 = 65 856 codepoints
The cost is one or two extra octets per subPDU that uses the extension, which is why the escape was reserved for control elements that are rare and never for logical channel identities. Logical channels are still capped at 32 per UE per direction.
In a decoded log the eLCID appears as a two-line construct: an LCID of 33 or 34, then a codepoint. Older decoders that predate Rel-16 print LCID 33 or 34 as reserved and then desynchronise on the rest of the PDU, which produces a spray of nonsense subheaders after the first extended CE. That signature — one plausible subPDU followed by garbage — is almost always a decoder version problem, not a radio problem.
6. Transport Channels and Their Properties
A transport channel is defined by how MAC offers data to the physical layer, and the property list is short because it is exactly the set of things the physical layer has to know.
| Transport channel | Dir | HARQ | Scheduling | Audience | Coding |
|---|---|---|---|---|---|
BCH | DL | No | Fixed — tied to the SSB burst set | Broadcast, whole cell | Polar, fixed transport block size |
PCH | DL | No | Dynamic, but constrained to paging occasions | Broadcast, whole cell; content targets specific UEs | LDPC, on PDSCH |
DL-SCH | DL | Yes | Dynamic, plus semi-persistent scheduling | Both — broadcast SI and UE-dedicated data | LDPC |
UL-SCH | UL | Yes | Dynamic grants, plus Type 1 and Type 2 configured grants | UE-specific | LDPC |
RACH | UL | No | Not scheduled — contention-based occasions | UE-specific per attempt | None. There is no transport block; the preamble is the information |
SL-BCH | SL | No | Fixed — tied to the S-SSB | Broadcast to all nearby UEs | Polar, fixed transport block size |
SL-SCH | SL | Yes — blind repetition or feedback-based | Mode 1 (gNB-scheduled) or mode 2 (UE-autonomous) | Unicast, groupcast or broadcast | LDPC |
Table 6. Transport channel properties. DL-SCH is the only one that is HARQ-protected and dynamically scheduled and able to carry either broadcast or dedicated content — which is why almost everything ended up on it.
Two entries in that table are unusual enough to be worth stating plainly. RACH carries no transport block. It exists in the model so that the preamble has a place in the layered picture, but there is no MAC PDU, no CRC, no coding and no HARQ; the physical layer detects a sequence and reports an index and a timing offset. BCH has a fixed transport format, meaning the transport block size, the coding, the rate matching and the resource mapping are all constants rather than scheduler decisions — because a UE has to be able to decode it before it knows anything at all.
PCH is a broadcast transport channel whose content is UE-specific. Both halves of that sentence matter. Every UE in the paging occasion decodes the same PDSCH, then searches the Paging message's record list for its own identity. So a UE reporting that it decoded a paging message is not reporting that it was paged, and a Paging message containing 20 records was decoded by every idle UE monitoring that occasion. See the companion 19 Paging document.
7. Transport Blocks, CRC, and Channel Coding
The transport block is where the layered model becomes arithmetic. MAC hands the physical layer a bit sequence of a size the scheduler chose; the physical layer attaches a CRC, possibly segments, encodes, rate matches to the resource elements available, and modulates. All of that is specified in TS 38.212.
| Channel | Code | CRC | Payload | Rate matching |
|---|---|---|---|---|
DL-SCH / UL-SCH / PCH | LDPC, base graph 1 or 2 | 24 bits (CRC24A) if the TB is longer than 3824 bits, otherwise 16 bits. A further 24 bits (CRC24B) per code block when segmented | The transport block size chosen by the scheduler, up to about 1.2 Mbit per TB at the highest configurations | To the resource elements the grant provides, after subtracting DM-RS and any overlapping signals |
BCH | Polar, N = 512 | 24 bits (CRC24C) | Fixed: 24 bits of MIB plus 8 additional timing bits = 32 bits, so 56 bits into the encoder | Fixed to E = 864 bits — the 432 available PBCH data REs at QPSK |
DCI on PDCCH | Polar | 24 bits (CRC24C), with the RNTI XORed into the CRC | Format-dependent, roughly 20 to 140 bits | To the CCEs of the selected aggregation level: 1, 2, 4, 8 or 16 CCEs, each 6 REGs of 12 REs |
UCI on PUCCH or PUSCH | Repetition / simplex / Reed-Muller block code up to 11 bits; Polar above 11 | None below 12 bits; 6 bits (CRC6) for 12–19 bits; 11 bits (CRC11) for 20 bits and above | 1 bit (an ACK) to over a thousand (a full CSI report) | To the PUCCH resource, bounded by the configured maxCodeRate |
SL-BCH / SL-SCH | Polar / LDPC | 24 bits | Fixed for SL-BCH; scheduler-chosen for SL-SCH | As for the Uu equivalents |
Table 7. Coding per channel, TS 38.212 clause 5 onward. The pattern is consistent: LDPC where the block is large and HARQ exists, Polar where the block is small and there is no second chance.
The reason for the split is not aesthetic. LDPC has excellent performance on long blocks and supports incremental-redundancy HARQ naturally through its rate-matching circular buffer, which is exactly what a data channel needs. Polar performs better on very short blocks and has no HARQ requirement to satisfy, which is exactly what control needs. BCH sits at the extreme: 56 bits into 864, a code rate of about 0.065, because there is no retransmission, no feedback and no prior channel knowledge.
Segmenting a transport block. A DL-SCH transport block of A = 8 456 bits at a code rate above 0.67:
A = 8 456 > 3 824 → attach CRC24A → B = 8 456 + 24 = 8 480 bits
A > 3 824 and R > 0.67 → base graph 1 → K_cb = 8 448
B = 8 480 > K_cb, so segmentation is required:
C = ceil(B / (K_cb − 24)) = ceil(8 480 / 8 424) = 2 code blocks
B' = B + C × 24 = 8 480 + 48 = 8 528 bits
K_r = B' / C = 4 264 bits per code block, then zero-padded up to the nearest lifting-size-compatible K
Two code blocks means two independent CRC24B checks, which is what makes code-block-group HARQ retransmission possible: the receiver can report which code block failed instead of failing the whole transport block. See the companion 05 HARQ document.
A transport block that fails its CRC is discarded whole, and MAC never sees it — so a logical channel cannot be blamed for a decode failure. This is worth being firm about when reading logs: PDSCH CRC failures, RLC retransmissions and PDCP reordering timeouts are three different layers reporting one event, and the count of each will differ. Only the PDCP-level loss is a loss to the application.
8. Physical Channels and Physical Signals
TS 38.211 cl. 4.3.2 draws a distinction that the word "channel" tends to blur: a physical channel is a set of resource elements carrying information that originated in a higher layer, while a physical signal is a set of resource elements used by the physical layer that carries no higher-layer information at all. PSS, SSS, DM-RS, PT-RS, CSI-RS and SRS are signals. They are not channels, they have no logical or transport channel above them, and they never appear in any mapping diagram.
| Physical channel | Dir | Carries | Notes |
|---|---|---|---|
PBCH | DL | BCH — i.e. the MIB plus 8 timing bits | Fixed position inside the SS/PBCH block: 576 REs across symbols 1, 2 and 3. See the companion 02 Radio Frame Structure document |
PDSCH | DL | DL-SCH and PCH transport blocks | Dynamically scheduled, and can also carry a successRAR or a paging message. May carry one or two transport blocks per slot per UE |
PDCCH | DL | DCI — nothing from any higher layer | Transmitted in a CORESET, found by blind decoding of candidates in a search space; CRC scrambled by an RNTI |
PUSCH | UL | UL-SCH transport blocks, and UCI when multiplexed | Dynamically granted or configured. Carries MSG3, and MSGA payload in 2-step RACH |
PUCCH | UL | UCI — nothing from any higher layer | Five formats (§11). Can be pre-empted by a PUSCH in the same slot, in which case the UCI rides on the PUSCH instead |
PRACH | UL | A random access preamble sequence | No transport block, no coding. The information is which sequence and when |
Table 8. Physical channels. Only three of the six sit under a transport channel; the other three terminate their own chains.
| Physical signal | Dir | Purpose | Where it is configured |
|---|---|---|---|
PSS / SSS | DL | Time and frequency synchronisation, and half of the physical cell identity each: N_ID_cell = 3 × N_ID(1) + N_ID(2) | Not configurable. Fixed inside the SS/PBCH block |
DM-RS | DL and UL | Coherent demodulation of the channel it accompanies. Separate DM-RS exists for PDSCH, PUSCH, PDCCH and PBCH | DMRS-DownlinkConfig / DMRS-UplinkConfig; PBCH DM-RS is fixed |
PT-RS | DL and UL | Phase-tracking against oscillator phase noise. Essentially an FR2 feature | PTRS-DownlinkConfig / PTRS-UplinkConfig |
CSI-RS | DL | Channel state measurement, beam management, and interference measurement (CSI-IM). Also used for radio link monitoring and mobility | NZP-CSI-RS-Resource, CSI-IM-Resource, CSI-ResourceConfig |
SRS | UL | Uplink channel sounding, for uplink scheduling, beam management and downlink reciprocity in TDD | SRS-Config, SRS-Resource |
TRS | DL | Tracking reference signal — a CSI-RS resource set configured for tracking rather than reporting | A NZP-CSI-RS-ResourceSet with trs-Info present |
Table 9. Physical signals. None of them has a transport channel, a MAC header, a CRC or a HARQ process — which is why a 'CSI-RS failure' is never a decode failure, only a measurement that came back wrong.
Calling PSS and SSS "channels" is common and harmless in conversation and wrong in a specification. The practical consequence: there is no "SSS BLER", because there is nothing to decode — SSS is correlated against 336 hypotheses, and the outcome is a cell identity, not a bit sequence. If a tool reports an error rate for a physical signal, find out what it is actually measuring.
9. RNTIs: Who Addresses What
Because five downlink logical channels share two physical channels, the receiver needs something to tell it what it is about to decode. That something is the RNTI used to scramble the PDCCH CRC. The RNTI is therefore part of the channel mapping, not an addressing detail bolted on beside it — it is the only thing that distinguishes a PDSCH carrying SIB1 from a PDSCH carrying a video frame.
| RNTI | Value | Scrambles the CRC of | Which identifies content as |
|---|---|---|---|
SI-RNTI | 0xFFFF | A PDCCH scheduling a PDSCH | BCCH → DL-SCH: SIB1 or an SI message, in a transparent MAC PDU |
P-RNTI | 0xFFFE | A PDCCH scheduling a PDSCH, or a DCI 1_0 with no PDSCH at all | PCCH → PCH: a Paging message; or, with no PDSCH, a Short Message carried in the DCI itself |
RA-RNTI | 0x0001–0xFFEF, computed from the PRACH occasion | A PDCCH scheduling a PDSCH | A RAR MAC PDU (MSG2). Not a logical channel at all — the RAR is built by MAC directly |
MSGB-RNTI | 0x0001–0xFFEF, RA-RNTI + 17920 | A PDCCH scheduling a PDSCH | A MSGB MAC PDU (2-step RACH) |
TC-RNTI | 0x0001–0xFFEF, assigned in the RAR | A PDCCH scheduling a PUSCH or a PDSCH | MSG3 retransmission grants, and MSG4 — CCCH → DL-SCH plus a UE Contention Resolution Identity CE |
C-RNTI | 0x0001–0xFFEF | A PDCCH scheduling a PDSCH or a PUSCH | DCCH and DTCH → DL-SCH / UL-SCH: everything dedicated |
MCS-C-RNTI | 0x0001–0xFFEF | A PDCCH scheduling a PDSCH or a PUSCH | The same content as C-RNTI, but selects the alternative MCS table. Same channels, different modulation interpretation |
CS-RNTI | 0x0001–0xFFEF | A PDCCH activating, reactivating or releasing configured scheduling | SPS in the downlink, configured grant Type 2 in the uplink |
SFI-RNTI | 0x0001–0xFFEF | A PDCCH carrying DCI format 2_0 | Slot format indication. No transport channel and no PDSCH |
INT-RNTI | 0x0001–0xFFEF | A PDCCH carrying DCI format 2_1 | Pre-emption indication: resources the UE should assume carried nothing for it |
TPC-PUSCH-RNTI / TPC-PUCCH-RNTI | 0x0001–0xFFEF | A PDCCH carrying DCI format 2_2 | Group power control commands |
TPC-SRS-RNTI | 0x0001–0xFFEF | A PDCCH carrying DCI format 2_3 | Group SRS power control commands |
CI-RNTI | 0x0001–0xFFEF | A PDCCH carrying DCI format 2_4 | Rel-16 uplink cancellation: stop transmitting in these resources |
PS-RNTI | 0x0001–0xFFEF | A PDCCH carrying DCI format 2_6 | Rel-16 power saving indication outside DRX Active Time |
SP-CSI-RNTI | 0x0001–0xFFEF | A PDCCH activating semi-persistent CSI reporting on PUSCH | A PUSCH that carries CSI and no UL-SCH data |
G-RNTI / G-CS-RNTI | 0x0001–0xFFEF | A PDCCH scheduling a group-common PDSCH | Rel-17 multicast/broadcast services: one PDSCH for many UEs |
| Reserved | 0x0000, 0xFFF0–0xFFFD | -- | Never used for addressing. A log showing one of these is a decode error |
Table 10. RNTI to content mapping, TS 38.321 cl. 7.1. Everything except SI-RNTI and P-RNTI is assigned per UE or per group, so the same numeric value means different things in different cells.
The two fixed values are fixed for a reason: a UE must be able to receive system information and paging before it has any assigned identity, so SI-RNTI = 0xFFFF and P-RNTI = 0xFFFE are the same in every NR cell in the world. Everything else is allocated from 0x0001–0xFFEF, which is why C-RNTI 0x4C08 in one cell and 0x4C08 in the next cell are unrelated and why a C-RNTI in a log is meaningless without the cell.
P-RNTI addressing a DCI 1_0 with no associated PDSCH is a real and easily-missed case. The Short Message field in that DCI carries systemInfoModification and ETWS/CMAS indication bits, so the network can announce an SI change without transmitting a paging message at all. A log showing a P-RNTI PDCCH and no PDSCH is not a scheduling error — check the Short Message indicator bit in the DCI. See the companion 17 System Information document.
10. DCI: Formats and Content
DCI is the content of PDCCH. It has no logical channel and no transport channel; it is generated by the physical layer of the gNB and consumed by the physical layer of the UE, and its only relationship to the mapping model is that it tells the UE which mapping to expect next.
| Format | Purpose | Search space | RNTI | Notes |
|---|---|---|---|---|
0_0 | Schedule one PUSCH — fallback format | Common or UE-specific | C-RNTI, TC-RNTI, MCS-C-RNTI, CS-RNTI | Deliberately minimal so it works before dedicated configuration exists. Its size is derived from the initial UL BWP |
0_1 | Schedule one PUSCH — full-featured | UE-specific only | C-RNTI, MCS-C-RNTI, CS-RNTI, SP-CSI-RNTI | Adds BWP indicator, SRS resource indicator, precoding, CBG transmission information, multi-layer support |
0_2 | Schedule one PUSCH — configurable-size format | UE-specific only | C-RNTI, MCS-C-RNTI, CS-RNTI | Rel-16. Field presence and widths are configurable so the DCI can be made small for URLLC reliability |
1_0 | Schedule one PDSCH — fallback format | Common or UE-specific | C-RNTI, TC-RNTI, MCS-C-RNTI, CS-RNTI, SI-RNTI, P-RNTI, RA-RNTI, MSGB-RNTI | The one format that carries broadcast content. Field interpretation differs by RNTI — the SI-RNTI variant has no HARQ process number, the P-RNTI variant has a Short Message field |
1_1 | Schedule one PDSCH — full-featured | UE-specific only | C-RNTI, MCS-C-RNTI, CS-RNTI | Adds BWP indicator, antenna ports, TCI, CBG fields, two transport blocks |
1_2 | Schedule one PDSCH — configurable-size format | UE-specific only | C-RNTI, MCS-C-RNTI, CS-RNTI | Rel-16, URLLC |
2_0 | Slot format indication, and from Rel-16 available RB sets, channel occupancy duration and search space group switching | Common | SFI-RNTI | Group-common. See §14 of the companion 02 Radio Frame Structure document |
2_1 | Pre-emption indication | Common | INT-RNTI | Tells a UE that PRBs and symbols it was scheduled in carried nothing for it |
2_2 | TPC commands for PUCCH and PUSCH | Common | TPC-PUCCH-RNTI, TPC-PUSCH-RNTI | Group power control |
2_3 | TPC commands for SRS | Common | TPC-SRS-RNTI | -- |
2_4 | Uplink cancellation indication | Common | CI-RNTI | Rel-16. Clears uplink resources for a higher-priority UE |
2_5 | Availability of soft resources | Common | AI-RNTI | Rel-16, IAB nodes |
2_6 | Power saving information outside DRX Active Time | Common | PS-RNTI | Rel-16. The wake-up / go-to-sleep indication |
2_7 | Paging early indication | Common | PEI-RNTI | Rel-17. Lets a UE skip the paging occasion entirely |
3_0 / 3_1 | Schedule NR sidelink / LTE sidelink | UE-specific | SL-RNTI, SLCS-RNTI | Mode 1 sidelink resource allocation |
Table 11. DCI formats, TS 38.212 cl. 7.3.1. Only 0_0/0_1/0_2 and 1_0/1_1/1_2 schedule a transport channel; every 2_x format is pure physical-layer control with no data underneath.
10.1 What is actually in a scheduling DCI
For DCI format 1_0 with a C-RNTI, the fields in order are: format identifier (1 bit), frequency-domain resource assignment, time-domain resource assignment (4 bits, an index into a configured table of start-symbol and length pairs), VRB-to-PRB mapping (1 bit), modulation and coding scheme (5 bits), new data indicator (1 bit), redundancy version (2 bits), HARQ process number (4 bits), downlink assignment index (2 bits), TPC command for the scheduled PUCCH (2 bits), PUCCH resource indicator (3 bits) and PDSCH-to-HARQ-feedback timing indicator (3 bits). That is a complete description of one PDSCH and its acknowledgement.
The four-bit HARQ process number is why Rel-15 has 16 downlink HARQ processes, and the two-bit redundancy version is why there are four RVs. Neither number is a design choice made in isolation — both are DCI field widths, and both were revisited in Rel-17 for non-terrestrial networks, where a round trip can exceed the time 16 processes can cover. See the companion 05 HARQ document.
DCI 1_0 addressed to SI-RNTI uses the same format with a different field interpretation: there is no HARQ process number, no NDI and no DAI, because system information is not HARQ-protected and not UE-acknowledged; the freed bits become reserved. This is why a decoder that applies the C-RNTI field layout to an SI-RNTI DCI produces a plausible-looking but wrong PRB allocation — a failure mode worth recognising, because the symptom is a PDSCH decode failure with perfect PDCCH statistics.
11. UCI and the PUCCH Formats
UCI is the uplink counterpart: physical-layer control, no logical channel, no transport channel, no MAC PDU. It carries four kinds of information:
- HARQ-ACK — acknowledgement of received PDSCH transport blocks or code block groups. The number of bits is the codebook size, which is semi-statically or dynamically determined and can be anything from 1 to several hundred with carrier aggregation.
- Scheduling Request (SR) — a single bit per configured SR configuration, meaning "I have uplink data and no grant". See the companion 10 BSR, PHR, SR document.
- CSI — channel state reports, split into Part 1 (fixed size: rank indicator, CQI, and the information needed to size Part 2) and Part 2 (variable size, dependent on Part 1).
- Link Recovery Request — Rel-16, for beam failure recovery on a secondary cell where RACH is not available. See the companion 12 Beam Failure Recovery document.
| Format | UCI payload | Symbols | PRBs | How it works |
|---|---|---|---|---|
0 | 1 or 2 bits | 1 or 2 | 1 | Sequence selection — the UE transmits one of several cyclic shifts of a base sequence and the shift is the payload. No DM-RS, because there is nothing to demodulate coherently |
1 | 1 or 2 bits | 4 to 14 | 1 | BPSK or QPSK with DM-RS, spread by a time-domain orthogonal cover code so several UEs share the same PRB. The long, low-rate choice for cell-edge acknowledgements |
2 | More than 2 bits | 1 or 2 | 1 to 16 | QPSK with DM-RS, no spreading. The short high-capacity format — used when a large HARQ codebook or a CSI report has to fit in a couple of symbols |
3 | More than 2 bits | 4 to 14 | 1 to 6, 8, 9, 10, 12, 15 or 16 | DFT-spread OFDM with π/2-BPSK or QPSK. The long high-capacity format, and the only one that can carry a really large CSI report from the cell edge |
4 | More than 2 bits | 4 to 14 | 1 | Like format 3 but with pre-DFT orthogonal spreading of factor 2 or 4, so two or four UEs share one PRB at the cost of payload |
Table 12. PUCCH formats, TS 38.211 cl. 6.3.2 and TS 38.213 cl. 9.2. Formats 0 and 2 are the short formats, 1, 3 and 4 the long ones; the payload split at 2 bits is the dividing line between sequence-based and coded transmission.
Choosing a format is not a free decision. The UE picks from the resources the network configured, and the network must configure at least one that fits the largest UCI payload the UE could ever have to send. Under 3 bits: format 0 or 1. Over 2 bits: format 2, 3 or 4, subject to maxCodeRate.
A 20-bit HARQ codebook with maxCodeRate = 0.25 needs at least 20 / 0.25 = 80 coded bits, i.e. 40 QPSK symbols. Format 2 over 2 symbols gives 8 REs per PRB for data (4 of the 12 REs per symbol are DM-RS), so ceil(40 / 8) = 5 PRBs. If the configured format 2 resource is 2 PRBs, the UCI cannot be transmitted and the UE drops the lowest-priority part of it — usually CSI, silently.
UCI dropping is the single most under-diagnosed uplink problem, because nothing reports it. The UE follows the priority rules TS 38.213 cl. 9.2.5 and discards CSI, then SR, before it discards HARQ-ACK; the network simply receives less than it asked for. Symptom: CSI reports arriving at a lower rate than configured, with no errors anywhere. Check the PUCCH resource size against the worst-case payload before suspecting the reporting configuration.
12. Sidelink Channel Mapping
NR sidelink (PC5, used for V2X and for public-safety direct communication) reuses the three-layer model wholesale, which makes it easy to read once you know the Uu version. The differences are all consequences of there being no base station in the path.
| Channel | Layer | Carries |
|---|---|---|
SBCCH | Logical | MasterInformationBlockSidelink — sidelink synchronisation and resource-pool information, so a UE with no network coverage can still find a timing reference |
SCCH | Logical | PC5-RRC (RRCReconfigurationSidelink and its response) and PC5-S (direct link establishment, keep-alive, release) |
STCH | Logical | Sidelink user data, through SDAP and PDCP as on Uu |
SL-BCH | Transport | SBCCH with a fixed transport format, Polar-coded, no HARQ |
SL-SCH | Transport | SCCH and STCH. HARQ by blind repetition, or with PSFCH feedback where configured |
PSBCH | Physical | SL-BCH, inside the S-SSB alongside S-PSS and S-SSS |
PSSCH | Physical | SL-SCH, plus the second-stage SCI which is multiplexed into the PSSCH resource |
PSCCH | Physical | The first-stage SCI only. No transport channel — the sidelink equivalent of PDCCH |
PSFCH | Physical | HARQ feedback only. No transport channel — the sidelink equivalent of PUCCH |
Table 13. Sidelink channels. The two-stage SCI is the notable structural difference from Uu: the first stage is on its own physical channel so that any nearby UE can read it for sensing, while the second stage is inside the data resource and only the intended receiver needs it.
The two-stage SCI exists because of mode 2, where UEs allocate their own resources by sensing what others have reserved. The first-stage SCI on PSCCH carries the resource reservation and priority in the clear, so every UE in range can build a picture of occupancy without decoding anyone's data. That is a genuinely different design goal from PDCCH, which is addressed to one UE and deliberately hard for others to read.
13. Multiplexing Rules: What Can Share a Transport Block
The mapping diagrams say what may map where. The multiplexing rules say what may travel together, and they are what a decoder actually relies on.
| Rule | Applies to | Why | Consequence in a log |
|---|---|---|---|
| One MAC PDU per transport block, one transport block per HARQ process | DL-SCH, UL-SCH | HARQ operates on transport blocks; a partially-delivered MAC PDU has no meaning | A HARQ retransmission repeats the whole PDU, so every SDU in it is delayed by the retransmission, not just the one that mattered |
| A MAC PDU may mix SDUs from several logical channels, plus several MAC CEs, plus padding | DL-SCH, UL-SCH | It is the only way to fill a grant efficiently | One PDSCH can carry DCCH signalling and DTCH data in the same transport block. Do not assume a grant belonged to one bearer |
| Downlink order: MAC CEs first, then MAC SDUs, then padding | DL-SCH | Control elements are fixed or small; putting them first lets the UE act on them before parsing the bulk | A Timing Advance Command CE will always be at the front of the PDU that carries it |
| Uplink order: MAC SDUs first, then MAC CEs, then padding | UL-SCH | The reverse, because the UE builds the SDU content against the grant and then appends whatever reports fit | A BSR appears after the data it reports on, which is exactly what makes a padding BSR possible |
BCCH and PCCH use a transparent MAC PDU: the SDU alone, no subheader | BCCH → DL-SCH, PCCH → PCH, BCCH → BCH | There is nothing to multiplex — the whole PDSCH is one broadcast message, and the RNTI already said what it is | There is no LCID for BCCH or PCCH anywhere in the LCID tables. Do not go looking for one |
| Broadcast and dedicated content never share a PDSCH | All downlink | The RNTI addresses the whole physical channel instance, and one PDSCH has one RNTI | A UE that is receiving SIB1 in a given slot is not simultaneously receiving its own data in that slot on the same PDSCH |
| Which logical channel gets how much of an uplink grant is decided by logical channel prioritisation | UL-SCH | Bearers have different priorities and prioritised bit rates | A high-priority bearer starving a low-priority one is correct behaviour. See the companion 09 Logical Channel Prioritisation document |
Table 14. Multiplexing rules and what each one implies when you are staring at a decoded PDU. The placement rules are the ones a decoder depends on.
The byte budget of that PDU. The MAC SDU is 58 bytes, and inside it:
RLC AM header (12-bit SN, complete SDU, no SO) ....... 2 bytes
PDCP Data PDU header (12-bit SN) .................... 2 bytes
SDAP header (DL: RDI, RQI, QFI) ..................... 1 byte
IP packet ........................................... 53 bytes
Plus the MAC subheader itself (2 bytes) and the 2-byte TA Command subPDU: 64 bytes of transport block for 53 bytes of payload, i.e. 17 % header overhead.
On a 1 400-byte packet the same headers cost 0.5 %. This is why small-packet traffic is expensive and why PDCP header compression and SDAP header suppression exist.
14. End-to-End Traces: Six Messages Down the Stack
The chains below are structural: the field names, sizes and encodings follow 3GPP, while the identity and sequence-number values are constructed for this document so that the six traces stay consistent with each other. They are not a capture from any deployed or lab network.
| Message | Logical | Transport | Physical | RNTI | Headers added |
|---|---|---|---|---|---|
MIB | BCCH | BCH | PBCH | none | None at all. RRC → 24 bits → PHY adds 8 timing bits and a 24-bit CRC. No RLC header (TM), no MAC subheader (transparent MAC PDU) |
SIB1 | BCCH | DL-SCH | PDSCH | SI-RNTI 0xFFFF | None above the transport block. RLC TM, transparent MAC PDU, then a 24-bit transport block CRC |
Paging | PCCH | PCH | PDSCH | P-RNTI 0xFFFE | None above the transport block, same as SIB1 |
RRCSetupRequest | CCCH (48-bit) | UL-SCH | PUSCH | TC-RNTI (from the RAR) | 1-byte R/LCID subheader with LCID 52, then the transport block CRC. No RLC header (TM), no PDCP, no SDAP |
| DL data PDU | DTCH (DRB 1) | DL-SCH | PDSCH | C-RNTI | SDAP 1 byte, PDCP 2 bytes, RLC AM 2 bytes, MAC subheader 2 bytes, then the transport block CRC |
HARQ-ACK | none | none | PUCCH | none — implicit in the resource | None. UCI is 1–2 bits and gets a sequence, not a header |
Table 15. The summary table. The header column is the interesting one: overhead ranges from nothing at all to seven bytes, entirely determined by which logical channel was used.
14.1 MIB — the shortest chain in NR
RRC: MIB (24 bits of ASN.1, unaligned PER)
|
+--> logical channel BCCH -- RLC transparent mode: NO RLC header
|
+--> transport channel BCH -- transparent MAC PDU: NO MAC subheader
| PHY prepends 8 additional payload bits:
| SFN 4 LSBs (4), half-frame bit (1), k_SSB MSB or SSB idx (3)
| = 32-bit PBCH payload
| + 24-bit CRC (CRC24C) -> 56 bits
| Polar encode, N = 512
| rate match to E = 864 bits -> code rate ~ 0.065
| QPSK -> 432 REs
+--> physical channel PBCH -- symbols 1,2,3 of the SSB
Total overhead above the physical layer: ZERO bytes.
Total UE prior knowledge required: the SSB position. Nothing else.14.2 SIB1 — broadcast, but on the data channel
RRC: BCCH-DL-SCH-Message { message: c1: systemInformationBlockType1 }
| ~ 400 - 900 bytes of ASN.1 depending on configuration
+--> logical channel BCCH -- RLC TM: NO RLC header, NO segmentation
|
+--> transport channel DL-SCH
| transparent MAC PDU: NO MAC subheader, NO LCID
| A = TBS bits, A > 3824 -> CRC24A -> B = A + 24
| LDPC base graph 1 or 2 depending on A and R
| segmentation if B > K_cb
+--> physical channel PDSCH
scheduled by DCI 1_0, CRC scrambled by SI-RNTI 0xFFFF
in the Type0-PDCCH common search space of CORESET#0
-- Why SIB1 is not on BCH: BCH's transport format is FIXED at 32 payload
-- bits. SIB1 is two orders of magnitude larger and its size varies with
-- configuration, so it needs a scheduled, variable-size transport channel.14.3 Paging — a broadcast channel carrying targeted content
RRC: PCCH-Message { message: c1: paging }
| pagingRecordList: up to 32 records, each with a ue-Identity
+--> logical channel PCCH -- RLC TM
|
+--> transport channel PCH -- transparent MAC PDU
| no HARQ: an idle UE has no HARQ entity and cannot ACK
+--> physical channel PDSCH
scheduled by DCI 1_0, CRC scrambled by P-RNTI 0xFFFE
in the Type2-PDCCH common search space
-- The alternative path with no PDSCH at all:
DCI 1_0 with P-RNTI, Short Message Indicator = 'short message only'
Short Message (8 bits):
bit 1 systemInfoModification
bit 2 etwsAndCmasIndication
bits 3-8 reserved / later releases
-- no PCCH, no PCH, no transport block. The DCI IS the message.14.4 RRCSetupRequest — the smallest real uplink message
RRC: UL-CCCH-Message { message: c1: rrcSetupRequest }
| rrcSetupRequest
| ue-Identity CHOICE { ng-5G-S-TMSI-Part1 | randomValue } 40 bits
| establishmentCause ENUMERATED, 16 values 4 bits
| spare BIT STRING (SIZE(1)) 1 bit
| + 3 bits of CHOICE encoding = 48 bits = 6 bytes
|
+--> logical channel CCCH (48-bit variant) -- RLC TM, no header
|
+--> transport channel UL-SCH
| MAC subheader: R | R | LCID = 52 -- 1 byte, R/LCID form,
| no L field: fixed size
| MAC PDU = 1 + 6 = 7 bytes, padded to the TBS
| A <= 3824 -> 16-bit CRC
+--> physical channel PUSCH
granted by the UL grant inside the RAR, TC-RNTI 0x4C08
-- The first 48 bits of this CCCH SDU are what the gNB echoes back in the
-- UE Contention Resolution Identity MAC CE (DL LCID 62). That is why CCCH
-- must be exactly 48 bits and why it cannot be segmented.14.5 A downlink data PDU — the full seven bytes of header
Application: 53-byte IP packet on QoS flow 5
|
+--> SDAP + 1 byte { RDI | RQI | QFI = 5 } -> 54 bytes
| (SDAP header may be suppressed if configured)
+--> PDCP + 2 bytes { D/C | R R R | SN(12) } -> 56 bytes
| payload ciphered; MAC-I appended only if the DRB has
| integrity protection configured (+ 4 bytes)
+--> RLC AM + 2 bytes { D/C | P | SI | SN(12) } -> 58 bytes
| SI = 00 -> complete SDU, no segment offset
+--> logical channel DTCH, LCID 4
|
+--> transport channel DL-SCH
| MAC subheader R | F=0 | LCID=4 , L = 58
| -> 2 + 58 = 60 bytes
| plus a 2-byte TA Command subPDU at the front
| plus padding subheader = 64-byte TB
+--> physical channel PDSCH, C-RNTI 0x4C08
53 bytes of payload in a 64-byte transport block: 17 % overhead.14.6 HARQ-ACK — the chain that does not exist
PHY (UE): PDSCH transport block CRC check passes for HARQ process 6
|
+--> UCI: 1 bit of HARQ-ACK
| no logical channel -- nothing came from RLC
| no transport channel -- no transport block, no CRC
| no MAC PDU -- MAC is not involved at all
|
| PUCCH resource selected by the PUCCH resource indicator in the
| scheduling DCI; slot given by the PDSCH-to-HARQ feedback timing
| indicator (k1)
+--> physical channel PUCCH format 1
1 PRB, 4-14 symbols, BPSK on the data symbols, DM-RS on the
others, spread by a time-domain OCC
-- No RNTI is needed: the resource itself identifies the UE, because the
-- network told this UE and no other to use it.15. Failure Modes and What Each One Means
| Failure | Detected by | Immediate effect | Diagnostic pointer |
|---|---|---|---|
| Unknown LCID in a received MAC PDU | Receiving MAC | The subPDU is discarded. If the LCID was a fixed-size CE the receiver cannot find the next subheader, so the rest of the PDU is lost too | A single plausible subPDU followed by nonsense is the signature. Almost always a decoder that predates the release of the CE, especially around the eLCID escapes (LCID 33 / 34) |
| Logical channel configured on one side only | Receiving MAC — it has no RLC entity for that LCID | Every SDU on that channel is dropped. RLC never sees it, so there are no RLC retransmissions and no PDCP gap reports | Compare logicalChannelIdentity in RLC-BearerConfig against the LCIDs actually appearing in PDUs. A bearer with traffic counters at the sender and zero at the receiver |
| RLC mode mismatch between the two ends | RLC | Header misparse: an AM header read as UM, or a TM channel given a header it does not expect | Symptom is SDU-level corruption with clean MAC and PHY statistics — the transport block decoded perfectly and the bytes are still wrong |
| Wrong RNTI assumed for a PDSCH | The UE, silently | The DCI descrambles (CRC passes by chance is rare, so usually the DCI is simply not found), or the DCI field layout is misapplied | Perfect PDCCH detection statistics with failing PDSCH decodes. Check whether an SI-RNTI or P-RNTI DCI 1_0 is being parsed with the C-RNTI field layout (§10) |
| PUCCH resource too small for the UCI payload | Nobody reports it | The UE drops the lowest-priority UCI — CSI first, then SR. HARQ-ACK survives | CSI reports arriving less often than configured, with no errors anywhere. Recompute the payload against maxCodeRate and the resource size (§11) |
| Transport block CRC failure | Receiving PHY | The whole block is discarded; MAC never sees any of it. HARQ retransmission follows if the channel supports it | Do not attribute this to a logical channel — the block was undecodable before any demultiplexing happened. Compare PHY BLER, RLC retransmission rate and PDCP loss separately (§7) |
| SIB1 or paging not decoded although the PDCCH was found | The UE | No system information, or a missed page | For SI-RNTI and P-RNTI, DCI 1_0 has a different field layout from the C-RNTI case. Also check that the transparent MAC PDU is not being parsed for a subheader that is not there |
| MSG3 CCCH SDU longer than 48 bits | gNB MAC | Contention resolution cannot work: the echoed identity will not match | Only RRCResumeRequest1 legitimately exceeds 48 bits, and it uses the 64-bit CCCH with LCID 0. A 48-bit CCCH carrying a 64-bit message is a configuration or encoder fault |
| A MAC CE arriving for a feature the UE did not declare | The UE — it treats the LCID as unknown | As for an unknown LCID: the CE is discarded and, if fixed-size, so is the rest of the PDU | Cross-check against the UE capability exchange. See the companion 26 UE Capability document |
| Padding subheader not last, or padding LCID used mid-PDU | Receiving MAC | Parsing stops; the remainder is lost | LCID 63 means 'everything from here to the end of the transport block is padding'. Any subheader after it is unreachable by definition |
Table 16. Channel-mapping failures. The pattern to internalise is that almost all of them are silent on at least one side, because the mapping is agreed by configuration and never negotiated on the wire.
Two of these deserve extra weight because they are so often misattributed. Unknown LCID looks like corruption and is a version mismatch. UCI dropping looks like a reporting-configuration problem and is a resource-sizing problem. Neither has anything to do with the radio, and both cost days if you start from the radio.
16. Illustrative Message Traces
Illustrative trace. Field names and encodings follow 3GPP; the values are constructed for this document and are not a capture from any deployed or lab network.
16.1 Walking a downlink MAC PDU, octet by octet
14:22:08.1035 [MAC-DL] C-RNTI 0x4C08, HARQ process 6, TBS 512 bits = 64 bytes
raw: 3D 21 04 3A 84 B4 83 68 05 45 00 00 35 ... 3F 00
offset 0 : 0x3D = 0011 1101 R=0 R=0 LCID=61 Timing Advance Command
offset 1 : 0x21 = 0010 0001 TAG=0 TA Command=33
-> fixed-size CE, 1 octet payload, no L field
offset 2 : 0x04 = 0000 0100 R=0 F=0 LCID=4 DTCH (DRB 1)
offset 3 : 0x3A = 58 L = 58 bytes follow
offset 4 : 0x84 = 1000 0100 D/C=1 P=0 SI=00 SN[11:8]=0100
offset 5 : 0xB4 SN[7:0] -> RLC SN 1204
-> RLC AM PDU, complete SDU, no poll requested
offset 6 : 0x83 = 1000 0011 D/C=1 R=000 SN[11:8]=0011
offset 7 : 0x68 SN[7:0] -> PDCP SN 872
offset 8 : 0x05 = 0000 0101 RDI=0 RQI=0 QFI=5
offset 9..61 53 bytes of IP
offset 62 : 0x3F = 0011 1111 R=0 R=0 LCID=63 Padding
offset 63 : 0x00 padding byte
-- reconciles: 2 (CE) + 2 (subhdr) + 58 (SDU) + 1 (pad subhdr) + 1 = 64Listing 1. The same PDU as the bitfield figure, decoded from the octets. Every layer's header is visible and the byte count reconciles exactly against the transport block size.
16.2 An uplink PDU: SDU first, control elements after
14:22:09.7150 [MAC-UL] C-RNTI 0x4C08, grant 24 PRB, TBS 1544 bits = 193 bytes
subPDU 1 R=0 F=0 LCID=1 L=42 DCCH (SRB1)
RLC AM PDU, SN 88
PDCP Data PDU, 12-bit SN 512, integrity-protected
RRC: MeasurementReport
measId 1, servCellId 0, rsrpResult 68, rsrqResult 41
subPDU 2 R=0 F=0 LCID=4 L=132 DTCH (DRB 1)
RLC AM PDU, SN 3311, SI=01 (first segment of a larger SDU)
subPDU 3 R=0 R=0 LCID=61 Short BSR
LCG ID=1 Buffer Size index=12 -> 1132 .. 1326 bytes
subPDU 4 R=0 R=0 LCID=57 Single Entry PHR
PH=41 (2.0 .. 3.0 dB) P_CMAX index=23
subPDU 5 R=0 R=0 LCID=63 Padding, 6 bytes
-- note the ORDER: SDUs (subPDU 1,2) come before CEs (3,4) in the uplink.
-- The BSR reports the buffer AFTER this PDU was built, which is what
-- makes it useful to the scheduler and why it must come last.Listing 2. An uplink PDU carrying two logical channels and two control elements. The placement order is the reverse of the downlink and is what makes a padding BSR meaningful.
16.3 The transparent case: SIB1 with no MAC header at all
14:19:55.0200 [PHY-DL] PDCCH candidate, CORESET#0, aggregation level 8
DCI format 1_0, CRC descrambled with SI-RNTI 0xFFFF -> match
frequencyDomainResourceAssignment ... 24 PRB from PRB 0
timeDomainResourceAssignment ........ row 2 (S=2, L=12)
vrb-to-PRB mapping .................. non-interleaved
modulationAndCodingScheme ........... 4
redundancyVersion ................... 0
systemInformationIndicator .......... sib1
reserved ............................ 15 bits
-- no HARQ process number, no NDI, no DAI: SI is not
-- HARQ-protected and not UE-acknowledged
14:19:55.0203 [MAC-DL] transport block 2 976 bits = 372 bytes
transparent MAC PDU: the entire TB is one MAC SDU
NO subheader, NO LCID, NO length field
14:19:55.0203 [RLC] BCCH is transparent mode: SDU delivered unchanged
14:19:55.0204 [RRC-DL-BCCH] BCCH-DL-SCH-Message
message: c1: systemInformationBlockType1
cellSelectionInfo, servingCellConfigCommon,
si-SchedulingInfo, ue-TimersAndConstants, ...
-- A decoder that looks for a MAC subheader here will read the first two
-- bytes of ASN.1 as R/F/LCID/L and produce a confident, wrong answer.Listing 3. Broadcast reception with no MAC or RLC header anywhere. The RNTI did all the work that a subheader would otherwise do.
16.4 A failure: an extended LCID an old decoder cannot follow
15:08:41.3300 [MAC-DL] C-RNTI 0x4C08, TBS 328 bits = 41 bytes
raw: 22 1C 3D 21 04 12 C4 ...
offset 0 : 0x22 = 0010 0010 R=0 F=0 LCID=34
-> Rel-16 one-octet eLCID escape
offset 1 : 0x1C = 28 eLCID 28 -> codepoint 64+28 = 92
DECODER A (Rel-18 aware):
codepoint 92 recognised, fixed size 2 octets, consumed
offset 4 : 0x04 R=0 F=0 LCID=4 DTCH -> parses cleanly to the end
DECODER B (Rel-15 tables only):
offset 0 : LCID=34 -> 'Reserved' in the Rel-15 table
no length field and no known size: the walk cannot resume
(a decoder that assumes zero length carries on anyway:)
offset 1 : 0x1C = 0001 1100 read as R=0 F=0 LCID=28
-> 'logical channel 28', which is not configured for this UE
offset 2 : 0x3D read as L = 61 bytes of SDU
61 claimed, 38 remaining in a 41-byte TB -> overrun
result: 'malformed MAC PDU'. The real control element and the real
DTCH SDU are both lost, and a logical channel that does not
exist appears in the per-LCID statistics.
-- Both decoders report success. Only one of them is right. This is the
-- most dangerous class of channel-mapping fault because it is silent.Listing 4. Two decoders, one PDU, two confident answers. An unrecognised fixed-size codepoint desynchronises everything after it, which is precisely why the eLCID escape exists rather than reusing reserved values.
Two things to take from that trace. First, traffic attributed to a logical channel identity that is not in the UE's RLC-BearerConfig list is never real — it is a desynchronised subheader walk, and the LCID it reports is just whatever byte happened to be there. Second, a rising "malformed MAC PDU" counter alongside normal PHY BLER points at the decoder, not the radio. Check the release of the LCID tables in use before anything else.
17. Configuration Reference (ASN.1 and Ranges)
Logical channels are configured one at a time, each as an RLC-BearerConfig that binds a logical channel identity to a radio bearer, an RLC configuration and a set of MAC parameters. There is no single "channel mapping" IE — the mapping is implicit in which bearer the logical channel serves.
RLC-BearerConfig ::= SEQUENCE {
logicalChannelIdentity LogicalChannelIdentity, -- INTEGER (1..32)
servedRadioBearer CHOICE {
srb-Identity SRB-Identity, -- INTEGER (0..3)
drb-Identity DRB-Identity -- INTEGER (1..32)
} OPTIONAL,
reestablishRLC ENUMERATED {true} OPTIONAL,
rlc-Config RLC-Config OPTIONAL,
mac-LogicalChannelConfig LogicalChannelConfig OPTIONAL,
...
}
RLC-Config ::= CHOICE {
am SEQUENCE {
ul-AM-RLC UL-AM-RLC, -- sn-FieldLength: size12 | size18
dl-AM-RLC DL-AM-RLC -- t-Reassembly, t-StatusProhibit, ...
},
um-Bi-Directional SEQUENCE { ul-UM-RLC, dl-UM-RLC },
um-Uni-Directional-UL SEQUENCE { ul-UM-RLC },
um-Uni-Directional-DL SEQUENCE { dl-UM-RLC },
...
}
-- note: there is no 'tm' branch. Transparent mode is used only for
-- BCCH, PCCH and CCCH, none of which is configured by RLC-BearerConfig.
LogicalChannelConfig ::= SEQUENCE {
ul-SpecificParameters SEQUENCE {
priority INTEGER (1..16),
prioritisedBitRate ENUMERATED {kBps0, kBps8, kBps16,
..., kBps65536, infinity},
bucketSizeDuration ENUMERATED {ms5, ms10, ms20, ms50,
ms100, ms150, ms300,
ms500, ms1000, ...},
allowedServingCells SEQUENCE OF ServCellIndex OPTIONAL,
allowedSCS-List SEQUENCE OF SubcarrierSpacing OPTIONAL,
maxPUSCH-Duration ENUMERATED {ms0p02, ms0p04, ms0p0625,
ms0p125, ms0p25, ms0p5,
...} OPTIONAL,
configuredGrantType1Allowed ENUMERATED {true} OPTIONAL,
logicalChannelGroup INTEGER (0..maxLCG-ID) OPTIONAL,
schedulingRequestID SchedulingRequestId OPTIONAL,
logicalChannelSR-Mask BOOLEAN,
logicalChannelSR-DelayTimerApplied BOOLEAN,
...
} OPTIONAL,
...
}
-- maxLCG-ID = 7, so eight logical channel groups for BSR reporting.Listing 5. Abridged from TS 38.331. ... marks omitted enumeration members and extension markers. Note the absence of a transparent-mode branch in RLC-Config.
| Parameter | Range or values | Typical | Effect on the mapping |
|---|---|---|---|
logicalChannelIdentity | 1 .. 32 | 1–3 for SRBs, 4 upward for DRBs | Is the LCID on the wire. Must match at both ends or every SDU on the channel is dropped |
srb-Identity | 0 .. 3 (4 from Rel-17) | 0, 1, 2 | SRB0 is CCCH and is never configured — it always exists. SRB1/2/3 use DCCH with fixed LCIDs 1/2/3 |
drb-Identity | 1 .. 32 | 1–4 | Identifies the bearer; the logical channel identity is separate and need not equal it |
rlc-Config | am, um-Bi-Directional, um-Uni-Directional-UL/DL | am for DCCH and default DRBs | Determines the RLC header size and whether ARQ exists. A mismatch corrupts SDUs with clean PHY statistics |
sn-FieldLength | size12 or size18 (AM); size6 or size12 (UM) | size12 | RLC header size, and the reordering window. Longer SNs cost a byte per PDU and tolerate more outstanding data |
priority | 1 .. 16 (1 is highest) | 1–5 for SRBs, 6–13 for DRBs | Which logical channel wins a contested uplink grant. See the companion 09 Logical Channel Prioritisation document |
prioritisedBitRate | kBps0 .. kBps65536, or infinity | kBps0 for most DRBs, infinity for SRBs | The guaranteed share of the grant before strict priority takes over |
logicalChannelGroup | 0 .. 7 | 0 for SRBs, 1–3 for DRBs | Which LCG this channel's buffer is reported under in a BSR. Eight groups, not thirty-two channels |
sdap-Config → sdap-HeaderDL / sdap-HeaderUL | present or absent | present for multi-flow DRBs | Whether the 1-byte SDAP header exists at all. Absent means one QoS flow per DRB, implicitly |
pdcp-Config → drb → pdcp-SN-SizeDL/UL | len12bits or len18bits | len18bits for high-throughput DRBs | PDCP header size, 2 or 3 bytes |
integrityProtection | enabled or absent | absent for most DRBs | Adds a 4-byte MAC-I to every PDCP PDU when enabled. See the companion 27 AS Security Mode document |
Table 17. Configuration that determines how much header a logical channel costs and how it competes for resources. Typical values are what many vendors ship, not specification requirements.
18. Release Deltas: Rel-15 to Rel-18
| Release | Change | Why it matters when reading channel mapping |
|---|---|---|
| Rel-15 | The three-layer model as described: five Uu logical channels, five transport channels, six physical channels, 64 LCID codepoints, DCI 0_0/0_1/1_0/1_1/2_0–2_3, PUCCH formats 0–4 | The baseline. Sections 3 to 11 are Rel-15 except where noted. |
| Rel-16 | Extended LCID (eLCID): escape codepoints 33 and 34 opening 65 792 additional control-element codepoints | A decoder without the Rel-16 tables desynchronises silently on any PDU containing an extended CE (§16.4). |
| Rel-16 | Sidelink: SCCH, STCH, SBCCH, SL-SCH, SL-BCH, PSSCH, PSCCH, PSBCH, PSFCH, two-stage SCI, DCI 3_0 / 3_1 | A whole parallel channel hierarchy appears in logs from V2X-capable devices (§12). |
| Rel-16 | DCI 0_2 / 1_2 with configurable field sizes; DCI 2_4 uplink cancellation; DCI 2_5 IAB soft resources; DCI 2_6 power saving | DCI size is no longer determined by format alone, so a size-based decoder heuristic can pick the wrong format. |
| Rel-16 | NR-U: DCI 2_0 extended with available RB sets and channel occupancy time; LBT failure reporting | A transmission can be absent because of channel access, with no mapping or scheduling fault at all. |
| Rel-17 | MBS: group-common PDSCH addressed by G-RNTI and G-CS-RNTI, with multicast MTCH and MCCH logical channels | The first time a downlink logical channel is neither cell-wide broadcast nor single-UE dedicated. |
| Rel-17 | SRB4 for application-layer measurement reporting; SRB-Identity extended to 4 | A new DCCH instance that carries neither RRC control nor NAS. |
| Rel-17 | Paging early indication via DCI 2_7 and PEI-RNTI | A UE can decide not to decode the paging PDSCH at all, so absence of a PCCH reception is no longer evidence that no page was sent. |
| Rel-17 | RedCap: reduced bandwidth and relaxed capabilities, with separate initial BWPs | The same logical channels over narrower physical resources, so PUCCH and PUSCH sizing assumptions change. |
| Rel-17 | NTN: extended HARQ process counts and disabled HARQ feedback for some bearers | A DL-SCH transport channel that is not HARQ-protected, which contradicts the property table in §6 for those configurations. |
| Rel-18 | Further MBS, network-controlled repeaters with side control information, AI/ML-driven CSI reporting, more UCI multiplexing flexibility | More content sharing PUCCH and PUSCH, so UCI dropping (§11) becomes more likely rather than less. |
Table 18. Channel-mapping changes by release. Almost every entry adds either a codepoint or a new physical-layer control format — the three-layer model itself has not changed since Rel-15.
19. Reading Channel Mapping in Logs: A Checklist
1. Start from the RNTI, not the payload. The RNTI that descrambled the PDCCH CRC tells you what the PDSCH contains before you decode a single byte of it (§9). SI-RNTI means BCCH, P-RNTI means PCCH or a Short Message, RA-RNTI means a RAR, C-RNTI means DCCH or DTCH.
2. Decide whether a MAC subheader should exist at all. For BCCH, PCCH and BCH there is none — the PDU is a transparent MAC PDU. Parsing one produces confident nonsense (§16.3).
3. Walk the subheaders and reconcile the byte count. Every subPDU is either a subheader with an L field, or a subheader whose LCID implies a fixed size. If the total does not equal the transport block size, your walk went wrong somewhere — probably at an unrecognised LCID.
4. Map each LCID to a logical channel using the right table and the right direction. LCID 61 is a Timing Advance Command in the downlink and a Short BSR in the uplink. The tables are different (§5).
5. Check LCID 33 and 34 first if anything looks corrupt. An eLCID escape parsed by an old decoder produces a plausible spray of spurious control elements (§16.4).
6. Verify the logical channel is configured at both ends. Compare the LCIDs appearing on the wire against logicalChannelIdentity in the RLC-BearerConfig list. A bearer with sender-side counters and no receiver-side counters is a configuration mismatch, not a radio problem.
7. Separate the three loss counters. PHY transport block CRC failures, RLC retransmissions and PDCP loss are three layers reporting overlapping events. Only PDCP loss is loss to the application (§7).
8. For anything on PDCCH or PUCCH, stop looking for a logical channel. DCI and UCI have none. If a tool prints one, it is guessing.
9. When UCI seems to be missing, size the PUCCH resource against the worst-case payload. CSI that arrives less often than configured, with no errors, is almost always dropped UCI rather than a reporting fault (§11).
10. Read the message name and predict the chain before you look. If RRCReestablishment appears on CCCH, or a MeasurementReport on SRB2, or a NAS message on SRB1 after SRB2 was established, something is not what you think it is (§4).
20. Glossary
| Term | Expansion | Meaning in this document |
|---|---|---|
| Logical channel | -- | A channel defined by the type of information, at the RLC/MAC boundary. Becomes an LCID on the wire. |
| Transport channel | -- | A channel defined by how MAC offers data to PHY — HARQ, scheduling, coding, transport block structure. |
| Physical channel | -- | A set of resource elements carrying information that came from a higher layer. |
| Physical signal | -- | A set of resource elements used by the physical layer that carries nothing from above: PSS, SSS, DM-RS, PT-RS, CSI-RS, SRS. |
| LCID | Logical Channel ID | The 6-bit field in the MAC subheader. 0–63, with 33 and 34 reserved as escapes to the extended space. |
| eLCID | Extended LCID | Rel-16 one- or two-octet extension reached via LCID 34 or 33, giving codepoints 64–319 and 320–65855. |
| MAC subPDU | -- | One subheader plus its optional payload. A MAC PDU is a sequence of subPDUs. |
| Transparent MAC PDU | -- | A MAC PDU consisting of a MAC SDU alone, with no subheader. Used for BCCH, PCCH and BCH. |
| SDU / PDU | Service / Protocol Data Unit | An SDU is what a layer receives from above; a PDU is what it emits downward after adding its header. |
| TM / UM / AM | Transparent / Unacknowledged / Acknowledged Mode | RLC modes. TM adds no header; UM adds a header and segmentation; AM adds ARQ as well. |
| RNTI | Radio Network Temporary Identifier | The value scrambling a PDCCH CRC. Functions as part of the channel mapping, because it identifies what the scheduled PDSCH contains (§9). |
| DCI | Downlink Control Information | The content of PDCCH. No logical or transport channel. |
| UCI | Uplink Control Information | HARQ-ACK, SR, CSI and link recovery requests. No logical or transport channel. |
| SCI | Sidelink Control Information | The sidelink equivalent of DCI, in two stages: first on PSCCH, second multiplexed into PSSCH. |
| CCE / REG | Control Channel Element / Resource Element Group | PDCCH granularity: one REG is 12 REs in one symbol, one CCE is 6 REGs, and aggregation levels are 1 to 16 CCEs. |
| Code block | -- | A segment of a transport block after LDPC segmentation, each with its own 24-bit CRC (§7). |
| QFI | QoS Flow Identifier | The 6-bit field in the SDAP header identifying which QoS flow a packet belongs to — the first layer at which the mapping becomes application-visible. |
| SRB / DRB | Signalling / Data Radio Bearer | SRBs map to CCCH and DCCH, DRBs to DTCH. One logical channel per bearer per direction. |
21. References
- 3GPP TS 38.300 — NR overall description. Clause 6.1 (protocol architecture), 6.2 (channels and channel mapping, including the downlink and uplink mapping figures), 6.3 (physical layer), 16 (sidelink).
- 3GPP TS 38.321 — NR MAC protocol specification. Clause 4.2 (channel architecture and logical channels), 4.4 (sidelink), 5.4 (uplink data transfer and logical channel prioritisation), 6.1 (MAC PDU formats, subheader variants and the transparent MAC PDU), 6.1.2 (subheader formats and subPDU ordering), 6.2.1 (LCID and eLCID tables, Tables 6.2.1-1 and 6.2.1-2), clause 7.1 (RNTI values, Table 7.1-1).
- 3GPP TS 38.211 — Physical channels and modulation. Clause 4.3.2 (the physical channel / physical signal distinction), 6.2 and 6.3 (uplink physical channels and signals, PUCCH formats), 7.3 and 7.4 (downlink physical channels and signals, PBCH and the SS/PBCH block).
- 3GPP TS 38.212 — Multiplexing and channel coding. Clause 5 (CRC, LDPC and Polar coding, code block segmentation), 7.1 (BCH encoding: payload generation, scrambling, CRC, Polar, rate matching to 864), 7.2 (DL-SCH and UL-SCH), 7.3.1 (DCI formats), 6.3 (UCI coding).
- 3GPP TS 38.213 — Physical layer procedures for control. Clause 9.2 (UCI on PUCCH, resource determination and formats), 9.2.5 (UCI multiplexing and dropping rules), 10 (search spaces and RNTI monitoring), 11.1 (slot format indication).
- 3GPP TS 38.322 — RLC protocol specification. Clause 6.2 (TM, UM and AM PDU formats and header sizes).
- 3GPP TS 38.323 — PDCP protocol specification. Clause 6.2 (data PDU formats, 12-bit and 18-bit sequence numbers, MAC-I).
- 3GPP TS 37.324 — SDAP protocol specification. Clause 6.2 (SDAP header formats, uplink and downlink).
- 3GPP TS 38.331 — RRC protocol specification.
RLC-BearerConfig,LogicalChannelConfig,RLC-Config,SDAP-Config,PDCP-Config,SRB-Identity,DRB-Identity, and theUL-CCCH-Message,DL-CCCH-Message,UL-DCCH-Message,DL-DCCH-Message,BCCH-DL-SCH-MessageandPCCH-Messagecontainers.
Companion documents in this set
- 02 Radio Frame Structure — the resource grid every physical channel is placed on, and where the SS/PBCH block sits inside it.
- 03 Random Access — the CCCH/UL-SCH/PUSCH path for MSG3, the RAR that has no logical channel, and the UE Contention Resolution Identity CE.
- 05 HARQ — what the transport channel HARQ property in §6 actually does, and code block group retransmission.
- 07 MAC PDU and Control Elements — the subheader formats of §5 and every MAC CE the LCID tables point at, in detail.
- 08 Scheduling — how a DCI's resource allocation fields turn into the PDSCH and PUSCH of §8.
- 09 Logical Channel Prioritisation — how an uplink grant is divided between the logical channels of §3.
- 10 BSR, PHR, SR — the uplink control elements and the SR that rides as UCI.
- 13 RRC Overview / 15 RRC Procedures — the messages of §4 and the SRBs they use.
- 17 System Information / 18 MIB and SIB1 IEs — the BCCH content of §14.1 and §14.2.
- 19 Paging — the PCCH/PCH path and the Short Message alternative.
- 26 UE Capability — which control elements, DCI formats and PUCCH formats a given UE actually supports.