4g/5G 中的 handover 机制汇总¶
科普: DAPS¶
来源: https://devopedia.org/daps-handover

(1) 要解决的问题: 切换中断¶
在普通切换中,UE 从源小区移到目标小区时,会有一段时间完全不能收发数据。
LTE 基本切换的中断时间约为 30–60 ms,也有报告达到数百毫秒。5G URLLC 要求 1 ms 时延,这种中断就不能接受了。
中断的原因是: 普通切换属于 break-before-make (BBM) [UE 收到切换命令后,先断开源小区,再去目标小区接入(做随机接入),这期间没有任何链路可用]。
DAPS (Dual Active Protocol Stack, 双激活协议栈) 的思路:
切换期间 UE 同时维护两套协议栈,一套继续在源小区收发数据,另一套处理目标小区的业务。RAN 内部则把数据包从源节点转发到目标节点。
(2) 版本演进: MBB 与 DAPS¶
- LTE 在 Rel-14 引入了 Make-Before-Break (MBB) 切换
- Rel-16 在 LTE 和 5G 中都引入了 DAPS 切换
- MBB 可以看作 DAPS 的简化版
需要注意术语:学术文献里常把 DAPS 统称为"make-before-break",但在 LTE 规范中,MBB 是一个特指的机制。两者的区别如下:
| MBB(Rel-14,仅 LTE) | DAPS(Rel-16,LTE + NR) | |
|---|---|---|
| 规范定义 | 收到切换的 RRC 消息后, 保持源 eNB 连接, 直到向目标 eNB 发出首次上行传输为止 | 收到切换 RRC 消息后保持源连接, 直到在目标侧随机接入成功、并释放源小区为止 |
| 何时断开源侧 | 源 eNB 自己决定何时停止下行;UE 在目标侧完成上行传输后即可断开源侧 | 必须等目标侧显式通知,UE 才释放源连接 |
| 与 DC 共存 | 适用于双连接场景下更换辅基站(SeNB) | 不能与 DC 同时使用 |
| 与免 RACH 切换共存 | 可以配合 RACH-less 切换使用 | 不能,发起 DAPS 前 RAN 必须先释放 DC 和 RACH-less 配置 |
简单概括: MBB 只把断开源侧的时间推迟到"目标侧开始发上行", DAPS 则一直推迟到"目标侧明确确认成功", 源侧连接保持得更久, 也更稳。
(3) 切换流程: UE 与基站之间的逐步交互¶
下面按时间顺序整理文章中的执行流程(对应 TS 38.300 §9.2.3)
第 1 步:网络决定切换,并按承载启用 DAPS
- UE、源/目标 NG-RAN 以及源/目标 AMF 都必须支持 DAPS
- DAPS 只对有需要的 DRB 选择性启用
- 术语说明:
- DRB(数据无线承载, Data Radio Bearer)可以理解为 UE 和基站之间按 QoS 划分的一条"数据管道"
- SRB(信令无线承载, Signaling Radio Bearer)则是传 RRC 控制消息的管道

