首页 › slicing-mec › 5G NSSF网络切片选择信令机制拆解

5G NSSF 网络切片选择信令机制拆解

一、为什么需要 NSSF:从一个反直觉的设计问题说起

在 5G SA 架构中,切片(Network Slicing)是最具革命性的能力之一。一个经常被初学者问到的问题是:既然 UE 已经在 Registration Request 里带了 Requested NSSAI,AMF 自己根据 UDM 的订阅数据做个交集不就行了,为什么还要单独定义一个 NSSF(Network Slice Selection Function)这个网络功能?

这正是理解整个切片选择信令体系的关键。AMF 自己算交集只能解决"这个用户订了哪些切片"的问题,但它无法解决以下三个更深层的决策:

  1. 网络拓扑维度:在当前 TA(Tracking Area)和当前 PLMN 下,哪些切片实例(NSI)实际部署且可用?不同地理区域、不同漫游场景下可用切片集合不同。
  2. 路由维度:UE 想用的每一个 S-NSSAI,应该被路由到哪个 AMF Set、哪个 NSI、由哪个 NRF 去发现对应的 SMF/UPF?
  3. 漫游与跨域维度:当 UE 漫游到 VPLMN 时,VPLMN 的切片标识与 HPLMN 的切片标识如何映射(Mapping)?

这三个决策的计算逻辑被 3GPP 从 AMF 中解耦出来,封装到 NSSF 中,对外通过 Nnssf_NSSSelection 服务暴露。这种解耦带来的好处是:切片策略(哪些区域部署哪些切片、切片如何映射)的运维变更只影响 NSSF,不需要改动 AMF 的代码与逻辑——这是典型的"策略与执行分离"的架构思想,定义在 TS 23.501 Section 5.15 与 TS 29.531 中。

本文聚焦这个具体机制:Nnssf_NSSSelection 服务的 NSSelectionGet 操作,在 Registration 与 PDU Session Establishment 两个场景下的完整信令链路、关键 IE、以及 AMF Relocation 的触发逻辑。


二、地基:S-NSSAI 与五种 NSSAI 的 IE 结构

2.1 S-NSSAI 的位级结构

切片选择的最小信息单元是 S-NSSAI(Single Network Slice Selection Assistance Information),定义在 TS 23.501 Section 5.15.2。其结构如下:

graph LR
    A["S-NSSAI"] --> B["SST<br/>Slice/Service Type<br/>8 bits 必选"]
    A --> C["SD<br/>Slice Differentiator<br/>24 bits 可选"]
    B --> B1["标准化范围<br/>0x00–0x7F<br/>eMBB=1 eURLLC=2 mMTC=3<br/>VD2X=4 VCMCS=5"]
    B --> B2["运营商自定义范围<br/>0x80–0xFF<br/>不在标准间互通"]
    C --> C1["区分同一 SST 下<br/>的不同切片实例"]
    C --> C2["全0表示缺省SD<br/>即未指定"]
    style A fill:#2d5b8b,color:#fff
    style B fill:#4a90d9,color:#fff
    style C fill:#7ab8e0,color:#fff

设计意图解读:SST 用 8 位标准化取值保证全球互通(一个运营商的 SST=1 在另一个运营商网络里也代表 eMBB),而 SD 用 24 位运营商自定义空间保证同一业务类型下可无限细分(一个运营商可以部署 SST=1, SD=0x000001 给 ToC 消费者 eMBB,SST=1, SD=0x000002 给 ToB 企业 eMBB,互不干扰)。SD 全 0 是合法值,表示该 S-NSSAI 完全由 SST 唯一确定。

2.2 五种 NSSAI 的生命周期

3GPP 定义了 5 种 NSSAI 概念,它们在 UE 与网络的"博弈"中流转。这是切片选择信令要操作的核心数据对象:

