首页 › core-network › PDU会话SMF选择决策机制

PDU会话SMF选择决策机制:从订阅校验到NRF发现的全链拆解

一、为什么SMF选择是核心网最容易被低估的"决策中枢"

在5G核心网(5GC)服务化架构里,AMF是终端的"接入锚点",UPF是用户面锚点,而SMF(Session Management Function)则是承上启下的会话管理者。每一次PDU会话建立,AMF都必须在毫秒级内回答一个看似简单、实则牵动整网的问题:这个会话该交给哪个SMF来管?

这个问题之所以复杂,是因为SMF选择不是一次单点判决,而是一条多级过滤决策链(multi-stage filtering pipeline)。它要同时满足切片隔离(S-NSSAI)、数据网络可达性(DNN)、用户订阅授权(UDM订阅数据)、就近接入(DNAI/位置)、容灾与负载均衡(SMF Set / FQDN)以及漫游约束(LBO vs Home Routed)六大维度。任何一环失配,都会导致会话建立失败或绕行非预期路径。

本文严格依据 3GPP TS 23.501 §6.3.2(SMF Selection)、§6.3.3(UPF Selection)、TS 23.502 §4.3.2.2(UE-initiated PDU Session Establishment)、TS 29.510(NRF)、TS 29.502(Nsmf)、TS 29.503(Nudm),把这条决策链拆成"订阅校验 → 切片/DNN匹配 → NF发现 → 候选选定"四个阶段,并配合信令时序图、IE结构图与状态机说明设计意图、抓包识别要点与厂商差异。


二、SMF选择的四级决策链总览

AMF在收到UE的PDU Session Establishment Request之后,SMF选择按以下四级展开:

决策级 决策主体 依据 失败结果
L1 切片确定 AMF(必要时查NSSF) Allowed S-NSSAI / Requested NSSAI 切片不可用,注册或会话拒绝
L2 订阅授权 UDM SmfSelectionSubscriptionData DNN/S-NSSAI组合未订阅→拒绝
L3 NF发现 NRF(或DNS) NFProfile中的sNssaiList/dnnList 无候选SMF→404
L4 实例选定 AMF SMF Set FQDN、负载、拓扑、DNAI 负载不均/容灾失效

下面用流程图把这条链可视化:

flowchart TD
    A["UE: PDU会话建立请求<br/>S-NSSAI(可选) + DNN(可选)"] --> B{"AMF: 已有Allowed S-NSSAI?"}
    B -- 否 --> C["NSSF: Nnssf_NSSelection<br/>推导Allowed S-NSSAI"]
    B -- 是 --> D["确定目标S-NSSAI"]
    C --> D
    D --> E["UDM: 取SmfSelectionSubscriptionData"]
    E --> F{"该S-NSSAI+DNN被订阅?"}
    F -- 否 --> G["拒绝:DNN not supported / LBO不允许"]
    F -- 是 --> H{"UE未带DNN?"}
    H -- 是 --> I["取Default DNN"]
    H -- 否 --> J["使用请求DNN"]
    I --> K["NRF: Nnrf_NFDiscovery<br/>target=SMF, S-NSSAI, DNN"]
    J --> K
    K --> L{"响应含SMF Set FQDN?"}
    L -- 是 --> M["DNS解析FQDN→多IP负载均衡"]
    L -- 否 --> N["NRF直接返回SMF实例列表"]
    M --> O["选定SMF实例"]
    N --> O
    O --> P["Nsmf_PDUSession_CreateSMContext"]
    style G fill:#f8d7da
    style O fill:#d4edda

三、完整信令时序:SMF选择嵌在PDU会话建立流中

SMF选择并非独立信令,它"寄生"在PDU会话建立流程(TS 23.502 §4.3.2.2)的前若干步。下图给出从UE发起到N4会话建立的完整时序,其中阴影标注的步骤即为SMF选择的四级动作:

sequenceDiagram
    participant UE
    participant AN as (R)AN
    participant AMF
    participant NSSF
    participant UDM
    participant NRF
    participant SMF
    participant PCF
    participant UPF

    UE->>AN: RRC: NAS PDU Session Establishment Request (N1 SM)
    AN->>AMF: N2透传 + N1 SM容器
    rect rgb(255, 248, 220)
    Note over AMF: L1 切片确定
    AMF->>NSSF: Nnssf_NSSelectionGet (Requested NSSAI)
    NSSF-->>AMF: Allowed NSSAI + NSI ID
    Note over AMF: L2 订阅授权
    AMF->>UDM: Nudm_SDM_Get<br/>(SmfSelectionSubscriptionData)
    UDM-->>AMF: 订阅S-NSSAI/DNN, Default DNN, LBO授权
    Note over AMF: L3 NF发现
    AMF->>NRF: Nnrf_NFDiscovery<br/>(target-nf-type=SMF, S-NSSAI, DNN)
    NRF-->>AMF: NFProfile(sNssaiList/dnnList) 或 nfSetFqdn
    Note over AMF: L4 实例选定
    end
    AMF->>SMF: Nsmf_PDUSession_CreateSMContext<br/>(SUPI, DNN, S-NSSAI, N1, RequestType=initial)
    SMF->>UDM: Nudm_SDM_Get (SM Subscription, DNN, S-NSSAI)
    UDM-->>SMF: DNN配置, SSC, session-AMBR, 5QI, DNAI列表
    SMF->>PCF: Npcf_SMPolicyControl_Create (SM Policy)
    Note over SMF: SMF据此执行UPF选择(§6.3.3)
    SMF->>UPF: N4 Session Establishment (PFCP)
    UPF-->>SMF: N4成功 + F-TEID(N3/N9)
    SMF-->>AMF: CreateSMContext Response<br/>(N1 Accept + N2 Session Resource Setup)
    AMF->>AN: N2 PDU Session Resource Setup Request
    AN->>UPF: 建立N3隧道(GTP-U)
    AN->>UE: RRC Reconfiguration + N1 Accept

需要强调的是:SMF选择是AMF的职责(控制面选控制面),UPF选择则是SMF的职责(控制面选用户面)。两者虽然都涉及DNAI,但决策主体不同——这是初学者最容易混淆的点。


四、关键消息与IE逐条解析

4.1 上行:UE → AMF 的 NAS PDU Session Establishment Request

这条消息(TS 24.501 §8.3.1)承载在N1 SM容器里,是整条决策链的"原料"。AMF据此判断S-NSSAI和DNN是否齐全。

IE 含义 对SMF选择的影响
PDU Session ID 会话标识(0-255) 不影响选择,但用于AMF本地映射
Request type initial request / existing PDU session / modification 仅initial request触发SMF选择
PDU Session Type IPv4/IPv6/Ethernet/Unstructured 必须与候选SMF能力匹配
SSC mode 1/2/3(可选) SSC mode 2允许后续更换SMF/锚点
DNN 数据网络名(可选) 缺失时L1/L2用Default DNN补齐
S-NSSAI 切片(可选,受UE配置/Allowed约束) 缺失时由AMF按注册态Allowed NSSAI或NSSF推导

设计意图:让UE尽量"少说话"——当UE未带DNN/S-NSSAI时,网络侧用注册时已协商的Allowed NSSAI和Default DNN补齐,降低空口信令开销,这也是为什么"什么都不填也能上网"。

4.2 L2授权:AMF → UDM Nudm_SDM_Get (SmfSelectionSubscriptionData)

AMF向UDM请求资源URI /subscription-data/{supi}/smf-selection-subscription-data(TS 29.503)。返回结构里最关键的三个字段:

若请求的S-NSSAI + DNN组合在订阅数据中找不到匹配项,AMF直接以#27 DNN not supported或#72 Non-3GPP access ...等SM cause拒绝,根本不会走到NRF。这是排错时第一个要确认的环节。

4.3 L3发现:AMF → NRF Nnrf_NFDiscovery

这是整个机制最体现服务化架构价值的一步。AMF构造查询条件(TS 29.510 §10.3):

GET /nnrf-disc/v1/nf-instances?target-nf-type=SMF&requester-nf-type=AMF
    &request-nssai={"sst":1,"sd":"010203"}
    &dnn=internet
    &preferred-fqdn=true

NRF按NF Profile中SMF注册时声明的sNssaiList与dnnList做交集匹配,返回候选列表。返回的NFProfile中可能出现两种形态:

4.4 建上下文:AMF → SMF Nsmf_PDUSession_CreateSMContext

