5G/NR - MAC  

 

 

 

MAC

As of Mar 2028, 38.321 (MAC Specification) is almost completed and of course it is evolving continuously evolving. In this page, I will describe on NR MAC and try to explain in the comparison to LTE MAC whenever it is possible. If you are familiar with LTE MAC, this comparison would help you a lot to understand NR MaC.

High Level View of NR MAC Layer

High level MAC functionality and its interaction with lower and higher layer can be summarized as in the following diagram.

At high level view, NR MAC function/operation is very similar to LTE MAC function/operation. For your reference, I put the NR MAC function and LTE MAC function side-by-side as below.

 

5G/NR(38.321)

LTE(36.321)

Services

provided to upper layers

  • data transfer
  • radio resource allocation
  • data transfer
  • radio resource allocation

MAC Functions

  • mapping between logical channels and transport channels
  • multiplexing of MAC SDUs
  • demultiplexing of MAC SDUs
  • scheduling information reporting;
  • error correction through HARQ;
  • logical channel prioritisation.
  • mapping between logical channels and transport channels;
  • multiplexing of MAC SDUs
  • demultiplexing of MAC SDUs
  • scheduling information reporting
  • error correction through HARQ
  • priority handling between UEs
  • priority handling between logical channels of one MAC entity
  • Logical Channel prioritisation
  • transport format selection
  • radio resource selection for SL

Services

expected from physical layer

  • data transfer services;
  • signalling of HARQ feedback;
  • signalling of Scheduling Request;
  • measurements (e.g. Channel Quality Indication (CQI)).
  • data transfer services;
  • signalling of HARQ feedback;
  • signalling of Scheduling Request;
  • measurements (e.g. Channel Quality Indication (CQI)).

There is another way of describing MAC functionality. It is to describe about each separate procedures that are performed by MAC as summarized below. This is the way I like to describe MAC layer. When MAC and PHY layer specification gets finalized, I would create separate pages for each of these process.

Procedure Name

Description

Random Access Procedure Get the initial uplink grant and perform synchronization to network
DL-SCH data transfer (NW) Do everything needed to perform DL Data Transfer (DCI-Scheduling, HARQ etc)
UL-SCH data scheduling (NW) Schedule UL data transmission by sending DCI X (UL Grant)
UL-SCH data transfer (UE) Do everything needed to perform UL Data Transfer (DCI X decoding, HARQ, multiplexing and assembly)
SR-Scheduling Request (UE) Send the request to Network to get a UL Grant
DRX - Discontinous Reception Control UE's PDCCH monitoring activity in special pattern mainly to save energy consumption
SPS - Semi Persisent Scheduling Scheduling DL/UL transmission in special pattern to reduce scheduling overhead
PCH Reception Monitoring Paging message in special period
BCH Reception Get basic information on cell (MIB and SFN)

Channel Mapping at MAC Layer

The illustration shown above may show you a little bit detailed picture of MAC process, but it may not be so clear about the channel mapping unless you follow through each lines very carefully. In terms of channel mapping, the tables in 38.321 would be clearer and simple to understand and my illustration to the right would be even more clear and intuitive :).

As you see, most of channels from Logical channel to Transport channel is one-to-one or many-to-one relation, but BCCH case it maps to BCH and DL-SCH.

What does this mean ? Does this mean that a BCCH message maps both to BCH and DL-SCH simultaneously ?

No. It means some BCCH data maps to BCH and some BCCH data maps to DL-SCH.  If you are familiar with LTE, you would know there are largely two types of BCCH in LTE. One is MIB and the others are SIBs. MIB goes through BCCH-BCH path and SIBs go through BCCH-DL SCH path. NR would use the same pattern of channel mapping.

Refer to Channel Mapping page to see how this mapping embedded into the mapping with wider scope.

Comparison of MAC PDU / Headers between NR and LTE

Following shows the overal MAC PDU struction of NR and LTE MAC. You would notice here, all the MAC subhaeders are located at the beginning of a MAC PDU in LTE, but in NR MAC subheaders are located right in front of corresponding SDU(Payload). In other words, in LTE MAC Subheader and correponding data are located in different region, but in NR MAC subheader and corresponding data(payload) are in the same region sitting next to each other.

Followings shows header structure of MAC subheaders in NR and LTE. Overall structure would look similar but in NR there is no 'E' field. NR does not require 'E' field since one subheader is located right in front of the corresponding payload. There is no case where multiple headers are sitting next to each other. So 'E' filed is not needed (NOTE : 'E' field indicate whether any other MAC header come after the current MAC subheader).

NR MAC Subheader Structure

