5G系统中,当源gNB与目标gNB之间不存在Xn接口、Xn接口不可用或Xn切换被拒绝时,系统回退到N2-based Handover——即核心网控制的切换流程。与Xn切换的gNB直连旁路架构不同,N2切换将AMF推上"信令中继仲裁者"的位置,所有控制面信令经由AMF在两个gNB之间转发。
N2切换在3GPP TS 23.502 V18.x中定义为Section 4.9.3.2(Intra-AMF N2 Handover)和Section 4.9.3.3(Inter-AMF N2 Handover)。NGAP层面由TS 38.413定义Handover Preparation/Resource Allocation/Execution/Completion四阶段状态机。PFCP层面由TS 29.244定义SMF与UPF之间的会话修改规则。
设计意图:N2切换是Xn切换的"安全网"。它的代价是更高的切换时延(约20-40ms额外开销),但换来了对任意网络拓扑的普适支持——跨厂商、跨AMF区域、跨PLMN边界均可工作。
以下信令流基于TS 23.502 Section 4.9.3.2 Figure 4.9.3.2.2-1,覆盖从测量报告到路径切换的全链路:
sequenceDiagram
participant UE
participant S_gNB as Source gNB
participant AMF
participant SMF
participant UPF as UPF(PSA)
participant T_gNB as Target gNB
Note over UE,T_gNB: Phase 1: Handover Preparation
UE->>S_gNB: Measurement Report (Event A3/A5)
S_gNB->>S_gNB: HO Decision (Xn unavailable)
S_gNB->>AMF: NGAP Handover Required
Note right of S_gNB: IE: Target ID, Source-toTarget-TransparentContainer,<br/>PDU Session Resource List,<br/>HO Type (intra5GS)
AMF->>SMF: Nsmf_PDUSession_UpdateSMContext Request
Note right of AMF: IE: HO State=PREPARING,<br/>Target ID, N2 SM Info
SMF->>UPF: PFCP Session Modification Request
Note right of SMF: IE: Create FAR(forwarding),<br/>DL PDR with forwarding action
UPF-->>SMF: PFCP Session Modification Response
Note right of UPF: IE: F-TEID(forwarding tunnel)
SMF-->>AMF: Nsmf_PDUSession_UpdateSMContext Response
Note right of SMF: IE: N2 SM Info,<br/>QoS Flow Profile,<br/>Forwarding Tunnel Info
AMF->>T_gNB: NGAP Handover Request
Note right of AMF: IE: UE AggregateMaxBitRate,<br/>PDU Session Resource Setup List,<br/>Security Context,<br/>Source-toTarget-TransparentContainer
T_gNB->>T_gNB: Allocate Radio Resources
T_gNB-->>AMF: NGAP Handover Request Acknowledge
Note right of T_gNB: IE: Target-toSource-TransparentContainer,<br/>PDU Session Resource Admitted List,<br/>UL NG-U UP TNL Info(TEID)
Note over UE,T_gNB: Phase 2: Handover Execution
AMF->>S_gNB: NGAP Handover Command
Note right of AMF: IE: Target-toSource-TransparentContainer
S_gNB->>UE: RRC Reconfiguration (HO Command)
Note right of S_gNB: IE: targetCellIdentity,<br/>newUE-Identity,<br/>reconfigurationWithSync
Note over S_gNB,UPF: Data Forwarding (DL data buffered)
S_gNB->>T_gNB: DL Forwarding (direct/indirect)
UE->>T_gNB: RRC Connection Reconfiguration Complete
Note right of UE: Random Access + RRC Complete
Note over UE,T_gNB: Phase 3: Handover Completion
T_gNB->>AMF: NGAP Handover Notify
Note right of T_gNB: IE: User Location Info(T-gNB)
AMF->>SMF: Nsmf_PDUSession_UpdateSMContext Request
Note right of AMF: IE: HO State=COMPLETED,<br/>UL Tunnel Info(T-gNB N3 TEID)
SMF->>UPF: PFCP Session Modification Request
Note right of SMF: IE: Update FAR(DL→T-gNB),<br/>Remove Forwarding FAR
UPF->>UPF: Send End Marker on old DL path
UPF-->>SMF: PFCP Session Modification Response
SMF-->>AMF: Nsmf_PDUSession_UpdateSMContext Response
AMF->>S_gNB: NGAP UE Context Release Command
S_gNB-->>AMF: NGAP UE Context Release Complete
NGAP Handover Required(TS 38.413 Section 8.3.1)是N2切换的起点。源gNB在以下条件下发送此消息: - Xn接口不存在或不可用 - Xn切换被目标gNB拒绝 - 源gNB决定需要核心网参与(例如跨AMF区域)
关键IE解析:
| IE名称 | 来源 | 说明 |
|---|---|---|
| Target ID | S-gNB | 目标gNB的Global NG-RAN Node Identifier(含PLMN ID + gNB ID) |
| Source-toTarget-TransparentContainer | S-gNB | AS层上下文容器:含目标Cell ID、UE History、AS Security Context、RRM配置 |
| PDU Session Resource List | S-gNB | 待切换的PDU会话列表,每个会话携带UL NG-U TNL Info(源侧N3 TEID) |
| Handover Type | S-gNB | intra5GS / inter5GS(EPS互操作场景) |
| Cause | S-gNB | 触发原因(如ho-desired-reason-ran-oper) |
AMF收到Handover Required后,需要对每个PDU会话调用Nsmf_PDUSession_UpdateSMContext服务(TS 29.502 Section 6.1.3.2),将HO State设为"PREPARING"。SMF收到后判断是否需要建立数据转发隧道。
PFCP Session Modification(TS 29.244 Section 7.5.4)是数据转发的关键步骤。SMF在UPF上创建转发规则:
| PFCP Rule | 操作 | 说明 |
|---|---|---|
| PDR(Packet Detection Rule) | 创建转发DL PDR | 匹配DL数据流,关联到转发FAR |
| FAR(Forwarding Action Rule) | 创建转发FAR | Apply Action=FORWARD,Forwarding Parameters含目标侧F-TEID |
| BAR(Buffering Action Rule) | 可选 | 在转发隧道建立前缓存DL数据 |
NGAP Handover Request(TS 38.413 Section 8.4.1)从AMF发往目标gNB。这是AMF作为"信令中继"的核心体现——AMF将源gNB的上下文打包转发,加上SMF提供的QoS信息:
| IE名称 | 来源 | 说明 |
|---|---|---|
| UE Aggregate Maximum Bit Rate | AMF/UDM | UE聚合速率上限 |
| PDU Session Resource Setup List | AMF+SMF | 含QoS Flow Profile、S-NSSAI、Session-AMBR |
| Security Context | AMF | 含Security Key、Next Hop Chaining Count |
| Source-toTarget-TransparentContainer | 透传 | 直接从源gNB透传到目标gNB |
| Masked IMEISV | AMF | 终端标识 |
目标gNB资源分配成功后,回复NGAP Handover Request Acknowledge(TS 38.413 Section 8.5.1),其中最关键的IE是PDU Session Resource Admitted List——表示目标侧接受了哪些PDU会话(可能只接受部分),并携带UL NG-U UP TNL Information(目标侧N3上行TEID)。
AMF收到Handover Request Acknowledge后,将目标gNB的容器透传回源gNB(NGAP Handover Command)。源gNB从Ack中提取Target-toSource-TransparentContainer,封装到RRC Reconfiguration消息中发送给UE。
数据转发是执行阶段的关键博弈点。根据TS 23.502 Section 4.9.3.2,存在三种转发模式:
graph TB
subgraph Direct["直连转发 (Direct Forwarding)"]
S1[Source gNB] -->|Xn-U / 直接IP| T1[Target gNB]
end
subgraph Indirect["间接转发 (Indirect Forwarding)"]
S2[Source gNB] -->|N3 tunnel| UPF1[UPF PSA]
UPF1 -->|N9/N3 tunnel| T2[Target gNB]
end
subgraph NoForward["无转发 (No Forwarding)"]
S3[Source gNB] -->|丢弃DL数据| X[Discard]
UPF2[UPF PSA] -->|新N3 tunnel| T3[Target gNB]
end
style Direct fill:#e8f5e9
style Indirect fill:#fff3e0
style NoForward fill:#ffebee
三种转发模式的选择逻辑:
| 模式 | 触发条件 | 优缺点 |
|---|---|---|
| Direct Forwarding | S-gNB与T-gNB间有IP可达性 | 时延最低,但需要gNB间直接IP路由 |
| Indirect Forwarding | 无直接IP路径,需经UPF中转 | 普适性强,但引入额外UPF跳数和PFCP规则开销 |
| No Forwarding | 源侧无缓存数据或对丢包容忍 | 零转发开销,但可能丢包 |
SMF如何决定转发模式:根据TS 23.502 Section 4.9.3.2 Step 7a/7b: - 若SMF判断S-gNB和T-gNB间可直接转发,在N2 SM Info中只携带T-gNB的N3 TEID - 若需间接转发,SMF创建额外的PFCP转发规则,在UPF上建立S-gNB→UPF→T-gNB的N9隧道
End Marker机制(TS 23.502 Section 4.9.3.2 Step 16b):当UPF将DL路径切换到T-gNB后,必须在旧路径上发送一个或多个GTP-U End Marker包。这些标记包的作用是通知目标gNB"旧路径数据已全部到达,之后的数据来自新路径",从而让目标gNB正确排序数据并转发给UE。
UE成功接入目标gNB后,T-gNB发送NGAP Handover Notify(TS 38.413 Section 8.6.1),通知AMF切换完成。此时AMF触发SMF执行路径切换:
当源gNB和目标gNB属于不同AMF的服务区域时,切换涉及Inter-AMF N2 Handover(TS 23.502 Section 4.9.3.3)。核心区别在于:
sequenceDiagram
participant S_gNB as Source gNB
participant S_AMF as Source AMF
participant T_AMF as Target AMF
participant SMF
participant UDM
S_gNB->>S_AMF: NGAP Handover Required
Note right of S_AMF: S-AMF判断Target ID<br/>不属于自己服务的gNB
S_AMF->>T_AMF: Namf_Communication_CreateUEContext Request (N14)
Note right of S_AMF: IE: Target ID,<br/>UE Context(Security,MM State),<br/>PDU Session List,<br/>Source-toTarget-Container
T_AMF->>UDM: Nudm_UECM_Registration
T_AMF->>SMF: Nsmf_PDUSession_UpdateSMContext Request
SMF-->>T_AMF: UpdateSMContext Response
T_AMF->>T_AMF: Forward to Target gNB
T_AMF-->>S_AMF: Namf_Communication_CreateUEContext Response
Note over S_AMF,T_AMF: HO Execution...
T_AMF->>SMF: Path Switch (UpdateSMContext)
S_AMF->>S_AMF: Release Source UE Context
Inter-AMF切换的额外信令开销:
| 额外步骤 | 接口 | 增量时延 |
|---|---|---|
| S-AMF→T-AMF Context Transfer | N14(Namf) | +5-10ms |
| T-AMF→UDM Registration Update | Nudm | +3-5ms |
| S-AMF→T-AMF Response | N14 | +5-10ms |
关键设计点:S-AMF通过Namf_Communication_CreateUEContext服务(TS 29.518 Section 6.1.6.2.3)将完整的UE上下文(含SUPI、Security Context、MM State、PDU Session列表)传给T-AMF。这个服务调用是同步阻塞的——S-AMF必须等T-AMF完成资源准备后才能向S-gNB发送Handover Command。
NGAP层面的切换过程可抽象为以下状态机(基于TS 38.413 Section 8.2):
stateDiagram-v2
[*] --> HO_None : UE in Connected Mode
HO_None --> HO_Preparing : Handover Required sent
HO_Preparing --> HO_Prepared : Handover Request Ack received
HO_Preparing --> HO_Failed : Handover Preparation Failure<br/>or Handover Cancel
HO_Prepared --> HO_Executing : Handover Command sent
HO_Executing --> HO_Completed : Handover Notify received
HO_Executing --> HO_Failed : Handover Failure (T304 expiry)
HO_Completed --> HO_None : UE Context Release Complete
HO_Failed --> HO_None : RRC Reestablishment<br/>or Connection Release
关键定时器:
| 定时器 | 位置 | 超时动作 |
|---|---|---|
| T304 | UE侧 | HO执行失败,发起RRC Reestablishment |
| NGAP HO Guard Timer | AMF侧 | Preparation超时,发Handover Cancel给T-gNB |
| PFCP Response Timer | SMF侧 | UPF无响应,切换流程失败 |
# NGAP Handover Required
ngap.procedureCode == 7 && ngap.handoverRequired
# NGAP Handover Request
ngap.procedureCode == 8 && ngap.handoverRequest
# PFCP Session Modification(HO期间)
pfcp.message_type_value == 53 && pfcp.f_teid
# HTTP/2 Nsmf UpdateSMContext(SBI接口)
http2.header.value contains "sm-contexts" && http2.header.value contains "modify"
| 故障现象 | 可能原因 | 排错方法 |
|---|---|---|
| Handover Required后无Handover Request | AMF无法解析Target ID,或SMF无响应 | 检查AMF日志中Target ID解析,检查Nsmf接口HTTP状态码 |
| Handover Request被拒绝 | T-gNB资源不足或QoS无法满足 | 检查T-gNB的NGAP Cause IE(radio-resources-not-available) |
| UE发送RRC Complete后数据不通 | UPF路径未切换或End Marker未发送 | 检查PFCP Session Modification中的FAR更新,确认DL TEID指向T-gNB |
| 间接转发隧道建立失败 | UPF不支持N9转发或F-TEID分配失败 | 检查PFCP Response中是否有Create FAR失败的原因码 |
| Inter-AMF切换超时 | N14接口不可达或T-AMF过载 | 检查S-AMF→T-AMF的Namf服务调用HTTP 503 |
| ## 7 与Xn切换的对比分析 |
| 维度 | Xn Handover | N2 Handover |
|---|---|---|
| 信令路径 | S-gNB ←Xn→ T-gNB | S-gNB ←N2→ AMF ←N2→ T-gNB |
| AMF参与度 | 仅Notify阶段参与 | 全程中继控制 |
| SMF参与度 | Path Switch Request | 三次Nsmf_UpdateSMContext |
| UPF参与度 | 仅路径切换 | 可能需要间接转发隧道 |
| 典型时延 | 10-20ms | 30-60ms |
| 数据转发 | 默认直连 | 直连/间接/无转发 |
| 适用场景 | 同区域gNB间 | 跨区域/跨AMF/无Xn |
| 3GPP章节 | TS 23.502 §4.9.1.3 | TS 23.502 §4.9.1.4 |
Q1: N2切换中SMF被调用几次UpdateSMContext?各自的作用是什么?
A: 标准Intra-AMF N2切换中SMF被调用3次: 1. Preparation阶段:AMF通知SMF准备切换,SMF在UPF上创建数据转发隧道规则 2. Completion阶段(Handover Notify后):AMF通知SMF切换完成,SMF更新UPF的DL路径指向T-gNB 3. 资源释放阶段:SMF可选地删除数据转发隧道规则,释放旧路径资源
Q2: Direct Forwarding和Indirect Forwarding如何选择?
A: 由SMF决策(TS 23.502 §4.9.3.2 Step 7)。SMF检查S-gNB与T-gNB之间是否有IP路由可达性——如果有,优先使用Direct Forwarding(转发数据直接从S-gNB发给T-gNB,不经过UPF);如果没有,SMF在UPF上建立间接转发隧道,数据经UPF中转。SMF将决策结果通过N2 SM Info告知AMF和目标gNB。
Q3: Inter-AMF N2切换中,S-AMF如何知道目标gNB属于另一个AMF?
A: S-AMF根据Handover Required中的Target ID(Global NG-RAN Node Identifier)查询本地配置或NRF,判断目标gNB是否在自己的服务范围内。如果不在,S-AMF通过NRF发现T-AMF,然后通过N14接口(Namf_Communication_CreateUEContext)将UE上下文传递给T-AMF。
Q4: 为什么UPF切换路径后必须发送End Marker?
A: End Marker是GTP-U协议中定义的标记包(TS 29.281 Section 5.1)。在切换过程中,目标gNB可能同时收到来自旧路径(转发数据)和新路径(直接数据)的下行数据包。End Marker标记了旧路径的最后一个数据包,让目标gNB知道旧路径数据已全部到达,此后可以停止等待转发数据并将新路径数据直接发给UE,避免数据乱序。
Q5: N2切换中PDU会话可以被部分接纳吗?
A: 可以。目标gNB在Handover Request Acknowledge中通过PDU Session Resource Admitted List和PDU Session Resource Failed to Modify List分别指示成功和失败的PDU会话。对于未被接纳的会话,SMF需要在切换完成后决定是释放该会话还是保持其在源侧(取决于运营商策略和会话类型)。
本文由「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 等场景全覆盖。