选定SMF后,AMF向该SMF发POST(TS 29.502 §5.1),创建SM Context。其SmContextCreateData携带的关键IE:

IE 作用
supi / pei 用户/设备永久标识
pduSessionId 会话标识
dnn / snssai 已确定的网络与切片
pduSessionType / sscMode 会话类型与连续性模式
n1SmMsg 透传UE原始N1 SM容器
servingNfId / servingNetwork AMF身份与PLMN
anType 3GPP / non-3GPP接入
ueLocation 用于UPF选择与DNAI匹配

SMF收到后,自己再向UDM取一次会话管理订阅数据(/sm-data,与AMF取的smf-selection是两套不同的data set),拿到完整的QoS、计费、DNAI列表,然后才执行UPF选择并建N4会话。


五、IE数据结构关系图

下面这张类图刻画了SMF选择涉及的核心数据结构间的依赖关系,便于理解"订阅数据 → 发现数据 → 上下文数据"的流转:

classDiagram
    class SmfSelectionSubData {
        +subscribedSnssaiList: S-NSSAI[]
        +dnnConfiguration: Map~DNN,DnnConfig~
        +lboRoamingAllowed: bool
    }
    class DnnConfig {
        +isDefaultDnn: bool
        +pduSessionTypes
        +sscModes
        +sessionAmbr
    }
    class NFProfile {
        +nfType: SMF
        +nfSetId / nfSetFqdn
        +sNssaiList: Snssai[]
        +dnnList: string[]
        +plmnList
        +capacity / load
    }
    class SmContextCreateData {
        +supi / pduSessionId
        +dnn / snssai
        +n1SmMsg
        +servingNetwork
    }
    class SmContextCreateRsp {
        +n1SmMsg: Accept
        +n2SmInfo: PduSessionRsrcSetup
    }
    SmfSelectionSubData "1" *-- "many" DnnConfig : 内嵌
    NFProfile --> SmfSelectionSubData : AMF据此选SMF
    NFProfile "候选" ..> SmContextCreateData : 选定后生成
    SmContextCreateData ..> SmContextCreateRsp : SMF响应

六、SMF Set 与 FQDN 发现:负载均衡与容灾的关键

Release 16起,3GPP引入NF Set概念(TS 23.501 §5.22),一组SMF实例可共享状态(通过UDSF),任意成员都能接管同一会话,实现无状态弹性(stateless resilience)。SMF Set带来的两种发现方式对比:

维度 NRF实例发现 FQDN/DNS集合发现
返回内容 单个SMF实例IP/FQDN nfSetFqdn(整组域名)
实例选择主体 NRF / AMF本地算法 DNS负载均衡器(轮询/加权/geo)
适用规模 小规模、静态拓扑 大规模云化部署
容灾粒度 单实例级 Set级,成员可动态增删
扩展性 每次扩容需更新NRF 仅改DNS记录,NRF无需变更
标准依据 TS 29.510 §10.3 TS 29.510 §6.2 nfSetFqdn

设计意图:把"实例级选择"从控制面下沉到DNS基础设施,避免NRF成为单点与性能瓶颈,也让运维能像管传统Web服务一样水平扩展SMF——这正是云原生核心网(如华为CloudCore、爱立信dual mode、中兴Common Core)所推崇的模式。


七、AMF侧SMF选择状态机

从AMF视角,单个PDU会话的SMF选择可抽象为如下状态机:

stateDiagram-v2
    [*] --> 待校验 : 收到PDU会话建立请求
    待校验 --> 切片确定 : 取/校验Allowed S-NSSAI
    切片确定 --> 订阅授权 : 查SmfSelectionSubData
    订阅授权 --> 发现阶段 : DNN/S-NSSAI被订阅
    订阅授权 --> 拒绝 : 无订阅/LBO不允许
    发现阶段 --> 已选定SMF : NRF/DNS返回候选
    发现阶段 --> 拒绝 : 无候选SMF(404)
    已选定SMF --> 已建SM上下文 : CreateSMContext成功
    已选定SMF --> 发现阶段 : SMF不可用→重选
    已建SM上下文 --> 会话激活 : N4/N2完成
    会话激活 --> [*]
    拒绝 --> [*]