NSSAI 类型 存储位置 何时产生 作用域 典型用途
Subscribed NSSAI UDM/UDR 订阅数据 签约时预置 HPLMN 全局 主清单,网络做授权的源头
Configured NSSAI for Serving PLMN UE + AMF AMF 通过 Registration Accept 下发 每个 PLMN 一份 漫游/跨网时 UE 知道该 PLMN 支持哪些切片
Requested NSSAI UE(内存) UE 在 Reg Request 里带 当前注册区 UE 表达"我想用这些切片"
Allowed NSSAI UE + AMF NSSF 计算,AMF 通过 Reg Accept 下发 当前注册区 UE 实际能用的切片,服务受其限制
Rejected NSSAI UE AMF 通过 Reg Accept 下发 分 PLMN / 分 TA 两类 UE 不应再请求这些切片(防乒乓)

下方的状态转换图刻画了这五种 NSSAI 在一次注册过程中的流转关系:

stateDiagram-v2
    [*] --> Subscribed: UDM 签约预置
    Subscribed --> Configured: 首次注册<br/>AMF 派生下发
    Configured --> Requested: UE 发起业务<br/>取 Configured 子集
    Requested --> NSSF: Nnssf_NSSelectionGet
    Subscribed --> NSSF: Nudm_SDM_Get 取数
    NSSF --> Allowed: 取交集+可用性+映射
    NSSF --> Rejected: 不可用/未订阅
    Allowed --> UE_Accept: Registration Accept
    Rejected --> UE_Accept: 同一下发
    Allowed --> Requested: 移动到新 TA<br/>部分失效需重新协商
    note right of Allowed
        UE 所有 PDU Session
        的 S-NSSAI 必须 ∈ Allowed
    end note

一个关键约束(TS 23.501 Section 5.15.5):Configured NSSAI 和 Allowed NSSAI 中最多各 8 个 S-NSSAI。这意味着 UE 在单次注册中最多同时激活 8 个切片——这是 NAS 层 IE 长度与处理复杂度的工程折中。


三、核心信令:NSSF 在 Registration 中的调用时序

这是本文的重点。下面这张时序图描绘了 Initial Registration 中,从 UE 发起请求到最终拿到 Allowed NSSAI 的完整 NSSF 调用链路:

sequenceDiagram
    autonumber
    participant UE
    participant RAN as (R)AN
    participant AMF
    participant AUSF
    participant UDM
    participant NSSF

    UE->>RAN: Registration Request<br/>Requested NSSAI + 5G-GUTI(optional)
    Note over RAN: RAN 切片选路:<br/>1. 用 Requested NSSAI 选 AMF Set<br/>2. 若无 Requested NSSAI 用 Default<br/>3. 若无法决定→选缺省AMF
    RAN->>AMF: N2 Initial UE Message<br/>(含 Requested/Default NSSAI)

    Note over AMF: 检查:本AMF是否已为该UE<br/>持有有效Allowed NSSAI?
    AMF->>UDM: Nudm_SDM_Get (Nssai)<br/>获取 Subscribed NSSAI
    UDM-->>AMF: Subscribed S-NSSAI list<br/>(含 Default 指示位)

    AMF->>NSSF: Nnssf_NSSelectionGet<br/>(NSSelectionGet 操作)
    Note right of AMF: 关键请求IE:<br/>- subscribed-nssai<br/>- requested-nssai<br/>- home-plmn-id<br/>- roaming-indication<br/>- ta-id (隐含于ngap)<br/>- nf-type=AMF

    Note over NSSF: 计算:<br/>Allowed = Subscribed ∩<br/>Requested ∩ 该TA可用切片
    NSSF->>NSSF: 生成 Allowed NSSAI<br/>+ Target AMF Set<br/>+ NSI 信息<br/>+ HPLMN 映射
    NSSF-->>AMF: NSSelectionGet Response
    Note left of NSSF: 关键响应IE:<br/>- allowed-nssai(含mappedSnssai)<br/>- configured-nssai(for serving PLMN)<br/>- target-amf-set<br/>- candidate-amf-list<br/>- nrf-amf<br/>- nsi-information[]
    Note over AMF: 若本AMF ∈ target-amf-set?<br/>→ NO: 触发 AMF Relocation
    Note over AMF: (这里假定 YES,继续)

    AMF-->>UE: Registration Accept<br/>Allowed NSSAI + Rejected NSSAI<br/>+ Configured NSSAI(for serving PLMN)

3.1 第 1–2 步:RAN 侧的切片选路