Followings shows the structure of MAC Subheaders in NR and meaning of each field in the sub headers.

< 38.321- Figure 6.1.2-1 R/F/LCID/L MAC subheader with 8-bit L field >

 

< 38.321- Figure 6.1.2-2 R/F/LCID/L MAC subheader with 16-bit L field >

 

< 38.321- Figure 6.1.2-3 R/LCID MAC subheader >

 

Field

Description

LCID

This field indicates Logical Channel ID. There is one LCID field per MAC subheader. The LCID field size is 6 bits;

L

This indicates Length of the corresponding MAC SDU or variable-sized MAC CE in bytes. There is one L field per MAC subheader except for subheaders corresponding to fixed-sized MAC CEs and padding. The size of the L field is indicated by the F field;

F

F stands for 'Format'. It indicates the size of the Length field. There is one F field per MAC subheader except for subheaders corresponding to fixed-sized MAC CEs and padding. The size of the F field is 1 bit.

  •   0 indicates 8 bits of the Length field.
  •   1 indicates 16 bits of the Length field

Followings table shows the LCID field in MAC Subheader based on 38.321 v15.1 (Mar 2018 version).

Followings table shows the LCID field in MAC Subheader based on 38.321 v15.2 (Jun 2018 version).

Comparing to v15.1, followings are added or modified.

  • DL : Recommended bit rate is added
  • UL : CCCH is divided into two different types, CCCH of size other than 48bits and CCCH of size of 48 bits

Followings table shows the LCID field in MAC Subheader based on 38.321 v16.4 (Apr 2021 version).

Followings table shows the LCID field in MAC Subheader based on 38.321 v19.0 (Oct 2025 version).

< 38.321 -  Table 6.2.1-1: Values of LCID for DL-SCH >

Codepoint/Index

LCID values

0

CCCH

1–32

Identity of the logical channel of DCCH, DTCH and multicast MTCH

33

Extended logical channel ID field (two-octet eLCID field)

34

Extended logical channel ID field (one-octet eLCID field)

35–46

Reserved

47

Recommended bit rate

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

53

TCI States Activation/Deactivation for UE-specific PDSCH

54

Aperiodic CSI Trigger State Subselection

55

SP CSI-RS/CSI-IM Resource Set Activation/Deactivation

56

Duplication Activation/Deactivation

57

SCell Activation/Deactivation (four octets)

58

SCell Activation/Deactivation (one octet)

59

Long DRX Command

60

DRX Command

61

Timing Advance Command

62

UE Contention Resolution Identity

63

Padding

 

< 38.321 -  Table 6.2.1-1a: Values of two-octet eLCID for DL-SCH >

Codepoint

Index

LCID values

0 to (216 − 1)

320 to (216 + 319)

Identity of the logical channel

 

< 38.321 -  Table 6.2.1-1b: Values of one-octet eLCID for DL-SCH >

Codepoint

Index

LCID values

0 to 207

64 to 271

Reserved

208

272

On-demand SSB Activation/Deactivation (one octet eL field)

209

273

On-demand SSB Activation/Deactivation (four octet eL field)

210

274

SP CSI-RS/CSI-IM Resource Set Activation/Deactivation

211

275

UL Rate Control

212

276

Pathloss Offset Update

213

277

SP CSI-RS/CSI-IM Resource Set Activation/Deactivation for Candidate Cell

214

278

Enhanced LTM Cell Switch Command

215

279

Aggregated SP Positioning SRS Activation/Deactivation

216

280

Enhanced SP CSI reporting on PUCCH Activation/Deactivation

217

281

Cross-RRH TCI State Indication for UE-specific PDCCH

218

282

LTM Cell Switch Command

219

283

Candidate Cell TCI States Activation/Deactivation

220

284

SP SSB Based Beam Indication

221

285

Activation/Deactivation for Joint TCI States

222

286

Enhanced Unified TCI states Activation/Deactivation MAC CE for Joint TCI States

223

287

Enhanced Unified TCI states Activation/Deactivation MAC CE for Separate TCI States

224

288

NCR Access Link Beam Indication

225

289

NCR Downlink Backhaul Link Beam Indication

226

290

NCR Uplink Backhaul Link Beam Indication

227

291

Serving Cell Set based SRS TCI State Indication

228

292

SP/IAP SRS TCI State Indication

229

293

BFD-RS Indication

230

294

Differential Koffset

231

295

Enhanced SCell Activation/Deactivation (one octet eL field)

232

296

Enhanced SCell Activation/Deactivation (four octet eL field)

233

297

Unified TCI States Activation/Deactivation

234

298

PUCCH Power Control Set Update for multiple PUCCH repetition

235

299

