在 5G SA 架构中,切片(Network Slicing)是最具革命性的能力之一。一个经常被初学者问到的问题是:既然 UE 已经在 Registration Request 里带了 Requested NSSAI,AMF 自己根据 UDM 的订阅数据做个交集不就行了,为什么还要单独定义一个 NSSF(Network Slice Selection Function)这个网络功能?
这正是理解整个切片选择信令体系的关键。AMF 自己算交集只能解决"这个用户订了哪些切片"的问题,但它无法解决以下三个更深层的决策:
这三个决策的计算逻辑被 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(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 唯一确定。
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 长度与处理复杂度的工程折中。
这是本文的重点。下面这张时序图描绘了 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)
很多人误以为 NSSF 是切片选择的唯一入口,实际上 RAN 才是切片选路的第一棒。根据 TS 23.502 Section 4.2.2.2.2,(R)AN 收到 Registration Request 后,按以下优先级选择 AMF:
这一步在 NAS 信令层面看不到,但它是切片从"逻辑标识"落地到"具体网络实例"的物理起点。
AMF 通过 Nudm_SDM_Get 访问 UDM 的 Nssai 数据集(TS 29.503),拿到该用户签约的全部 S-NSSAI。这里有个细节:每个 Subscribed S-NSSAI 带一个 default 指示位——它决定了当 UE 不带 Requested NSSAI 时,网络用哪些切片作为兜底。Subscribed S-NSSAI 中标记为 default 的那一个,就是保证 UE 永远能接入的"保底切片"。
这是整个机制的灵魂步骤。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 拒绝的切片 |
NSSF 收到请求后,做的不是简单交集,而是多维约束求解:
Allowed NSSAI = Subscribed NSSAI
∩ Requested NSSAI(若提供,否则全部 Subscribed)
∩ (当前 TA 支持的切片集合)
-- 并对每个结果附加 HPLMN 映射
为什么要把"当前 TA 支持的切片"这一维度放进 NSSF 而非 AMF?因为切片部署是网络全局拓扑的运维属性,AMF 不应感知(也不应硬编码)"区域 A 部署了 URLLC 切片,区域 B 没有"。NSSF 作为唯一的策略中枢,统一持有这张"切片地理可用性地图",使切片扩容/迁移只改 NSSF 数据,全网 AMF 自动适配。
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 路由信息——这是切片从注册态"常驻"过渡到会话态"激活"的衔接点。
当 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 切换是网络自治的。
在 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 实际请求/被授权切片的直接证据。
| 现象 | 根因 | 排查思路 |
|---|---|---|
| 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 级准入"到"数据面隔离"的落地。
Nnssf_NSSSelection 服务与 NSSelectionGet/NSSelectionAvailabilityForPDU 操作定义Nnssf_NSSelection 服务与 NSI 映射逻辑本文由「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 等场景全覆盖。