很多人误以为 NSSF 是切片选择的唯一入口,实际上 RAN 才是切片选路的第一棒。根据 TS 23.502 Section 4.2.2.2.2,(R)AN 收到 Registration Request 后,按以下优先级选择 AMF:

  1. 若 UE 提供 Requested NSSAI,RAN 据此选择支持这些 S-NSSAI 的 AMF/AMF Set;
  2. 若未提供,用 Configured NSSAI 或 Default NSSAI;
  3. 若都无法判断,路由到一个默认 AMF,由该默认 AMF 后续触发完整切片选择与重定向。

这一步在 NAS 信令层面看不到,但它是切片从"逻辑标识"落地到"具体网络实例"的物理起点。

3.2 第 3 步:AMF 取 Subscribed NSSAI

AMF 通过 Nudm_SDM_Get 访问 UDM 的 Nssai 数据集(TS 29.503),拿到该用户签约的全部 S-NSSAI。这里有个细节:每个 Subscribed S-NSSAI 带一个 default 指示位——它决定了当 UE 不带 Requested NSSAI 时,网络用哪些切片作为兜底。Subscribed S-NSSAI 中标记为 default 的那一个,就是保证 UE 永远能接入的"保底切片"。

3.3 第 4 步:AMF 调用 NSSF——核心交互

这是整个机制的灵魂步骤。AMF 作为 NF service consumer,通过 SBI(HTTP/2 + JSON)调用 NSSF 的 Nnssf_NSSSelection 服务的 NSSelectionGet 操作。请求 URI 形如:

GET /nnssf-nsselection/v1/network-slice-information?
    nf-type=AMF&
    slice-info-request-for-registration=...

下表是 NSSelectionGet 请求与响应中最关键的 IE 说明(依据 TS 29.531 Section 6.1):

方向 IE 名称 类型 必选 含义与作用
请求 nf-type enum 是 发起者类型,注册场景为 AMF
请求 slice-info-request-for-registration object 注册场景必选 封装 subscribed/requested/allowed NSSAI、home-plmn-id、roaming-indication
请求 requested-nssai list 否 UE 请求的切片,漫游时为 mapped 到 VPLMN 的值
请求 home-plmn-id PlmnId 否 漫游/取映射时使用
请求 roaming-indication enum 否 home-network / roaming / local-breakout
响应 allowed-nssai list 是 核心输出:含 sNssai + mappedHomePlmnSnssai
响应 configured-nssai ConfiguredSnssai 否 漫游时下发,含 supported features
响应 target-amf-set string 否 切片实际应归属的 AMF Set 名
响应 candidate-amf-list list 否 目标 AMF Set 内的候选 AMF
响应 nrf-amf Uri 否 用于发现 target AMF Set 的 NRF 地址
响应 nsi-information list 否 每个 S-NSSAI 对应的 NSI 及其 NRF
响应 rejected-nssai-in-plmn / rejected-nssai-in-ta list 否 被 PLMN/TA 拒绝的切片

3.4 NSSF 的计算逻辑(设计意图)

NSSF 收到请求后,做的不是简单交集,而是多维约束求解:

Allowed NSSAI = Subscribed NSSAI 
                ∩ Requested NSSAI(若提供,否则全部 Subscribed)
                ∩ (当前 TA 支持的切片集合)
                -- 并对每个结果附加 HPLMN 映射

为什么要把"当前 TA 支持的切片"这一维度放进 NSSF 而非 AMF?因为切片部署是网络全局拓扑的运维属性,AMF 不应感知(也不应硬编码)"区域 A 部署了 URLLC 切片,区域 B 没有"。NSSF 作为唯一的策略中枢,统一持有这张"切片地理可用性地图",使切片扩容/迁移只改 NSSF 数据,全网 AMF 自动适配。


四、NSI 信息:从逻辑切片到物理实例的桥接

nsi-information 是 NSSF 响应中常被忽略却极为关键的 IE。一个 Network Slice Instance(NSI) 是切片的物理部署实例,由 NSI-ID 标识。一个逻辑 S-NSSAI 可以对应一个或多个 NSI(切片实例的弹性伸缩)。

