深入理解5g <七> 下行调度的流程

从MAC层接收上层数据开始的5G下行调度全流程

下面从数据到达 gNB 的 MAC 层开始,完整梳理下行调度的全过程。


一、数据从哪里来:上层到MAC

1.1 数据路径

下行用户面数据从核心网(UPF)出发,经过以下协议栈到达 MAC 层:

```

核心网 UPF

GTP-U 隧道

┌─────────────────────────────────────────┐

│ gNB 协议栈 │

│ │

│ SDAP (QoS Flow → Data Radio Bearer) │

│ │ │

│ PDCP (加密、完整性保护、头压缩、重排序) │

│ │ │

│ RLC (分段/重组、ARQ重传) │

│ │ │

│ MAC (调度、复用、HARQ) │

│ │ │

│ PHY (编码、调制、映射到物理资源) │

└─────────────────────────────────────────┘

```

1.2 各层对数据的处理

| 层 | 处理内容 |

|---|---|

| **SDAP** | 将 QoS Flow 映射到对应的 DRB(数据无线承载) |

| **PDCP** | 加密、完整性保护、ROHC 头压缩、分配 PDCP SN、重排序 |

| **RLC** | 根据调度授权大小进行分段或级联,生成 RLC PDU,维护 ARQ 重传 |

| **MAC** | 逻辑信道复用、调度、HARQ 管理 |

1.3 数据到达MAC的形式

RLC 层将数据以 **RLC PDU** 的形式递交给 MAC 层。MAC 层将其放入对应**逻辑信道(Logical Channel, LC)** 的缓冲区中。

每个逻辑信道对应一个无线承载,具有:

  • **优先级(Priority)** :1~16,值越小优先级越高

  • **PBR(Prioritized Bit Rate)** :保证的最小速率

  • **BSD(Bucket Size Duration)** :令牌桶大小

  • **逻辑信道组(LCG)** :用于 BSR 上报


二、MAC层的数据缓存与状态维护

2.1 逻辑信道缓冲区

MAC 层为每个逻辑信道维护一个**发送缓冲区**。当 RLC PDU 到达时:

```

LC1 缓冲区: PDU1 PDU2 PDU3 ...

LC2 缓冲区: PDU1 PDU2 ...

LC3 缓冲区: PDU1 ...

...

```

每个缓冲区中的待发送数据量决定了该逻辑信道的**缓存状态**。

2.2 逻辑信道优先级(LCP)机制

3GPP 定义了**逻辑信道优先级过程(Logical Channel Prioritization, LCP)** ,规则如下:

  1. **先满足 PBR**:每个逻辑信道先按其 PBR 分配资源,按优先级从高到低;

  2. **再按优先级分配剩余资源**:PBR 满足后,剩余资源按优先级从高到低分配;

  3. **同一优先级内公平分配**;

  4. **如果还有剩余资源**,可以继续分配给低优先级信道;

  5. **禁止将低优先级数据复用到高优先级数据中**(除非高层允许)。

这个机制保证了:

  • 高优先级业务(如 URLLC)优先发送;

  • 低优先级业务(如 eMBB)不会被完全饿死;

  • PBR 保证了最低速率。

2.3 缓冲区状态报告(BSR)

UE 需要向 gNB 上报上行缓冲区状态(用 BSR)。但**下行方向**,gNB 自己就知道每个逻辑信道有多少数据待发送,不需要 UE 上报。gNB 的 MAC 层直接维护下行缓冲区状态。


三、调度触发

3.1 什么时候触发调度

gNB 的调度器在每个**调度周期**(通常每个时隙 Slot,甚至每个符号)被触发。触发条件包括:

  • 每个时隙的调度时机到达;

  • 有新的下行数据到达;

  • 有 HARQ 重传需要安排;

  • 有系统信息、寻呼、RAR 等需要发送;

  • 有 CSI-RS、SSB 等参考信号需要发送。

3.2 调度器的输入

在每个调度周期开始时,调度器收集以下信息:

| 信息 | 来源 | 用途 |

|---|---|---|

| 各逻辑信道缓冲区数据量 | MAC 内部 | 决定哪些 UE 有数据要发 |

| CSI 报告(CQI/PMI/RI) | UE 上报 | 选择 MCS、MIMO 层数 |

| HARQ 反馈(ACK/NACK) | UE 上报 | 决定是否需要重传 |

| 调度请求/BSR | UE 上报 | 上行调度用,下行不需要 |

| QoS 参数 | 承载配置 | 决定调度优先级 |

| 历史调度信息 | 调度器内部 | 比例公平等算法使用 |

| 信道估计结果 | PHY | 辅助链路自适应 |