- 链接: 阿里云开发手册-无线承载SRB和DRB
- 为什么按承载启用: 维护两套下层的开销很大,只有时延敏感的业务才值得这么做
第 2 步:UE 收到切换命令,建立第二套协议栈
- 普通切换中,UE 会重置 MAC 实体、重建 RLC 实体
- DAPS 中,UE 新建一个 MAC 实体,为每个启用 DAPS 的 DRB 新建一个 RLC 实体,并重新配置 PDCP 实体
- 关键区别: 普通切换是把原有的栈清空后重用,DAPS 是保留旧栈、另建新栈
第 3 步:源侧数据继续,信令暂停
- UE 暂停到源小区的 SRB,但启用了 DAPS 的 DRB 仍在源小区继续收发数据
- 这样设计的原因:
- 控制权只能归一方,否则两边的 RRC 配置会冲突
- 数据面则可以两边同时走
第 4 步:UE 在目标侧随机接入,同时源侧继续服务并转发
- 源 gNB 一直发送下行数据(同时转发给目标 gNB),直到收到目标 gNB 发来的
Handover Success - 即使 UE 已经切到目标侧, 它仍会向源 gNB 发送反馈信息: L1 CSI 反馈、HARQ 反馈、RLC 反馈、ROHC 反馈,以及 HARQ 和 RLC 的数据(重)传
- 原因:
- 源侧还有尚未确认的数据在途,反馈不能中断,否则这些数据会丢失或卡住
- 代价是 UE 在这段时间要两路上行并发
第 5 步:源侧移交序号,停止服务
- 源 gNB 收到
Handover Success后,向目标 gNB 发送SN Status Transfer- 此时源 gNB 停止向 UPF 递交上行 QoS 流,也不再为下行包分配 PDCP 序号
- 术语说明:
SN Status Transfer告诉目标侧 PDCP 序号已经用到哪里,目标侧从这里接着编号- 这一步保证了序号连续,接收端才能正确排序和去重
第 6 步:目标侧通知 UE 释放源侧
- UE 连上目标小区后,目标小区命令 UE 释放源小区资源
失败回退
- 如果切换失败,UE 继续留在源小区,恢复之前暂停的 SRB。UE 通过源小区上报失败,不需要触发 RRC 连接重建
- 这是 DAPS 的另一个收益:普通切换失败后要做耗时较长的 RRC 重建,DAPS 有源侧兜底,所以失败了也不会掉线
(4) 对 PDCP 层的影响¶
UE 侧的 PHY/MAC/RLC 各复制一份,分别对应源小区和目标小区,但只有一个 PDCP 实体同时服务两侧
- 发送方向:
- PDCP 负责选路,决定数据包走源小区还是目标小区
- PDCP 数据 PDU 发往目标小区,PDCP 控制 PDU 则按其关联关系发往源侧或目标侧
- 接收方向:
- 同一个 SDU 可能从源和目标两侧都收到,PDCP 负责检测并丢弃重复包
- PS: PDU and SDU. SDU 纯数据面, PDU 包含控制面metadata
- LTE 与 NR 的差异:
- LTE 的 DAPS PDCP 与 NR 基本相同,区别在于完整性保护:LTE PDCP 只对控制面做完整性保护,而 DAPS 作用于用户面
为什么只有一个 PDCP
PDCP 负责序号、加密和排序
如果 PDCP 也有两个,就会出现两套序号,接收端无法合并两路数据
把 PDCP 作为唯一锚点,两条下层通路才能互为补充
(5) 适用限制汇总¶
- 不支持异制式(inter-RAT)DAPS 切换(依据 TS 37.340 Annex B)
- NOTE: 这点非常非常重要!!!
- 比如: LTE ↔ NR 就不行!
- 原因:
- 承载模型不同: 在 LTE/EPC 中, DRB 和核心网的 EPS 承载是一一对应的
- 在 NR/5GC 中,核心网以 QoS 流为单位,由 SDAP 层把多个 QoS 流映射到 DRB 上,映射关系由基站自行决定
- 所以切换前的
"DRB 3", 到了目标侧可能拆成或并入别的 DRB, DAPS 需要的 "同一个 DRB 有两条腿" 就没有意义了
- PDCP 版本不同:
- 文章提到 LTE PDCP 只对控制面做完整性保护,而 NR 的 PDCP 在头格式、序号长度、用户面完整性保护等方面也不一样
- DAPS 的单个 PDCP 实体要同时持有两套密钥和头压缩上下文,但它本身只能是一个版本,不能一半是 LTE PDCP、一半是 NR PDCP
- 核心网要换:
- LTE(EPC)切到 NR(5GC)是跨系统切换,需要 MME 和 AMF 之间交互(例如经 N26)、重新推导安全上下文,用户面锚点也要变
- DAPS 依赖源基站把数据转发给目标基站,再通过 SN Status Transfer 交接序号,这是同一个 RAN 内的流程
- 跨系统时序号空间和密钥体系都要重建,这套交接就接不上
- 承载模型不同: 在 LTE/EPC 中, DRB 和核心网的 EPS 承载是一一对应的
- Rel-17 不支持 FR2 到 FR2 的 DAPS
- 不能与 DC、RACH-less 切换共存