graph TD
    UE["UE 请求 S-NSSAI<br/>SST=1, SD=0x000001"]
    UE --> NSSF["NSSF 决策"]
    NSSF --> NSI1["NSI-ID = NSI-001<br/>部署于华东区域<br/>NRF-East"]
    NSSF --> NSI2["NSI-ID = NSI-002<br/>部署于华南区域<br/>NRF-South"]
    NSSF --> Map["nrf 字段指向<br/>相应NSI的NRF"]
    NSI1 --> SMF1["SMF-East / UPF-East<br/>一组切片专用NF实例"]
    NSI2 --> SMF2["SMF-South / UPF-South"]
    style UE fill:#2d5b8b,color:#fff
    style NSSF fill:#4a90d9,color:#fff
    style NSI1 fill:#7ab8e0,color:#fff
    style NSI2 fill:#7ab8e0,color:#fff

设计意图:NSSF 不直接告诉 AMF "用哪个 SMF",而是告诉它"用哪个 NRF 去发现该 NSI 的 SMF"。这遵循了 5GC 无状态 + NRF 动态发现的架构原则。后续 PDU Session Establishment 时,SMF 会用这个 NSI-ID 做进一步选择(TS 23.502 Section 4.3.2.2.1 中 SMF 选择与 NSI-ID 的关系)。

PDU 会话场景下,AMF/SMF 会调用 NSSF 的另一个操作 NSSelectionAvailabilityForPDU(TS 29.531 Section 6.2),传入 slice-info-request-for-pdu-session(含 S-NSSAI、NSI-ID),NSSF 返回该切片在 PDU 粒度的可用性与 NSI 路由信息——这是切片从注册态"常驻"过渡到会话态"激活"的衔接点。


五、AMF Relocation:切片选路失败的自动纠正

当 NSSF 返回的 target-amf-set 与当前接收 Registration 的 AMF 所属 Set 不一致时,触发 AMF Relocation due to Slicing(TS 23.502 Section 4.2.9)。这是切片机制保证"UE 落到能服务其切片的 AMF"的核心纠错流程:

sequenceDiagram
    autonumber
    participant UE
    participant RAN as (R)AN
    participant OldAMF as 默认AMF<br/>(Set-A)
    participant NSSF
    participant NewAMF as 目标AMF<br/>(Set-B)

    UE->>RAN: Registration Request (Requested NSSAI)
    RAN->>OldAMF: 无法确定切片,路由到默认AMF
    OldAMF->>UDM: Nudm_SDM_Get (Nssai)
    OldAMF->>NSSF: NSSelectionGet
    NSSF-->>OldAMF: target-amf-set=Set-B (≠Set-A)
    Note over OldAMF: 发现自己不在目标Set<br/>必须重定向
    OldAMF->>NewAMF: Namf_Communication<br/>RegistrationForward (携带NAS)
    Note right of OldAMF: 或通过RAN重新路由<br/>5G-GUTI指示新AMF Set
    NewAMF->>NSSF: (可选)再次确认NSSelection
    NewAMF-->>UE: Registration Accept (Allowed NSSAI)

两种重定向路径: - RAN 触发重路由:Old AMF 通过 N2 指令让 RAN 把 Registration 重新发给 target AMF Set 内的 AMF(依赖 5G-GUTI 中编码的 AMF Set 信息)。 - AMF 间直接转发:Old AMF 调用目标 AMF 的 Namf_Communication_RegistrationCompleteMove / NAS 转发,把上下文搬过去。

这一机制保证了"切片不可用就换 AMF"对 UE 透明——UE 只感知到一次注册成功,背后的 AMF 切换是网络自治的。


六、抓包识别与排错实战

6.1 抓包如何识别切片选择流程

在 SBI 接口抓包(通常在 AMF↔NSSF、AMF↔UDM 链路上),关键识别特征:

协议层 识别特征
HTTP/2 GET /nnssf-nsselection/v1/network-slice-information
消息体 slice-info-request-for-registration、allowed-nssai、nsi-information
NGAP(N2) Network Slice Selection Information IE、Allowed NSSAI IE
NAS(5GMM) NSSAI IE(Reg Request/Accept 携带)