四、调度决策

4.1 用户选择

调度器根据**调度算法**为每个有下行数据的 UE 计算优先级,选出当前时隙要服务的 UE。

常用算法:

| 算法 | 优先级公式 | 特点 |

|---|---|---|

| 轮询(RR) | 无差别轮流 | 公平但吞吐低 |

| 最大 CQI | 正比于瞬时 CQI | 吞吐最高,边缘用户饿死 |

| 比例公平(PF) | `R_inst / R_avg` | 公平与吞吐折中 |

| 最大加权延迟 | 考虑 QoS 和延迟 | 适合 URLLC |

4.2 逻辑信道复用(LCP)

对于一个被选中的 UE,调度器根据 LCP 规则,决定:

  • 分配多少资源给这个 UE;

  • 这些资源中,各个逻辑信道分别占用多少;

  • 生成一个 **MAC PDU**,其中包含多个逻辑信道的 **MAC SDU** 及其对应的 **MAC 子头**。

MAC PDU 结构:

```

┌──────────────────────────────────────────────┐

│ MAC 子头1 │ MAC 子头2 │ ... │ MAC SDU1 │ MAC SDU2 │ ... │ Padding │

└──────────────────────────────────────────────┘

```

每个 MAC 子头指示对应的 MAC SDU 来自哪个逻辑信道、长度多少。

4.3 链路自适应与MCS选择

调度器根据 UE 上报的 **CQI** 确定初始 MCS,再根据 **HARQ 反馈** 通过 OLLA 进行修正:

```

目标 SINR = CQI 映射的 SINR - OLLA_offset

```

  • 收到 ACK → `OLLA_offset` 略微增大(降低 MCS,更保守);

  • 收到 NACK → `OLLA_offset` 略微减小(提高 MCS,更激进);

  • 长期使 BLER 逼近目标值(如 10%)。

4.4 资源分配

调度器为 UE 分配:

  • **频域资源**:多少 PRB,连续还是非连续;

  • **时域资源**:起始符号和持续长度(通过 SLIV 指示);

  • **空域资源**:多少 MIMO 层;

  • **码字**:单码字还是双码字。

4.5 TBS 计算

根据分配的 PRB 数、MCS、层数,查 3GPP 表格得到 **TBS(传输块大小)** 。

如果 TBS 小于 MAC PDU 大小,需要 RLC 重新分段;如果大于,则填充 Padding。


五、DCI生成与PDCCH发送

5.1 DCI 内容

调度决策被封装成 **DCI(下行控制信息)** ,常用格式:

  • **DCI Format 1_0**:回退格式,用于公共搜索空间;

  • **DCI Format 1_1**:常规下行调度;

  • **DCI Format 1_2**:URLLC 等特殊场景。

DCI 关键字段:

| 字段 | 含义 |

|---|---|

| 频域资源分配 | 哪些 PRB |

| 时域资源分配 | SLIV + K0 |

| MCS | 调制编码策略 |

| HARQ 进程号 | 哪个 HARQ 进程 |

| NDI | 新数据指示 |

| RV | 冗余版本 |

| 天线端口 | DMRS 配置 |

| TPC | 功控命令 |

5.2 PDCCH 发送

DCI 经过:

  1. CRC 加扰(用 UE 的 C-RNTI);

  2. 信道编码(Polar 码);

  3. 速率匹配;

  4. 调制(QPSK);

  5. 映射到 PDCCH 的 CCE(控制信道单元)。

UE 在每个时隙的 **PDCCH 搜索空间**中盲检属于自己的 DCI。


六、PDSCH数据传输

6.1 PHY 层处理

MAC PDU 交给 PHY 层后:

  1. **CRC 添加**;

  2. **LDPC 编码**;

  3. **速率匹配**;

  4. **加扰**;

  5. **调制**(QPSK/16QAM/64QAM/256QAM);

  6. **层映射与预编码**;

  7. **RE 映射**到 PDSCH 分配的时频资源;

  8. **OFDM 符号生成**并发送。

6.2 与 DCI 的对应关系

PDSCH 的时频位置、MCS、层数等完全由同一时隙(或之前时隙)的 DCI 指示。UE 解码 PDCCH 后,才能知道去哪里接收 PDSCH。


七、HARQ反馈与重传

7.1 UE 侧

UE 接收 PDSCH 后:

  1. 解调、解码;

  2. 如果解码成功 → 上报 **ACK**;

  3. 如果解码失败 → 上报 **NACK**,并缓存软信息。

7.2 gNB 侧

