在5G核心网中,会话与业务连续性(Session and Service Continuity, SSC)机制决定了当UE移动或网络拓扑变化时,一个PDU会话的IP锚点(PSA UPF)是否、以及如何被更换。其中SSC模式3是三种模式中工程实现最复杂、信令交互最"重"的一种:它采用"先建后拆"(make-before-break)策略——在释放旧锚点之前先建立通往同一数据网络的新锚点,并显式改变UE的IP地址。本文依据 TS 23.501 §5.6.9.2.3 与 TS 23.501 §6.3.3.3,结合 TS 23.502 §4.3.2 / §4.23.4 的信令流程,逐条拆解 PSA 重选的触发、UPF 选择算法、N1/N2/N4 关键信息元(IE),以及数据面平滑切换中的 End Marker 防丢包设计。
TS 23.501 §5.6.9 定义了三种SSC模式,理解它们的差异是理解模式3的前提。一个PDU会话在整个生命周期内SSC模式不变(TS 23.501 §5.6.4),因此SSC模式的选择发生在会话建立时,且一旦选定不可中途切换——这正是模式3必须用"重建新会话"而非"修改旧会话"来实现锚点重选的根本原因。
| 模式 | 锚点是否变更 | IP地址是否保持 | 切换时序 | 典型场景 |
|---|---|---|---|---|
| SSC Mode 1 | 否(PSA不变,仅中间UPF/UL CL可变) | 是(保持) | 不中断 | 普通上网、需要IP连续性的长连接 |
| SSC Mode 2 | 是 | 否(变更) | 先拆后建(break-before-make) | 可容忍短暂中断、对路由最优敏感 |
| SSC Mode 3 | 是 | 否(变更) | 先建后拆(make-before-break) | 移动性中既要最优锚点又要尽量不丢包 |
模式3的工程价值正是表格最后一行所揭示的:它把"换锚点"(必然换IP)与"尽量不中断"这两个看似矛盾的需求通过并行双会话调和起来。
TS 23.501 §5.6.9.2.3 对模式3的规范原文(经 iTecSpec 核对)明确写道:
"For PDU Session of SSC mode 3, the network allows the establishment of UE connectivity via a new PDU Session Anchor to the same data network before connectivity between the UE and the previous PDU Session Anchor is released. When trigger conditions apply, the network decides whether to select a PDU Session Anchor UPF suitable..."
这句话定义了模式3的两条铁律:(1) 锚点切换的目标必须是同一数据网络(same DNN + S-NSSAI)的新PSA;(2) 新锚点建立先于旧锚点释放。这与模式2的"释放旧会话后才建立新会话"形成鲜明对比。
读者可能会问:既然要保持业务连续,为什么不直接用 SSC Mode 1 + UL CL(上行分类器)/ Branching Point 来做流量分流?答案是:
flowchart LR
A["移动/分析/AF触发<br/>旧PSA已非最优"] --> B{SSC模式判定}
B -->|Mode 1| C["保留PSA+IP<br/>插入UL CL分流"]
B -->|Mode 2| D["释放旧会话<br/>再建新会话<br/>IP变, 中断"]
B -->|Mode 3| E["并行建立新PSA新IP<br/>迁移业务<br/>后释放旧会话"]
C --> F["IP不变, 最优但锚点不变"]
D --> G["锚点最优, 短暂中断"]
E --> H["锚点最优 + 尽量不中断<br/>IP变更需上层适配"]
style E fill:#d4edda,stroke:#28a745
style H fill:#d4edda,stroke:#28a745
UE在发起PDU会话前,必须先确定该用哪种SSC模式。这一决策由 TS 23.503 §6.6.2 定义的 URSP(UE Route Selection Policy) 中的SSC模式选择策略(SSCMSP) 完成。URSP规则将"应用(通过Traffic Descriptor匹配)"映射到一组路由选择描述子(Route Selection Descriptor),其中可包含以下组件:
当应用发起数据请求时,UE先匹配URSP规则;若规则指定SSC Mode 3,则UE在 PDU SESSION ESTABLISHMENT REQUEST 中携带该模式。SMF收到后会校验订阅:UE请求的模式3必须同时满足UDM签约中的"Default SSC Mode"或"Allowed SSC Mode"(Cisco SMF文档明确:"The SMF verifies if UE sent SSC mode is part of either default SSC mode or allowed SSC mode")。校验失败则拒绝或回退到默认模式。
工程要点:模式3必须在UE侧(URSP)与网络侧(UDM签约)同时被允许,二者缺一不可。这是排错中最常见的"模式协商失败"根因。
TS 23.501 §5.6.9.2.3 指出"When trigger conditions apply, the network decides"。模式3的重锚点触发完全由网络(SMF)决策,UE无法主动发起锚点更换(UE能做的只是"重建会话",但何时重建由网络触发或UE基于本地决策)。典型触发条件包括:
SMF为新PSA选择UPF时,所考虑的输入参数经 iTecSpec 核对,至少包括:
| 输入参数 | 来源 | 在模式3重选中的作用 |
|---|---|---|
| UPF动态负载 | UPF上报/NWDAF | 避开过载节点,实现负载均衡 |
| Analytics(统计/预测) | NWDAF | 预测性重选,提前规避瓶颈 |
| Service Experience分析 | NWDAF | 业务体验驱动的锚点优化 |
| DN Performance分析 | NWDAF | 依据DN侧吞吐/时延选最优锚点 |
| UPF与DN的拓扑/可达性 | OAM配置 | 确保新PSA能直连目标DN(DNAI) |
| UE位置(TA/Cell) | AMF | 选择地理/逻辑最近的UPF |
| DNN、S-NSSAI | 会话上下文 | DNAI约束、切片亲和性 |
| 能力(如支持的QoS、IP类型) | NRF/UPF profile | 能力匹配过滤 |
关键设计:§6.3.3.3 的NOTE指出"在本版本中,SMF对PDU会话UPF选择不使用额外参数"——意味着选择是上述多输入的组合启发式,规范不规定具体打分公式,留给厂商实现,这正是不同厂商行为差异的根源之一。
flowchart TD
T1["触发: 移动/AF/分析/OAM"] --> DEC["SMF锚点重选决策"]
DEC --> Q1{当前会话SSC模式?}
Q1 -->|Mode 1| X1["不换PSA, 插入UL CL"]
Q1 -->|Mode 3| Q2["选新PSA UPF<br/>输入: DNAI/负载/分析/位置"}
Q1 -->|Mode 2| X2["直接释放旧会话"]
Q2 --> Q3["分配新IP/Prefix<br/>新PDU Session ID"]
Q3 --> Q4["建立新会话端到端<br/>N4/N2/N1"]
Q4 --> Q5["业务迁移到新IP"]
Q5 --> Q6["释放旧会话+旧PSA"]
style Q2 fill:#fff3cd
style Q4 fill:#d4edda
style Q6 fill:#f8d7da
下图展示网络触发、UE执行新建立、SMF管理双会话窗口、最后释放旧会话的完整信令链。这是模式3区别于模式1(UL CL)和模式2(直接释放)的核心。
sequenceDiagram
autonumber
participant UE
participant RAN as gNB(RAN)
participant AMF
participant SMFo as SMF(旧, 管旧会话)
participant PSAo as UPF(旧PSA)
participant SMFn as SMF(新)*
participant PSAn as UPF(新PSA)
participant UDM
participant PCF
Note over UE,PSAo: 阶段0: 已有SSC Mode 3会话运行, IP=IP1
SMFo->>SMFo: 检测触发(移动/AF/NWDAF)<br/>判定需重锚点
SMFo->>AMF: N1N2Transfer(指示UE重建同DNN+S-NSSAI会话)
AMF->>UE: 下行NAS(触发新PDU会话建立)
Note over UE,PSAn: 阶段1: 建立新会话(make)
UE->>AMF: UL NAS TRANSPORT<br/>PDU SESSION ESTABLISHMENT REQUEST<br/>(新PDU ID, SSC mode3, DNN, S-NSSAI, 类型)
AMF->>SMFn: Nsmf_PDUSession_CreateSMContext
SMFn->>UDM: Nudm_SDM(Get订阅/SSC允许)
SMFn->>SMFn: 选择新PSA(§6.3.3.3) 分配新IP2
SMFn->>PSAn: N4 PFCP Session Establishment Request<br/>(Create PDR/FAR/QER, 新F-TEID)
PSAn-->>SMFn: N4 PFCP Session Est. Response(F-TEID)
SMFn->>PCF: Npcf_SMPolicyControl_Create
SMFn->>AMF: Namf_Communication_N1N2MessageTransfer<br/>(N1: ESTABLISH ACCEPT含IP2,SSC3; N2: SM info)
AMF->>RAN: N2 PDU SESSION RESOURCE SETUP REQUEST
RAN->>UE: RRC Reconfiguration(N3隧道)
UE-->>RAN: RRC Reconfiguration Complete
RAN-->>AMF: N2 PDU SESSION RESOURCE SETUP RESPONSE
AMF->>SMFn: Nsmf_PDUSession_UpdateSMContext(N2 SM resp)
Note over UE,PSAn: 阶段2: 双会话并行窗口<br/>UE同时持有IP1(旧)与IP2(新)
UE->>UE: URSP/上层把新流绑定到IP2<br/>应用重连(MPTCP/SCTP/应用层)
Note over UE,PSAo: 阶段3: 释放旧会话(break)
SMFn->>SMFo: 互通(经AMF)协调释放旧会话
SMFo->>PSAo: N4 PFCP Session Modification/Deletion<br/>(发End Marker到RAN/UE)
SMFo->>AMF: N1N2Transfer(N1: PDU SESSION RELEASE)
AMF->>UE: 下行NAS(PDU SESSION RELEASE)<br/>旧IP1回收
UE-->>AMF: 上行NAS(PDU SESSION RELEASE ACK)
AMF->>SMFo: UpdateSMContext(释放完成)
Note over UE,PSAn: 终态: 仅IP2+新PSA, 路径最优
注:阶段0的触发指示在标准中由SMF通过现有会话上下文下发;阶段1的新会话可能由同一个SMF承担(SMF不重选,仅换PSA),也可能因UE移出SMF服务区而触发 SMF重选(TS 23.501 §6.3.2),此时由AMF为新会话选择新SMF(图中SMFn即此情形)。两条路径的信令差异主要在
CreateSMContext是否走旧SMF。
| IE | 含义 | 模式3关键点 |
|---|---|---|
| PDU Session ID | 会话标识 | 新会话用不同于旧会话的ID |
| PDU Session Type | IPv4/IPv6/IPv4v6/Ethernet | 模式3常见IPv4v6/IPv6以利迁移 |
| SSC Mode | 请求的SSC模式 | 携带"mode 3" |
| DNN | 数据网络名 | 必须与旧会话相同(重锚点前提) |
| S-NSSAI | 切片 | 必须与旧会话相同 |
| SM PDU DN Container | 可选容器 | 携带UP/应用层信息 |
| IE | 含义 | 模式3关键点 |
|---|---|---|
| PDU Address | 分配的UE IP | 新IP2(≠IP1),模式3换IP的直接体现 |
| SSC Mode | 协商确认的模式 | 确认为mode 3 |
| QoS Rules | QoS规则集 | 新会话QoS |
| Session AMBR | 聚合最大比特率 | 限速 |
| 5GSM Cause | 结果码 | 成功为#200 |
flowchart TD
subgraph PFCP Session Est. Request
A["Create PDR<br/>PDI: F-TEID, SDF Filter"] --> B["Create FAR<br/>Forward: OuterHeaderCreation(N6/N9)"]
B --> C["Create QER<br/>QFI, MFBR/GFBR, Gate"]
C --> D["Create URR<br/>测量/计费上报"]
D --> E["Create BAR<br/>缓存动作规则"]
end
E --> R["新PSA建立N3(到gNB)与N9/N6(到DN)隧道"]
style A fill:#e3f2fd
style B fill:#e3f2fd
关键IE:F-TEID(新PSA为下行分配的N3/N9隧道端点)、Outer Header Creation(封装GTP-U外层头指向gNB或下一个UPF)、PDR中的Source Interface(区分Access侧N3与Core侧N6)。这些是抓包定位"新锚点是否真正就绪"的核心字段。
"先建后拆"虽然降低了中断,但新旧路径并存期间仍存在乱序与重复包风险。TS 23.502 规定在旧PSA释放时,SMF通过N4指示旧PSA发送 End Marker 包(GTP-U扩展头标记的空包)。Cisco UPF文档明确:"At the time of the handover procedure, the PDU session... Constructing the End Marker Packets through UPF"。
End Marker的作用机制:
1. 新会话路径就绪,UE业务流量开始走新PSA(IP2)。
2. SMF向旧PSA下发 PFCP Session Deletion,旧PSA在删除前向RAN方向注入End Marker。
3. gNB收到End Marker后,知道旧隧道上再无数据,可安全丢弃旧隧道的迟到包,避免乱序上送UE。
设计精髓:End Marker是控制面(N4)触发、用户面(GTP-U)传递的"路径终结哨兵",是PSA重选数据面一致性的关键保障,也是TS 29.281(GTP-U)与TS 29.244(PFCP)协同的典范。
stateDiagram-v2
[*] --> ACTIVE_M3: 旧会话(SSC3, IP1)运行
ACTIVE_M3 --> TRIGGER: 网络检测重锚点条件
TRIGGER --> DUAL_WINDOW: 新会话建立完成(IP2就绪)
note right of DUAL_WINDOW
双会话并行: UE持IP1+IP2
业务逐步迁移到IP2
end note
DUAL_WINDOW --> MIGRATING: 上层/URSP绑定新流
MIGRATING --> RELEASE_OLD: 旧流量归零/超时
RELEASE_OLD --> ACTIVE_NEW: 旧会话释放, End Marker
ACTIVE_NEW --> [*]
双会话窗口期(DUAL_WINDOW)的长短取决于上层迁移速度。若应用不支持多宿主(如普通TCP),需等旧连接自然断开后由新会话承载;若用MPTCP/URSP多路径,则可近乎无缝。这是模式3"软连续性"的本质——它保证锚点切换,但不保证单IP连续性。
在Wireshark/TShark(pcap-analyzer可解析NGAP/5G-NAS/PFCP/GTP)中,模式3重选的指纹是:
ESTABLISHMENT REQUEST/ACCEPT,且两个 PDU Address 不同(IP1→IP2)。Session Establishment,其中旧会话随后收到 Session Deletion Request 且携带 End Marker 相关指示。PDU SESSION RESOURCE SETUP,对应两条N3 F-TEID。Npcf_SMPolicyControl_Update 或AF经NEF的 Traffic Influence 创建。TShark 示例:
tshark -r cap.pcap -Y "5gsm.msg_type==0xc1 || pfcp.msg_type==50"可快速过滤建立与PFCP会话创建消息。
| 现象 | 可能根因 | 排查方向 |
|---|---|---|
| UE请求mode3被拒(cause #95/67等) | UDM签约未允许mode3;URSP未下发mode3 | 查UDM SSC Modes;查PCF下发的URSP |
| 新会话建立失败 | 新PSA选择失败(DNAI无可达UPF);N4会话建失败 | 查SMF UPF选择日志;查NRF UPF profile/DNAI配置 |
| 业务中断明显 | 上层未感知IP变更;双窗口过短 | 查URSP是否绑定新流;查应用是否支持多宿主 |
| 乱序/重复包 | End Marker未发送或迟到 | 查旧PSA N4删除是否带End Marker;查gNB处理 |
| 旧会话不释放 | SMF间状态不同步;释放定时器未触发 | 查SMF-AMF UpdateSMContext链路 |
| ## 九、SSC模式3与其他方案的横向对比 |
| 维度 | SSC Mode 1 | SSC Mode 1 + UL CL | SSC Mode 2 | SSC Mode 3 |
|---|---|---|---|---|
| PSA锚点 | 不变 | 不变(原锚点+本地锚点并存) | 变更 | 变更 |
| UE IP | 不变 | 不变 | 变更 | 变更 |
| 切换时序 | N/A(仅中间节点变) | 中间节点插入/移除 | 先拆后建 | 先建后拆 |
| 业务中断 | 无 | 无 | 有(断) | 极低(软连续) |
| 信令开销 | 低 | 中(插BP/UL CL) | 中 | 高(完整重建+释放) |
| 上层适配 | 无 | 无 | 需重连 | 需重连/多宿主 |
| 典型场景 | 普通上网 | 本地分流+IP连续 | 容忍中断 | MEC重定位/大范围移动 |
可见模式3用最高信令开销换取最优锚点+最低中断的平衡,适合对二者都敏感的高价值业务。
Q1: SSC模式3和模式2都换IP,本质区别是什么? A: 时序不同。模式2是break-before-make(先释放旧会话,UE检测到释放后才重建,存在明显中断);模式3是make-before-break(网络先触发UE建立新会话到同一DN,新旧并行,业务迁移后才释放旧会话,中断极低)。两者都换IP,但模式3靠双会话窗口实现软连续。
Q2: 既然换IP,模式3还算"业务连续"吗? A: 连续性分多个层次。模式3保证的是会话级与锚点级连续性(同一DN的连接不丢),但不保证单IP连续性。真正的无缝需上层配合(URSP把新流绑定到新会话、MPTCP多宿主、应用层快速重连)。这正是"会话与业务连续性"而非"IP连续性"命名的由来。
Q3: 模式3重选一定换SMF吗? A: 不一定。若UE仍在当前SMF服务区,SMF不重选,仅由该SMF选择新PSA并管理双会话。若UE移出SMF服务区,则AMF触发SMF重选(TS 23.501 §6.3.2)为新会话选新SMF,此时旧SMF与新SMF需经AMF协调释放旧会话。
Q4: 抓包时如何一眼区分"模式3重建"与"普通新建会话"? A: 看三个指纹:(1) 同UE同DNN+S-NSSAI短时间内出现两个不同PDU Session ID;(2) 两个会话的PDU Address(IP)不同;(3) 其中一个随后被RELEASE且N4删除带End Marker。三者同时出现即为模式3重选。
Q5: UPF选择算法在标准中固定吗?为什么各厂商行为不同? A: 不固定。TS 23.501 §6.3.3.3 只列举了SMF"可考虑"的输入(负载、analytics、DNAI、位置等),其NOTE明确"不使用额外参数",即不规定组合权重公式。打分逻辑属实现细节,因此厂商间存在差异,这也是跨厂商互操作需充分测试的原因。
本文由「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 等场景全覆盖。