注意已选定SMF → 发现阶段的回边:当选定的SMF故障或拒绝(如5xx、超时),AMF应回到NRF候选列表重选(TS 23.502 §4.3.2.2 step 9b)。在SMF Set场景下,AMF甚至可在Set内无感切换。


八、漫游场景:V-SMF 与 H-SMF 的额外一层

SMF选择在漫游下分裂为两个子问题(TS 23.501 §6.3.2.2、§4.2):

对比项 LBO Home Routed
SMF数量 1(V-SMF) 2(V-SMF + H-SMF)
用户面锚点 访问地UPF 归属地UPF
选定主体 访问AMF AMF选V-SMF,V-SMF选H-SMF
归属控制 弱(依赖漫游协议) 强
计费位置 访问地 归属地
典型问题 归属策略下发慢 N9跨PLMN时延大

九、实战连接:抓包识别与故障排查

9.1 抓包里如何"看见"SMF选择

SMF选择全程是HTTP/2 over SBI(非传统SCTP/Diameter),用Wireshark过滤:

9.2 五大常见故障点与排错思路

  1. DNN not supported(SM cause #27/28):UDM订阅数据缺该S-NSSAI+DNN组合 → 查smf-selection-subscription-data,确认DNN与isDefaultDnn配置;
  2. NRF返回空(404 no SMF):候选SMF未在NRF注册该sNssaiList/dnnList → 查SMF的nfprofile注册信息;
  3. SMF Set FQDN解析失败:DNS未配置或区域DNS未同步 → 用dig <nfSetFqdn>验证,确认DNS LB返回多IP;
  4. LBO漫游被拒:lboRoamingAllowed=false或漫游协议未签 → 强制走Home Routed或开通LBO授权;
  5. 选错SMF导致绕行:DNAI/位置策略未生效,UPF选在远端 → 查SMF的UPF选择日志与DNAI匹配规则。

十、常见问题

Q1:UE没带DNN,AMF怎么选SMF? A:AMF用UDM订阅数据中该S-NSSAI下的isDefaultDnn=true的DNN补齐,再据此发现SMF。Default DNN机制(TS 23.501 §5.6.4)让"什么都不填也能上网"成为可能。

Q2:NRF发现和FQDN/DNS发现,到底用哪个? A:二者不互斥,由preferred-fqdn参数与NRF返回形态决定。小规模静态网络用NRF实例发现即可;云化大规模部署推荐FQDN发现,把实例选择下沉给DNS LB,扩容只改DNS。

Q3:SMF Set选完后和单SMF实例有什么不同? A:Set内SMF共享会话状态(UDSF),任一成员宕机,Set内其他成员可无缝接管(TS 23.501 §5.22),实现控制面无状态弹性;单实例则需SMF重选,会话需重建。

Q4:漫游时SMF选择为何更复杂? A:引入归属/访问两个PLMN的归属地控制诉求,需在LBO(访问地一跳)与Home Routed(V-SMF+H-SMF两跳)间权衡时延与控制权,由lboRoamingAllowed与漫游协议决定。

Q5:SMF选择和SSC模式(Session and Service Continuity)有什么关系? A:SSC mode 1要求同一SMF/UPF锚点不变(不允许会话存活期内换SMF);SSC mode 2允许网络释放并重建会话时更换SMF/锚点;SSC mode 3允许在保持UE IP的同时插入新SMF/PSA。因此SMF选择策略需与会话的SSC模式联动(TS 23.501 §5.6.9)。


参考来源

  1. 3GPP TS 23.501 V18.x.x — §6.3.2 SMF Selection、§6.3.3 UPF Selection、§5.22 NF Set、§5.6.9 SSC模式
  2. 3GPP TS 23.502 V18.x.x — §4.3.2.2 UE-initiated PDU Session Establishment流程
  3. 3GPP TS 29.510 — §6.2 NFProfile与nfSetFqdn、§10.3 Nnrf_NFDiscovery服务操作
  4. Cisco UCC 5G SMF Configuration and Administration Guide — vDNN映射与漫游SMF选择
  5. 3glteinfo — Slice-Aware PDU Session Establishment — 切片感知PDU会话建立信令流
  6. 5G Technology World — How 5G Network Slicing Works (Part 2) — 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 等场景全覆盖。

51学通信知识星球海报-扫码加入