NAS 层的 NSSAI IE 编码定义在 TS 24.501 Section 9.11.3.37,每个 S-NSSAI 编码为 SST(1字节) + [mapted SST] + SD(3字节),是排查 UE 实际请求/被授权切片的直接证据。

6.2 常见故障点与排错

现象 根因 排查思路
UE 拿到的 Allowed NSSAI 为空 Requested NSSAI 与 Subscribed 不匹配 核对 UDM 订阅数据中 SST/SD 与 UE 请求值(注意大小端、SD 全0)
反复触发 AMF Relocation NSSF 的 target-amf-set 配置与 RAN 选路不一致 检查 NSSF 中 AMF Set 与切片的映射表、RAN 的切片配置
UE 持续收到某切片被 Reject 切片在当前 TA 未部署 查 NSSF 的"切片地理可用性"数据,或 Rejected NSSAI 的 reject 类型(PLMN/TA)
漫游场景切片映射错误 HPLMN↔VPLMN S-NSSAI 映射表缺失 核对 NSSF/UDM 的 mappedHomePlmnSnssai 映射配置
PDU 会话建立失败"切片不可用" NSI 未部署或 NRF 不可达 查 nsi-information 中 nrf 地址,确认对应 NSI 的 SMF 已注册
## 七、常见问题

Q1:NSSF 是必需的吗?不用行不行? A:在非漫游且单切片场景下,AMF 可不调用 NSSF 而自行用 Subscribed NSSAI 派生 Allowed NSSAI(TS 23.501 允许的简化路径)。但一旦涉及多切片部署、AMF Set 划分、漫游映射,NSSF 就是必需的。商用网络基本都部署 NSSF。

Q2:Allowed NSSAI 和 Subscribed NSSAI 的区别? A:Subscribed 是签约全集(UDR 里存的),Allowed 是当前注册区实际可用的子集(NSSF 算出的)。Allowed ⊆ Subscribed,且还要满足"该 TA 有部署"。Allowed 会随 UE 移动到新 TA 而可能缩减。

Q3:为什么 Requested NSSAI 不存在时 UE 仍能注册? A:因为 Subscribed NSSAI 里有标记为 default 的 S-NSSAI。UE 不带 Requested NSSAI 时,网络用这些默认切片兜底,保证基础连通性。这也是为什么很多非切片感知的 UE(如普通手机)照样能注册。

Q4:AMF Relocation 会让 UE 重新走一遍完整注册吗? A:不会。Relocation 主要是上下文转发(Old AMF→New AMF),NAS 层对 UE 表现为一次注册,认证流程的中间结果(如已完成的 AKA 鉴权)可复用,不会重复鉴权。

Q5:NSI-ID 在哪一接口上真正起作用? A:主要在 PDU 会话建立与 SMF/UPF 选择环节。NSSF 把 NSI-ID 传给 AMF,AMF 在选择 SMF 时将其作为约束(TS 23.502 Section 4.3.2.2.1),SMF 进而选择属于该 NSI 的 UPF——这是切片从"AMF 级准入"到"数据面隔离"的落地。


参考来源

  1. 3GPP TS 29.531 — 5G System; Network Slice Selection Services; Stage 3 — Section 5/6: Nnssf_NSSSelection 服务与 NSSelectionGet/NSSelectionAvailabilityForPDU 操作定义
  2. 3GPP TS 23.501 — System architecture for the 5G System — Section 5.15 Network slicing、Section 5.15.2 S-NSSAI、Section 5.15.5 NSSAI 数量约束
  3. 3GPP TS 23.502 — Procedures for the 5G System — Section 4.2.2.2 Registration(含切片选择)、Section 4.2.9 AMF Relocation、Section 4.3.2.2.1 SMF 选择
  4. ShareTechnote — 5G Network Slicing — Allowed/Configured/Requested NSSAI 概念图解与时序
  5. free5GC — Network Function NSSF Introduction — 开源实现视角下的 Nnssf_NSSelection 服务与 NSI 映射逻辑
  6. 3glteinfo — NSSF in 5G Explained — NSSF 与 AMF/UDM/PCF 交互流程

本文由「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学通信知识星球海报-扫码加入