4、MAC层核心:随机接入过程(RACH)、调度与资源分配、HARQ重传机制、逻辑信道与传输信道映射

MAC层,说白了就是L2的大脑。它管着你怎么接入网络、怎么抢资源、传错了怎么补救、以及上层数据怎么塞进物理层管道。我做了这么多年协议栈,踩坑最多的就是这一层。今天咱们把这四个核心模块掰开揉碎讲清楚。

核心要点:MAC层是L2的调度中枢,它决定了“谁在什么时候用什么资源传什么数据”。

4.1 随机接入过程(RACH)—— 终端的第一声招呼

终端开机后第一件事是什么?不是发数据,而是先跟基站打个招呼:“我来了,给我个身份。”这个打招呼的过程就是随机接入。

我当年调试一个NB-IoT项目,终端死活入不了网。查了三天,最后发现是前导码的发射功率配置太低,基站根本听不见。嗯,这种坑踩过一次就记住了。

4.1.1 基于竞争的随机接入(CBRA)

这是最常用的方式。多个终端同时发起接入,可能撞车。流程分四步:

  1. Msg1:前导码发送——终端从64个前导码中随机选一个发出去。
  2. Msg2:随机接入响应(RAR)——基站回复,带上临时身份和上行授权。
  3. Msg3:调度传输——终端用拿到的资源发RRC连接请求。
  4. Msg4:竞争解决——基站确认谁赢了,其他人下次再试。

实战技巧:前导码的选择不是真随机。我建议在小区边缘用低索引的前导码,因为基站检测成功率更高。这是我在外场测试中总结出来的。

4.1.2 基于非竞争的随机接入(CFRA)

基站指定前导码给你,不用抢。常用于切换和上行同步恢复。优点是快,缺点是基站得提前预留资源。

特性 CBRA CFRA
前导码来源 终端随机选择 基站指定
冲突概率 高(尤其负载大时) 无
适用场景 初始接入、RRC重建 切换、上行同步恢复
时延 较高(可能重试) 低

4.2 调度与资源分配 —— 谁在什么时候用什么传

调度器是MAC层的核心。它决定每个TTI里,哪个终端能用哪些RB、用什么MCS。你想想看,一个小区几百个终端,调度器得在1ms内做出决策,压力不小。

4.2.1 动态调度

每个TTI基站都发DCI(下行控制信息),告诉终端“你,用这些资源,这个编码方式”。这是最灵活的方式,但控制信令开销大。

// 伪代码:调度器决策逻辑
for each TTI:
    for each UE with pending data:
        calculate PF metric = (instant_rate / average_rate) * alpha
        select UE with highest metric
        assign RB and MCS based on CQI
        update average_rate

4.2.2 半静态调度(SPS)

VoIP这种周期性小包,每次发DCI太浪费。SPS一次分配,周期使用。我记得有个项目用SPS传VoIP,控制信道开销直接降了70%。

注意:SPS激活后,终端在指定周期内自动使用预分配资源。但如果HARQ重传发生,重传包走动态调度,不走SPS。这个细节容易搞错。

4.2.3 资源分配类型

NR里资源分配分两种:Type 0(位图方式)和Type 1(起始RB+长度)。Type 0灵活但开销大,Type 1紧凑但受限。我个人习惯在小区边缘用Type 1,因为RB少,位图浪费。

4.3 HARQ重传机制 —— 错了别怕,有保险

无线信道太不可靠了。传10个包可能错3个。HARQ就是那个保险机制——错了就重传,但重传不是简单重发。

4.3.1 同步HARQ vs 异步HARQ

  • 同步HARQ:重传发生在固定时刻。终端不用等信令,但调度不灵活。LTE上行用这个。
  • 异步HARQ:重传时刻由基站动态决定。终端需要等DCI。NR上下行都用这个。

4.3.2 自适应HARQ vs 非自适应HARQ

自适应HARQ每次重传可以改MCS和RB位置。非自适应则跟初传一样。NR里基本都是自适应,因为信道变化快,不改参数等于白传。

4.3.3 软合并

HARQ的精髓在于软合并。重传不是扔掉旧数据重来,而是把新旧数据合并起来解码。这叫Chase合并(CC)或增量冗余(IR)。

IR的效果更好。为什么?因为每次重传带不同的冗余版本,解码增益更大。我在实验室测过,IR比CC在BLER=10%时能多0.5dB增益。

关键参数:NR最大HARQ进程数16,每个进程独立工作。下行异步自适应HARQ,上行同步非自适应HARQ(R15早期版本),R16后上行也支持异步。

4.4 逻辑信道与传输信道映射 —— 数据怎么走

上层来的数据五花八门:信令、语音、视频、网页。MAC层得把它们分门别类,塞进合适的传输信道。这个映射关系是协议栈的骨架。

4.4.1 逻辑信道类型

逻辑信道分两类:控制信道(传信令)和业务信道(传数据)。

逻辑信道 方向 传什么
BCCH 下行 系统消息
PCCH 下行 寻呼消息
CCCH 上下行 RRC连接建立前信令
DCCH 上下行 RRC连接建立后信令
DTCH 上下行 用户数据

4.4.2 传输信道类型

传输信道是MAC层和物理层的接口。NR里主要就几个:

  • BCH:广播信道,传MIB。固定编码方式,覆盖最广。
  • DL-SCH:下行共享信道,传大部分下行数据。支持HARQ、调度、链路自适应。
  • UL-SCH:上行共享信道,传大部分上行数据。同样支持HARQ。
  • RACH:随机接入信道,只传前导码。

4.4.3 映射关系

逻辑信道到传输信道的映射,说白了就是:信令走控制信道,数据走业务信道,然后都汇聚到共享信道上。

逻辑信道 → 传输信道
BCCH → BCH(MIB)或 DL-SCH(SIB)
PCCH → PCH(实际映射到DL-SCH资源)
CCCH → UL-SCH / DL-SCH
DCCH → UL-SCH / DL-SCH
DTCH → UL-SCH / DL-SCH

避坑指南:我曾经遇到一个问题:CCCH的数据优先级设得太低,导致RRC连接请求一直被DTCH的数据挤掉,终端反复接入失败。后来把CCCH的优先级提到最高,问题解决。逻辑信道的优先级配置直接影响接入成功率。

4.5 本章知识体系总览

下面这张图把MAC层四个核心模块的关系画清楚了。你仔细看,RACH是入口,调度器是大脑,HARQ是保险,映射是管道。四者缺一不可。

MAC层核心模块关系图 MAC层核心模块关系图 MAC层核心 随机接入(RACH) 终端入网第一步 调度与资源分配 谁在什么时候传 HARQ重传 错了就合并重传 信道映射 逻辑→传输信道 RACH是入口,调度器是大脑,HARQ是保险,映射是管道 四者协同工作,构成MAC层的完整功能

MAC层这四个模块,每个单独拎出来都能讲一整天。但实际工作中,它们是一体的。你设计RACH参数时得考虑调度器的负载,配置HARQ时得看信道映射的优先级。我建议你从整体上理解它们的关系,再逐个深入细节。