PUCCH spatial relation Activation/Deactivation for multiple TRP PUCCH repetition

236

300

Enhanced TCI States Indication for UE-specific PDCCH

237

301

Positioning Measurement Gap Activation/Deactivation Command

238

302

PPW Activation/Deactivation Command

239

303

DL Tx Power Adjustment

240

304

Timing Case Indication

241

305

Child DL-BU Resetting Beam Indication

242

306

Case-7 Timing advance offset

243

307

Provided Guard Symbols for Case-6 timing

244

308

Provided Guard Symbols for Case-7 timing

245

309

Serving Cell Set based SRS Spatial Relation Indication

246

310

PUCCH Pathloss Reference RS Update

247

311

Pathloss Reference RS Update

248

312

Enhanced SP/IAP SRS Spatial Relation Indication

249

313

Enhanced PUCCH Spatial Relation Activation/Deactivation

250

314

Enhanced TCI States Activation/Deactivation for UE-specific PDSCH

251

315

Duplication RLC Activation/Deactivation

252

316

Absolute Timing Advance Command

253

317

SP Positioning SRS Activation/Deactivation

254

318

Provided Guard Symbols

255

319

Timing Delta

 

< 38.321 -  Table 6.2.1-1c: Values of LCID for MBS multicast MCCH and MBS broadcast on DL-SCH >

Codepoint/Index

LCID values

0

Broadcast MCCH or multicast MCCH

1–32

Identity of the logical channel of broadcast MTCH

33–63

Reserved

 

< 38.321 -  Table 6.2.1-2: Values of LCID for UL-SCH when the LX field is not present or is set to 0 >

Codepoint/Index

LCID values

0

CCCH of size 64 bits, except for an (e)RedCap UE

1–32

Identity of the logical channel of DCCH and DTCH

33

Extended logical channel ID field (two-octet eLCID field)

34

Extended logical channel ID field (one-octet eLCID field)

35

CCCH of size 48 bits for a RedCap UE

36

CCCH of size 64 bits for a RedCap UE

37–42

Reserved

43

Truncated Enhanced BFR (one octet C)

44

Timing Advance Report

45

Truncated Sidelink BSR

46

Sidelink BSR

47

Reserved

48

LBT failure (four octets)

49

LBT failure (one octet)

50

BFR (one octet C)

51

Truncated BFR (one octet C)

52

CCCH of size 48 bits, except for an (e)RedCap UE

53

Recommended bit rate query

54

Multiple Entry PHR (four octets C)

55

Configured Grant Confirmation

56

Multiple Entry PHR (one octet C)

57

Single Entry PHR

58

C-RNTI

59

Short Truncated BSR

60

Long Truncated BSR

61

Short BSR

62

Long BSR

63

Padding

NOTE: CCCH of size 48 bits and CCCH of size 64 bits are referred to as CCCH and CCCHH, respectively, in TS 38.331.

 

< 38.321 -  Table 6.2.1-2a: Values of two-octet eLCID for UL-SCH >

Codepoint Index

LCID values

0 to (215 − 1)

320 to (215 + 319)

Identity of the logical channel

 

< 38.321 -  Table 6.2.1-2b: Values of one-octet eLCID for UL-SCH >

Codepoint

Index

LCID values

0 to 214

64 to 278

Reserved

215

279

Multiple Entry Delay Status Report

216

280

UL Rate Control

217

281

Event Triggered L1 Measurement Report

218

282

Truncated Event Triggered L1 Measurement Report

219

283

Enhanced Multiple Entry PHR for multiple TRP ST×2P (four octets C)

220

284

Enhanced Multiple Entry PHR for multiple TRP ST×2P (one octets C)

221

285

Enhanced Single Entry PHR for multiple TRP ST×2P

222

286

SL LBT Failure

223

287

Enhanced Multiple Entry PHR with assumed PUSCH (four octets C)

224

288

Enhanced Multiple Entry PHR with assumed PUSCH (one octets C)

225

289

Single Entry PHR with assumed PUSCH

226

290

SL-PRS Resource Request

227

291

Refined Long BSR

228

292

Multiple Entry Delay Status Report

229

293

Enhanced Multiple Entry PHR for multiple TRP (four octets C)

230

294

Enhanced Multiple Entry PHR for multiple TRP (one octets C)

231

295

Enhanced Single Entry PHR for multiple TRP

232

296

Enhanced Multiple Entry PHR (four octets C)

233

297

Enhanced Multiple Entry PHR (one octets C)

234

298

Enhanced Single Entry PHR

235

299

Enhanced BFR (one octet C)

236

300

Truncated Enhanced BFR (one octet C)

237

