在前面几篇里,我们拆解过"切换流程"的整体骨架、走过旁路核心网的"Xn切换"、还看过为抢时间而提前起跳的"条件切换"。这些都是终端从一个基站挪到另一个基站时,数据尽量不丢、话音尽量不断的故事。但你有没有想过一个更基础的问题:如果两个基站之间根本没有"直连通道"(Xn接口),或者这条通道暂时不可用,切换还能不能做?
答案当然是能。当 gNB 之间的直达专线走不通时,整个切换流程会被"托付"给核心网里的 AMF(接入与移动性管理功能)来居中仲裁——这就是N2切换,也叫 NGAP 切换。它是 Xn 切换的对偶:一个走"基层直达",一个走"上层转呈"。理解了它,你才真正拼齐了移动性管理的完整版图。
我们用一个非常生活化的类比来建立直觉。
想象你是一个转学的学生(UE),要从 A 学校(源 gNB)转到 B 学校(目标 gNB)。
你看,两种切换本质上办的是同一件事(转学/搬数据),差别只在信令走哪条路。N2 切换就是那条"没有直达线时的兜底之路"。这个"兜底"二字非常关键——它不是更优选择,而是保证可用性的最后手段。
很多新人会把这两种切换搞混,根源在于没有抓住"信令路径"这个核心区别。我们用一张表把它们彻底分清。
| 对比维度 | Xn 切换(直连) | N2 切换(核心网仲裁) |
|---|---|---|
| 信令路径 | 源 gNB → 目标 gNB(直达,走 Xn-C) | 源 gNB → AMF → 目标 gNB(绕核心网) |
| 是否依赖 Xn 接口 | 必须(Xn 链路可用) | 不要求 |
| 准备阶段时延 | 低(一跳直达) | 较高(多一跳经 AMF 转发) |
| 数据转发典型方式 | 直接转发(Xn-U 专线) | 常用间接转发(经 UPF 中转) |
| 路径切换由谁发起 | 目标 gNB 向 AMF 发 Path Switch Request | AMF 自身已仲裁,直接通知 SMF 切换 |
| 核心网感知深度 | 较浅(核心网"事后才知道") | 深度参与(核心网全程"在场") |
| 何时使用 | Xn 可用、同一 AMF 服务区优先 | 无 Xn、跨 AMF、跨厂商、安全上下需重建等 |
记住一句话:能用 Xn 就用 Xn,用不了 Xn 才退而求其次走 N2。 这不是规定,而是工程上的自然选择——谁会放着直达专线不用,非要去绕教育局呢?但专线偶尔会断、偶尔还没建好、偶尔两边根本不是一个体系,这时 N2 就是不可替代的保命手段。
这里有个设计哲学值得细品:5G 故意保留了"直连"和"经核心网"两条切换路径并存。直连追求低时延、核心网追求强管控与广覆盖。两条路、两种价值取向同时存在,网络才能在效率与鲁棒性之间自由伸缩。 这是一种典型的"分级兜底"架构。
N2 切换流程虽然多绕了一圈,但骨架极其清晰,可划分为准备阶段(Preparation)、执行阶段(Execution)、完成阶段(Completion)三幕。下面这张时序图是全文的核心,请反复对照。
sequenceDiagram
participant UE as UE(终端)
participant SgNB as 源 gNB
participant AMF as AMF(移动性管理)
participant SMF as SMF(会话管理)
participant UPF as UPF(用户面)
participant TgNB as 目标 gNB
Note over UE,TgNB: ===== 第一幕:准备阶段(Preparation) =====
UE->>SgNB: 测量报告(邻区信号更好)
SgNB->>SgNB: 切换决策,选定目标 gNB
SgNB->>AMF: ① Handover Required(含目标ID/容器/PDU会话)
AMF->>SMF: 请求目标侧会话资源准备
SMF-->>AMF: 返回目标侧QoS流与转发信息
AMF->>TgNB: ② Handover Request(含安全上下文/容器)
TgNB->>TgNB: 接纳控制 + 资源预留
TgNB-->>AMF: ③ Handover Request Acknowledge(含目标→源容器/转发地址)
AMF->>SgNB: ④ Handover Command(转交目标侧RRC配置)
SgNB->>UE: ⑤ RRC Reconfiguration(切换命令)
Note over UE,TgNB: ===== 第二幕:执行阶段(Execution) =====
UE->>SgNB: (可选) 上行数据继续发送
SgNB->>UPF: ⑥ 数据转发(间接:经UPF到目标)
UPF->>TgNB: 转发下行缓存数据
UE->>TgNB: ⑦ 随机接入,与目标同步
TgNB-->>UE: 接入完成
TgNB->>AMF: ⑧ Handover Notify(无线侧已到位)
Note over UE,TgNB: ===== 第三幕:完成阶段(Completion) =====
AMF->>SMF: 触发N3路径切换(下行TEID改指向目标)
SMF->>UPF: 切换下行隧道到目标 gNB
UPF->>SgNB: ⑨ End Marker(标记旧路数据已到尾)
SgNB->>TgNB: End Marker 继续前转
UPF->>TgNB: 下行数据走新路直达
AMF->>SgNB: ⑩ UE Context Release Command
SgNB-->>AMF: UE Context Release Complete
Note over UE,TgNB: 切换完成,资源归位
这张图信息量很大,但只要把握"三幕戏"的节奏,就不会乱。下面我们逐幕拆解。
准备阶段的核心动作是:让目标 gNB 心里有数、手里有资源,并准备好一份给终端的"搬家指南"。
① Handover Required(切换请求)——源 gNB 的"请示报告"
源 gNB 综合测量报告、负载、邻区关系做出切换决策后,向 AMF 发送 Handover Required。这条消息里塞了几样关键东西:
② Handover Request(切换请求)——AMF 的"派单"
AMF 收到请示后,先和 SMF 打交道(通过 N11 接口),确认目标侧的 PDU 会话资源、QoS 流该怎么准备,然后向目标 gNB 下发 Handover Request。这条消息携带了安全上下文、要建立的 QoS 流、以及那个透明容器。此刻目标 gNB 才第一次"认识"了这个 UE。
③ Handover Request Acknowledge(切换请求确认)——目标 gNB 的"接收函"
目标 gNB 做完接纳控制(Admission Control)和资源预留后,回送 Acknowledge。里面最关键的是 Target-to-Source Transparent Container(装着目标侧为终端准备好的 RRC 配置)和数据转发地址(告诉我把缓存数据往哪发)。AMF 同样只是转发,不解析。
④ Handover Command(切换命令)——AMF 的"批复"
AMF 把目标侧的确认整理成 Handover Command 下发给源 gNB,源 gNB 再用 ⑤ RRC Reconfiguration 把"搬家指南"亲手交给终端。
设计要点:准备阶段全程,AMF 像个尽责的"中介"——它搬运信息、却不篡改、不解析无线细节。透明容器这个机制,是核心网与无线网解耦的经典范例,也是多厂商互通得以成立的基础。
终端收到 RRC 切换命令后,断开与源 gNB 的连接,⑦ 向目标 gNB 发起随机接入完成同步。这就是终端的"起跳"。
但起跳的瞬间有个致命问题:正在传输的数据怎么办? 空中接口这一跳有几十毫秒的中断,下行数据如果没人接住,就会全部丢失。这就引出移动性管理里最精彩的设计——数据转发(Data Forwarding)。
⑥ 数据转发:源 gNB 把还没来得及发给终端的下行 PDCP PDU,沿着转发隧道送给目标 gNB,由目标 gNB 在终端接入后"接力"投递。这样,即便终端在搬家,数据也提前一步到了新家等着。
目标 gNB 确认终端已成功接入后,发送 ⑧ Handover Notify 告诉 AMF:"无线侧到位了。"这是执行阶段结束的信号。
终端到位只是"无线成功",真正的"切换成功"还要完成用户面路径的切换。
路径切换:由于 N2 切换全程由 AMF 仲裁,AMF 在收到 Handover Notify 后已知道一切,于是直接触发 SMF 把 N3 隧道的下行终点(F-TEID)从源 gNB 改指向目标 gNB。UPF 此后把新的下行数据直接送给目标 gNB,不再走源 gNB。注意这里的细节:
与 Xn 切换不同——Xn 切换是目标 gNB 主动向 AMF 发
Path Switch Request来请求换路;而 N2 切换因为 AMF 本来就全程在场,不需要 gNB 再单独请求换路,AMF 直接驱动 SMF 切换。这是两种切换在"完成阶段"最隐蔽却最本质的区别之一。
⑨ End Marker(结束标记)——精巧的"句号"
路径切换后,旧路上可能还残留着一些"在途数据包"。UPF 会向源 gNB 发送一个特殊的空数据包——End Marker。源 gNB 收到后,会把它沿着转发隧道继续前转给目标 gNB。目标 gNB 一看到 End Marker,就明白:"这是旧路转来的最后一份数据,之后的下行包都来自新直连路径了。" 于是目标 gNB 可以放心地把旧路数据和新路数据正确拼接、保序投递,既不丢、也不重复。
这个小设计堪称通信协议里的"神来之笔"——用一个空包当分隔符,优雅地解决了"两条数据流如何无缝合并"的难题,无需任何额外的时间同步机制。
⑩ UE Context Release(上下文释放)
最后,AMF 向源 gNB 发送 UE Context Release Command,源 gNB 释放所有与该 UE 相关的资源,回送 Complete,整个切换正式收摊归位。
数据转发是切换不掉包的核心保障,但它本身也有两种实现方式。这是工程面试和现场调试的高频考点。
flowchart LR
subgraph 直接转发["直接转发(常见于Xn切换)"]
A1[源 gNB] -->|Xn-U 直达隧道| B1[目标 gNB]
end
subgraph 间接转发["间接转发(N2切换常用)"]
A2[源 gNB] -->|N3/N9 转发隧道| U2[UPF]
U2 -->|转发隧道| B2[目标 gNB]
end
style A1 fill:#ffd6d6
style B1 fill:#d6ffd6
style A2 fill:#ffd6d6
style B2 fill:#d6ffd6
style U2 fill:#d6e4ff
直接转发:源 gNB 经 Xn-U 接口把数据直达目标 gNB。时延最低,但前提是两 gNB 之间有可用的 Xn-U 转发通道。显然,N2 切换往往正是因为没有 Xn,所以直接转发不一定能用得上。
间接转发:源 gNB 把数据发给一个 UPF,由 UPF 转投给目标 gNB(通过 SMF 在转发路径上建立的临时 N3/N9 隧道)。不依赖 Xn,覆盖性最好,但多一跳、时延略高。N2 切换场景下,间接转发是更常见的兜底选择。
为什么 N2 常用间接转发? 因为既然已经退回到走核心网,说明直达链路不可靠或不存在,那数据转发也顺势"搭便车"走核心网的 UPF 中转,逻辑自洽、实现统一。
数据转发送过去了,但还有一个隐患:重复和乱序。源 gNB 已经发给终端一部分 PDCP 包,又转发了一部分给目标;终端这边收到的包序列号(SN)如何衔接?这就是 SN Status Transfer(序列号状态传递) 要解决的。
对于采用 RLC 确认模式(AM)、需要无损保序的承载(比如对话类业务),源 gNB 会通过 NGAP 把 PDCP 的上下行 SN 计数状态(下一个该发的 SN、已确认收到的 SN 等)经 AMF 转交给目标 gNB。目标 gNB 拿到后:
flowchart TD
S[源 gNB:统计PDCP SN状态] --> M[AMF:转发,不解析]
M --> T[目标 gNB:据此保序]
T --> R1[下行:从正确SN续发,不重不漏]
T --> R2[上行:知道终端续发位置,去重]
style S fill:#ffd6d6
style T fill:#d6ffd6
style M fill:#d6e4ff
为什么这个机制很重要? 没有它,TCP 层会感知到大量乱序和重传,看似切换成功,用户体验却卡顿掉线。SN 状态传递是让切换在传输层"无感"的幕后功臣。
讲到这里,你可能想问:既然 Xn 又快又好,网络到底在什么情况下才会"被迫"走 N2?典型的触发场景有这几类:
简单说:凡是"直达不通、或核心网需要插手"的情况,就是 N2 登场的舞台。 在现网中,N2 切换占比往往不高,但每一次都发生在关键场景,是网络移动性"安全网"的最后防线。
理论懂了,落到现网调试,N2 切换有几个高频的"坑"值得工程师留意:
| 调试现象 | 可能原因 | 排查方向 |
|---|---|---|
| 准备阶段超时、切换失败 | 目标 gNB 接纳控制拒绝,或 AMF/SMF 资源准备超时 | 看目标侧 Handover Request 是否到达、是否回了 Reject,检查目标小区负载/容量 |
| 数据转发未生效、丢包严重 | 转发隧道未正确建立,或转发地址在 Ack 中缺失 |
检查 Handover Request Acknowledge 里 Data Forwarding Address / TEID 是否正确 |
| 切换后乱序、重传、卡顿 | SN 状态未传递或 AM 承载配置不当 | 核对 NGAP SN Status Transfer 是否正常传递、RLC 模式与保序需求是否匹配 |
| End Marker 缺失导致下行异常 | UPF 旧路径未发送 End Marker | 在 N3 接口抓包确认 End Marker 是否发出、是否被正确前转 |
| 上下文迟迟不释放、资源泄漏 | Handover Notify 未到达 AMF,或释放流程卡住 |
检查目标 gNB 是否发出 Notify、AMF 是否触发 Context Release |
实战建议:5G 网优工程师日常分析 N2 切换,最趁手的工具就是 Wireshark 抓包解码 NGAP。沿着 Handover Required → Handover Request → Ack → Command → Notify → Context Release 这条消息链逐条核对,再结合 N3 接口上的数据转发与 End Marker,几乎能定位 90% 以上的切换异常。
一个常见误解:有人以为"N2 切换一定比 Xn 差、能用就别用"。这话半对半错。N2 时延确实更高,但它在跨域、跨厂商、安全重建等场景下是唯一可行的方案,其价值在于保证可达而非追求极速。评价一种机制,要看它解决的场景,而不是脱离场景比参数。
把这几篇连起来看,5G 的切换家族分工其实非常清晰:
它们不是替代关系,而是同一张移动性安全网的不同网眼:直连够得着就用直连,够不着就让核心网伸手,伸手都来不及就提前跳。层层兜底、各司其职,终端才能在飞驰的高铁上、在密集的街区里,永远保持着那条不断的数据链路。
理解 N2 切换,你就理解了通信网络在"效率"与"鲁棒"之间最朴素的那道取舍:永远为最坏情况留一条路。
Q1: N2 切换和 4G 的 S1 切换是什么关系? A: N2 切换本质上就是 5G 对 4G S1 切换的继承与演进。4G 里基站间经 MME 的切换叫 S1 切换;到了 5G,接口变成 N2、核心网网元变成 AMF/SMF/UPF,但"信令经核心网仲裁、数据经 UPF 转发"的整体思路完全一致。可以理解为换了名字、升级了内部结构的同一种机制。
Q2: 为什么 N2 切换时还要"麻烦" SMF 和 UPF?AMF 一个不行吗? A: 因为 AMF 只管"信令与移动性",而用户面数据走哪条隧道、QoS 流怎么映射,是 SMF(会话管理)和 UPF(用户面)的职责。N2 切换要换路,必然牵涉到 N3 隧道终点的变更和转发隧道的建立,这些必须由 SMF/UPF 落地执行。这是 5G 控制面与用户面分离架构的必然结果。
Q3: End Marker 到底解决了什么问题,为什么不能用别的方法? A: 它解决的是"两条下行数据流(旧路转发 + 新路直达)如何无缝合并"的问题。如果不用 End Marker,目标 gNB 无法知道旧路转发的数据何时结束,可能导致乱序或一直等待。用一个空数据包当分隔符,无需任何全局时钟同步,是最简单、最鲁棒的方案——这是工程上"用巧不用力"的典范。
Q4: 既然 Xn 切换更快,运营商为什么不全网部署 Xn 让 N2 消失? A: 实际上运营商一直在推动 Xn 自动建立(ANR,自动邻区关系),但 N2 仍无法完全消除:跨 AMF、跨厂商、安全上下文重建、以及部分运维策略,都天然需要核心网介入。N2 不是"技术债",而是架构上为鲁棒性预留的必要冗余。
Q5: 终端能感知到走的是 N2 还是 Xn 切换吗? A: 基本感知不到。对终端而言,无论哪种切换,收到的都是 RRC Reconfiguration(切换命令),它只管按指令跳到目标小区。切换路径的选择是网络内部的决策,对终端透明——这也是设计上的有意为之:终端越简单,移动性管理越稳健。
本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护,聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。
[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。