gNB 收到 HARQ 反馈后:

  • **ACK**:释放 HARQ 进程,准备发送新数据;

  • **NACK**:在后续调度周期安排**重传**,使用相同 HARQ 进程号,切换 RV(冗余版本),UE 将重传数据与缓存进行**软合并**。

7.3 重传优先级

HARQ 重传通常比新传具有**更高优先级**,因为:

  • 重传有延迟要求;

  • 软合并能提高解码成功率;

  • 避免 HARQ 进程耗尽。


八、完整流程时序图

```

上层数据到达

┌─────────────────────────────────────────────────────┐

│ RLC 层:分段/级联,生成 RLC PDU │

└─────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────┐

│ MAC 层:放入逻辑信道缓冲区 │

└─────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────┐

│ 调度器被触发(每 Slot) │

│ 1. 收集 CSI、HARQ 反馈、缓冲区状态 │

│ 2. 用户选择(PF 等算法) │

│ 3. LCP:逻辑信道复用,生成 MAC PDU │

│ 4. 链路自适应:确定 MCS │

│ 5. 资源分配:PRB、符号、层数 │

│ 6. TBS 计算 │

└─────────────────────────────────────────────────────┘

├──────────────────┐

▼ ▼

┌──────────────┐ ┌──────────────────────────────┐

│ 生成 DCI │ │ MAC PDU 交给 PHY │

│ → PDCCH 发送 │ │ → 编码/调制/映射 → PDSCH 发送 │

└──────────────┘ └──────────────────────────────┘

│ │

▼ ▼

┌─────────────────────────────────────────────────────┐

│ UE:盲检 PDCCH → 解码 DCI → 接收 PDSCH → 解码 │

│ → 上报 HARQ 反馈(ACK/NACK) │

└─────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────┐

│ gNB:收到 ACK → 释放 HARQ 进程 │

│ 收到 NACK → 安排重传 │

└─────────────────────────────────────────────────────┘

循环到下一个调度周期

```


九、关键要点总结

  1. **数据来源**:上层数据经 SDAP → PDCP → RLC 处理后,以 RLC PDU 形式到达 MAC,放入逻辑信道缓冲区。

  2. **调度触发**:每个时隙(甚至每个符号)触发一次调度,调度器汇总 CSI、HARQ、缓冲区状态等信息。

  3. **用户选择**:根据调度算法(PF 等)选出当前时隙服务的 UE。

  4. **逻辑信道复用**:按 LCP 规则,将多个逻辑信道的数据复用一个 MAC PDU 中。

  5. **链路自适应**:根据 CQI + HARQ 反馈确定 MCS,目标是使 BLER 逼近目标值。

  6. **资源分配**:分配 PRB、符号、MIMO 层,计算 TBS。

  7. **DCI 与 PDSCH**:调度决策封装成 DCI 经 PDCCH 发送,数据经 PDSCH 发送。

  8. **HARQ 闭环**:UE 反馈 ACK/NACK,gNB 据此决定新传或重传,重传使用软合并提高成功率。

  9. **循环往复**:每个时隙重复上述过程,形成闭环控制。

整个下行调度的本质是:**MAC 层调度器在每一个调度周期内,根据实时反馈和缓冲区状态,动态做出资源分配决策,通过 DCI 通知 UE,并通过 HARQ 闭环保证可靠性。**

相关推荐
Wang's Blog1 小时前
Java框架快速入门: Spring Security+OAuth2之UserDetails与JDBC认证实践
java·网络·spring
网硕互联的小客服1 小时前
反向路径过滤(rp_filter)是什么?多网卡服务器配置详解
运维·服务器·网络
疯狂打码的少年1 小时前
【计算机网络】IP地址与子网划分(IP地址分类与特殊地址)
网络·笔记·tcp/ip·计算机网络
GPFyes2 小时前
科东隔离传输失败E文本校验错误
运维·服务器·网络
是程不是序2 小时前
信创终端安全管理怎么落地?纳管、控权、护数据三段走
运维·网络·安全·电脑·系统安全
AI_Auto2 小时前
架构视角看数字化转型|完整复盘:架构先行,完成数字化组织与运营重构
网络·重构·架构
疯狂打码的少年2 小时前
【计算机网络】TCP协议(三次握手、可靠传输、流量控制)
网络·笔记·tcp/ip·计算机网络
电梯界知识分子2 小时前
江西抚州临川九尊府五层别墅:受限楼梯间里,全黑铝合金观光井道配曳引龙门架的落地记录
大数据·前端·网络·算法·家用电梯
xiaoye-duck3 小时前
《Linux 网络编程》深入理解 TCP 协议(五):滑动窗口、丢包重传与流量控制详解
linux·网络·tcp