301

Positioning Measurement Gap Activation/Deactivation Request

238

302

IAB-MT Recommended Beam Indication

239

303

Desired IAB-MT PSD range

240

304

Desired DL Tx Power Adjustment

241

305

Case-6 Timing Request

242

306

Desired Guard Symbols for Case 6 timing

243

307

Desired Guard Symbols for Case 7 timing

244

308

Extended Short Truncated BSR

245

309

Extended Long Truncated BSR

246

310

Extended Short BSR

247

311

Extended Long BSR

248

312

Extended Pre-emptive BSR

249

313

BFR (four octets C)

250

314

Truncated BFR (four octets C)

251

315

Multiple Entry Configured Grant Confirmation

252

316

Single Entry Configured Grant Confirmation

253

317

Desired Guard Symbols

254

318

BFR (octets C)

255

319

Pre-emptive BSR

 

< 38.321 -  Table 6.2.1-2c: Values of LCID for UL-SCH when the LX field is set to 1 >

Codepoint

Index

LCID values

0

(215 + 320)

CCCH of size 48 bits for an/eRedCap UE

1

(215 + 321)

CCCH of size 64 bits for an/eRedCap UE

2

(215 + 322)

CCCH of size 48 bits for PUCCH repetition of Msg4 HARQ-ACK, except for an (e)RedCap UE

3

(215 + 323)

CCCH of size 64 bits for PUCCH repetition of Msg4 HARQ-ACK, except for an (e)RedCap UE

4

(215 + 324)

CCCH of size 48 bits for PUCCH repetition of Msg4 HARQ-ACK of a RedCap UE

5

(215 + 325)

CCCH of size 64 bits for PUCCH repetition of Msg4 HARQ-ACK of a RedCap UE

6

(215 + 326)

CCCH of size 48 bits for PUCCH repetition of Msg4 HARQ-ACK of an eRedCap UE

7

(215 + 327)

CCCH of size 64 bits for PUCCH repetition of Msg4 HARQ-ACK of an eRedCap UE

8

(215 + 328)

CCCH of size 48 bits for PDSCH repetition of Msg4, except for an (e)RedCap UE

9

(215 + 329)

CCCH of size 64 bits for PDSCH repetition of Msg4, except for an (e)RedCap UE

10

(215 + 330)

CCCH of size 48 bits for PDSCH repetition of Msg4 of a RedCap UE

11

(215 + 331)

CCCH of size 64 bits for PDSCH repetition of Msg4 of a RedCap UE

12

(215 + 332)

CCCH of size 48 bits for PDSCH repetition of Msg4 of an eRedCap UE

13

(215 + 333)

CCCH of size 64 bits for PDSCH repetition of Msg4 of an eRedCap UE

14

(215 + 334)

CCCH of size 48 bits for PUCCH repetition of Msg4 HARQ-ACK and PDSCH repetition of Msg4, except for an (e)RedCap UE

15

(215 + 335)

CCCH of size 64 bits for PUCCH repetition of Msg4 HARQ-ACK and PDSCH repetition of Msg4, except for an (e)RedCap UE

16

(215 + 336)

CCCH of size 48 bits for PUCCH repetition of Msg4 HARQ-ACK and PDSCH repetition of Msg4 of a RedCap UE

17

(215 + 337)

CCCH of size 64 bits for PUCCH repetition of Msg4 HARQ-ACK and PDSCH repetition of Msg4 of a RedCap UE

18

(215 + 338)

CCCH of size 48 bits for PUCCH repetition of Msg4 HARQ-ACK and PDSCH repetition of Msg4 of an eRedCap UE

19

(215 + 339)

CCCH of size 64 bits for PUCCH repetition of Msg4 HARQ-ACK and PDSCH repetition of Msg4 of an eRedCap UE

20 to 63

(215 + 340) to (215 + 383)

Reserved

NOTE 1: The MAC entity may use the code point corresponding to a given feature or feature combination only if network indicates support for the corresponding feature or feature combination.

NOTE 2: CCCH of size 48 bits and CCCH of size 64 bits are referred to as CCCH and CCCH1, respectively, in TS 38.331.

NOTE 3: For UE capable of PUCCH repetition of Msg4 HARQ-ACK, the MAC entity uses the code points corresponding to PUCCH repetition of Msg4 HARQ-ACK if numberOfMsg4HARQ-ACK-Repetitions is configured and rsrp-ThresholdMsg4HARQ-ACK is not set, or rsrp-ThresholdMsg4HARQ-ACK is configured and the RSRP of the downlink pathloss reference is less than rsrp-ThresholdMsg4HARQ-ACK.

Reference

[1]