<!-- title: 5G NSSF网络切片选择信令机制全链拆解 -->
<!-- domain: slicing-mec -->

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

> 聚焦 3GPP TS 23.501 §5.15、TS 23.502 §4.2.2.2、TS 29.531 中的网络切片选择（Network Slice Selection）机制——从 UE 携带 Requested NSSAI 发起注册，到 AMF 调用 Nnssf_NSSelection 服务计算 Allowed NSSAI，再到 AMF 重选与 NSI 实例映射的全链路信令拆解。

---

## 一、切片选择为什么是 5G 切片体系的"第一道关卡"

5G 网络切片的本质是：在同一张物理核心网与无线接入网之上，虚拟出多个逻辑网络，每个逻辑网络（Network Slice Instance, NSI）对应一种业务特征——eMBB、URLLC、mMTC，乃至运营商自定义的垂直行业专网。但"切片"能否真正落地，并不取决于运维侧拉起了多少个 SMF/UPF 实例，而取决于**控制面在 UE 接入的瞬间能否为它选择到正确的那一张切片**。

这道选择关卡，就是 **Network Slice Selection**（网络切片选择）。它发生在 UE 初始注册阶段，由 AMF 主导、NSSF（Network Slice Selection Function，网络切片选择功能）提供决策辅助。整个机制的产出物只有一个——**Allowed NSSAI**（允许的 NSSAI）。UE 后续所有的 PDU 会话建立、QoS 流、策略执行，都以 Allowed NSSAI 为前提。如果这一步选错或选漏，下游会出现大量"看起来是会话层失败、实则是切片未授权"的疑难杂症。

本文将从 S-NSSAI 的比特结构讲起，逐步拆解 NSSF 两大 SBI 服务、注册期完整信令时序、AMF 重选机制，并给出抓包识别与排错实战。

---

## 二、S-NSSAI 与 NSSAI 体系（TS 23.501 §5.15.2 / §5.15.3）

理解切片选择，必须先理解它的"语言"——**S-NSSAI**。一个 S-NSSAI 是一张网络切片的全局标识符，其结构定义在 TS 23.501 §5.15.2，由两个字段构成：

```mermaid
graph LR
    subgraph SNSSAI["S-NSSAI (32 bit)"]
        SST["SST<br/>Slice/Service Type<br/>8 bit"]
        SD["SD (可选)<br/>Slice Differentiator<br/>24 bit"]
    end
    SST -- "标准化值<br/>1=eMBB 2=URLLC 3=mMTC" --> VAL1["0~127: 标准化<br/>128~255: 运营商自定义"]
    SD -- "同一SST下进一步区分<br/>如不同企业专网" --> VAL2["24位可表示<br/>~1600万种差异"]
    style SST fill:#cfe8ff,stroke:#1976d2
    style SD fill:#d7ffd9,stroke:#388e3c
```

- **SST（Slice/Service Type，切片/业务类型）**：8 比特。取值 `1` = eMBB，`2` = URLLC，`3` = mMTC，这些是标准化值（范围 0–127）。128–255 留给运营商自定义。
- **SD（Slice Differentiator，切片区分符）**：24 比特，**可选**。当多个切片具有相同 SST 时，用 SD 进一步区分。例如同为 eMBB（SST=1），企业 A 与企业 B 的专网可通过不同 SD 隔离。

**NSSAI** 则是 S-NSSAI 的集合，一次注册中一个 NSSAI 最多包含 **8 个** S-NSSAI。围绕 UE 的生命周期，3GPP 定义了 5 种 NSSAI 形态，它们之间的流转关系是排错的核心：

```mermaid
stateDiagram-v2
    [*] --> Subscribed: UDM/UDR 开户配置
    Subscribed --> Configured: AMF下发Configured NSSAI<br/>(Registration Accept)
    Configured --> Requested: UE本地组合<br/>(取Configured的子集)
    Requested --> Allowed: NSSF计算<br/>(订阅∩请求∩TA可用)
    Allowed --> Rejected: TA/PLMN不支持<br/>或未订阅
    Requested --> Rejected: 未订阅的S-NSSAI
    Rejected --> [*]: 退避或重新协商
    note right of Allowed
      唯一可用于
      建立PDU会话的集合
    end note
```

| NSSAI 类型 | 存储位置 | 含义 | 谁来决定 |
|-----------|---------|------|---------|
| **Subscribed S-NSSAI** | UDM/UDR | 用户在 HPLMN 开户时签约的切片 | 运营商 BSS/OSS |
| **Configured NSSAI** | UE + AMF | 当前服务 PLMN 可用的切片配置 | AMF（HPLMN 或 VPLMN） |
| **Requested NSSAI** | UE | UE 本次注册主动请求的切片 | UE（Configured 的子集） |
| **Allowed NSSAI** | UE + AMF | 经授权、当前 TA 可实际使用的切片 | NSSF 计算、AMF 下发 |
| **Rejected NSSAI** | UE | 本次被拒绝、待退避的切片 | AMF/NSSF |

> **设计意图**：为什么搞出 5 种 NSSAI？因为切片选择横跨**签约域（Subscribed）、网络部署域（Configured）、用户意愿域（Requested）、地理可用域（TA）** 四个维度。这 5 种 NSSAI 是把这四个维度两两求交的结果表达，使得"用户想用 + 网络允许 + 此地可达"三者同时满足的切片才会进入 Allowed NSSAI。这是 5G 把"按需切片"做到可控、可追溯的关键工程抽象。

---

## 三、NSSF 网元职责与两大 SBI 服务（TS 29.531）

NSSF 在架构上定义于 TS 23.501 §6.2.6，其 SBI 接口定义于 **TS 29.531**。它通过 HTTP/2 的服务化接口向 AMF（漫游场景下也向 VPLMN 的 NSSF、SMF、NWDAF）提供两类服务：

### 3.1 Nnssf_NSSelection —— 切片选择核心服务

被 AMF 在注册、PDU 会话建立、UE 配置更新时调用，查询该 UE 应使用的切片及配套信息。这是本文的主角。其 RESTful 端点为：

```
GET /nnssf-nsselection/v2/network-slice-information
```

### 3.2 Nnssf_NSSAIAvailability —— 切片可用性管理

被 AMF 用来向 NSSF **上报**自己在各跟踪区（TA）所支持的 S-NSSAI，并可**订阅**可用性变更通知。当某 AMF 集合的切片能力发生变化时，NSSF 反向通知相关 AMF。这对应 TS 23.502 §4.2.3 "Network Slice-specific authorization and update"。

NSSF 返回的核心数据结构是 **AuthorizedNetworkSliceInfo**（授权网络切片信息），其中封装了切片选择的全部决策结果：

```mermaid
graph TD
    ANSI["AuthorizedNetworkSliceInfo<br/>(NSSF 200 OK 响应体)"]
    ANSI --> A1["allowedNssai<br/>允许的NSSAI(本TA)"]
    ANSI --> A2["configuredNssai<br/>(含HPLMN映射)"]
    ANSI --> A3["targetAmfSet<br/>目标AMF集合ID"]
    ANSI --> A4["candidateAmfList<br/>候选AMF实例"]
    ANSI --> A5["nsiInformationList<br/>NSI实例+关联NRF"]
    ANSI --> A6["mappedHomeNssai<br/>漫游VPLMN↔HPLMN映射"]
    ANSI --> A7["rejectedNssaiInTa<br/>本TA被拒的S-NSSAI"]
    style ANSI fill:#fff3cd,stroke:#f57c00
```

> **设计意图**：NSSF 不是一个单纯"查表返回 yes/no"的网元。它的响应同时回答了三个问题——**(1) 这个 UE 能用哪些切片（allowedNssai）**、**(2) 这些切片由谁服务（targetAmfSet / nsiInformationList → SMF/UPF 池）**、**(3) 漫游下如何与归属网络对齐（mappedHomeNssai）**。把这三者打包在一次 GET 响应里，是为了让 AMF 一次决策即可完成切片授权 + 网元定址 + 漫游映射，避免控制面多次往返。

---

## 四、注册期完整切片选择信令时序（TS 23.502 §4.2.2.2）

下面是 UE 初始注册时，**默认 AMF 无法服务请求切片**而触发 NSSF 决策与 AMF 重选的完整时序。这是切片选择最复杂、也最考验实现的场景：

```mermaid
sequenceDiagram
    autonumber
    participant UE
    participant gNB as (R)AN/gNB
    participant IAMF as 初始AMF<br/>(默认)
    participant UDM
    participant NSSF
    participant NRF
    participant TAMF as 目标AMF<br/>(切片专用)

    UE->>gNB: RRC SetupComplete<br/>携带 NAS Reg Request(含 Requested NSSAI)
    gNB->>IAMF: N2 Initial UE Message<br/>(含 NAS、TAI、Requested NSSAI)
    Note over IAMF: 初始AMF发现自己<br/>不支持Requested中的某些S-NSSAI
    IAMF->>UDM: Nudm_SDM_Get<br/>取 Subscribed S-NSSAI
    UDM-->>IAMF: 返回签约切片列表
    IAMF->>NSSF: GET /nnssf-nsselection/v2/<br/>network-slice-information<br/>(slice-info-for-registration, tai)
    Note over NSSF: 计算: Subscribed ∩ Requested ∩ TA可用<br/>确定 Allowed NSSAI、AMF Set、NSI
    NSSF-->>IAMF: 200 OK AuthorizedNetworkSliceInfo<br/>(targetAmfSet, nsiInformationList)
    Note over IAMF: 基于targetAmfSet<br/>判断需AMF重选
    IAMF->>NRF: Nnrf_NFDiscovery<br/>(按AMF Set发现目标AMF)
    NRF-->>IAMF: 返回TAMF实例信息
    rect rgb(245, 245, 245)
    Note over IAMF,gNB: AMF重选 (RAN转发方式)
    IAMF->>gNB: NGAP RerouteNAS Request<br/>(含原始NAS、Routing ID指向AMF Set)
    gNB->>TAMF: N2 Initial UE Message<br/>(转发Registration Request)
    end
    TAMF->>TAMF: 按Allowed NSSAI继续注册流程<br/>(鉴权、安全、SMC)
    TAMF-->>gNB: N2 + NAS Registration Accept<br/>(含 Allowed NSSAI)
    gNB-->>UE: Registration Accept(Allowed NSSAI)
```

### 关键信令消息逐条解析

**① Registration Request（NAS，TS 24.501）**
UE 在 NAS 层 `Registration request` 消息的 `5GS registration type` 之后，携带 `Requested NSSAI`（若 UE 已有 Configured NSSAI）。若 UE 首次接入、无 Configured NSSAI，则可能携带 `Default Configured NSSAI Indication`。IE 关键点：

- `Requested NSSAI` 是 UE 主动想用的切片，必须是 Configured NSSAI 的子集，否则网络会忽略越界的 S-NSSAI。
- 漫游场景下 UE 还会带 `Mapped Home NSSAI` 与 `Pending NSSAI` 字段。

**② N2 Initial UE Message（NGAP，TS 38.413）**
gNB 透传 NAS 消息给 AMF，同时携带 `User Location Information (TAI)` 与 `TAI List for Warning`。TAI 是后续 NSSF 判断"此 TA 是否支持该切片"的输入。

**③ Nudm_SDM_Get（AMF↔UDM）**
AMF 用 SUPI 向 UDM 拉取签约数据，其中 `AccessAndMobilitySubscriptionData` 含 `Subscribed S-NSSAI` 列表，每项带 `defaultIndication`（是否默认切片）。

**④ Nnssf_NSSelection_Get（AMF↔NSSF，本流程核心）**

| 请求参数（query） | 必选/条件 | 作用 |
|------------------|----------|------|
| `nf-type` | 必选 | 调用方类型，NSSF 校验仅 AMF 或异 PLMN NSSF 可调 |
| `nf-id` | 必选 | 调用方 NF 实例 ID |
| `slice-info-request-for-registration` | 注册场景条件必选 | 含 RequestedNssai、SubscribedNssai、DefaultConfiguredSnssaiIndication、TAI |
| `tai` | 本 PLMN 必选 | 跟踪区标识，决定 TA 级切片可用性 |
| `home-plmn-id` | 漫游必选 | 用于 VPLMN↔HPLMN 切片映射 |
| `supported-features` | 可选 | 特性协商 |

NSSF 收到后执行四步校验与计算（详见 free5GC 实现逻辑）：**鉴权调用方 → 校验 TAI/PLMN → 对比 Requested 与 Subscribed 求 Allowed NSSAI → 确定 Configured NSSAI 映射、NSI-ID、AMF Set、NRF 定址**。

**⑤ 200 OK AuthorizedNetworkSliceInfo（NSSF→AMF）**
响应体即上文结构图，含 `targetAmfSet` 与 `nsiInformationList`。若 S-NSSAI 未订阅或不在此 TA 支持，落入 `rejectedNssaiInTa`。

**⑥ NGAP RerouteNAS Request（AMF→gNB，TS 38.413）**
这是 AMF 重选的 **RAN 转发方式**。初始 AMF 在 NGAP 层向 gNB 发 `Reroute NAS Request`，携带原始 NAS 消息体（封装在 `Rerouted NAS Message` 容器）与指向目标 AMF Set 的 `Routing ID`，以及可选 `Allowed NSSAI`、`PDU Session ID`、`Masked IMEISV` 等。gNB 据此将 Registration Request 当作一次新的 `Initial UE Message` 转发给目标 AMF。

> **设计意图**：为什么 AMF 重选要让 gNB"绕一圈"转发，而不是 AMF 之间直接 Namf 调用？因为 **N2 信令连接（UE-associated logical NGAP connection）是绑定在 gNB↔AMF 这一段上的**。若 AMF 直接把上下文交给新 AMF，gNB 的 N2 连接仍指向旧 AMF，会导致后续 N2 消息（如初始上下文建立）投递错位。通过 RAN 转发，gNB 会与目标 AMF 重建 N2 关联，保证控制面连接的一致性。这是 3GPP 在"切片选择灵活性"与"N2 连接一致性"之间的精妙折中。

---

## 五、Nnssf_NSSelection_Get 关键 IE 深度说明

下表把请求与响应两侧的高频 IE 集中说明，便于抓包比对：

| 方向 | IE 名称 | 类型 | 说明 / 排错关注点 |
|------|--------|------|------------------|
| 请求 | `RequestedNssai` | list&lt;Snssai&gt; | UE 请求切片；若空则 NSSF 用 Subscribed 的 default |
| 请求 | `SubscribedNssai` | list | AMF 从 UDM 取得，作为授权基准 |
| 请求 | `DefaultConfiguredSnssaiIndication` | bool | UE 用了默认配置切片的标志 |
| 请求 | `tai` | TAI | **本 TA 是否支持切片的判定依据** |
| 响应 | `allowedNssai` | list | 最终下发 UE 的可用切片 |
| 响应 | `targetAmfSet` | string | 触发 AMF 重选的依据 |
| 响应 | `nsiInformationList` | list | 每项含 `nsiId` + `nrfId`，供 SMF 发现本切片的 NF |
| 响应 | `mappedHomeNssai` | list | 漫游下 VPLMN S-NSSAI → HPLMN S-NSSAI 映射 |
| 响应 | `rejectedNssaiInTa` | list | 被拒切片，UE 需退避（默认 24h） |

---

## 六、与其他切片相关机制的对比

| 维度 | Nnssf_NSSelection（本文） | Nnssf_NSSAIAvailability | NSSAA（切片二次认证） |
|------|--------------------------|--------------------------|----------------------|
| 触发时机 | 注册/PDU 建立/UCU | AMF 启动、能力变更 | Allowed NSSAI 中含需认证切片 |
| 主体方向 | AMF **请求** NSSF | AMF **上报** NSSF | AMF ↔ AUSF/AAA |
| 核心输出 | Allowed NSSAI + AMF Set + NSI | 切片可用性数据库 | 切片是否被授权使用 |
| TS 章节 | TS 29.531 | TS 29.531 | TS 23.502 §4.20、TS 33.501 |
| 关系 | 上游：决定"能用什么" | 配套：维护"哪里有什么" | 下游：决定"是否真的能用" |

---

## 七、抓包识别：如何在 Wireshark 中认出这个流程

### 7.1 抓包过滤建议

在 N22 接口（AMF↔NSSF，HTTP/2 over TCP）上抓取：

```
# 过滤 NSSF 的 SBI 调用
http2.headers.path contains "network-slice-information"
# 或按端口
tcp.port == <NSSF端口>
```

### 7.2 识别要点

1. **HTTP/2 GET 请求**，path 为 `/nnssf-nsselection/v2/network-slice-information`，query 串含 `slice-info-request-for-registration=` 与 `tai=`。
2. 响应 `:status` = `200`，body 为 JSON，含 `allowedNssai` 数组。
3. 若返回 `403 Forbidden`，body 是 `ProblemDetails`（含 `cause`、`invalidParams`），通常因调用方非 AMF 或参数缺失。
4. **NGAP 层**：寻找 `Reroute NAS Request`（消息名 `RerouteNASRequest`），其 `Routing ID` 字段即目标 AMF Set 的标识——这是 AMF 重选发生的铁证。
5. **NAS 层**：在最终 `Registration Accept` 的 `5GS network feature support` 之后，定位 `Allowed NSSAI` IE，与 UE 请求比对，确认切片是否被授权。

### 7.3 典型成功标志

- 注册后 `Allowed NSSAI` 非空、且含 UE 期望的 S-NSSAI。
- 无 `RerouteNASRequest`（说明默认 AMF 即可服务，切片选择一次命中）。
- 后续 PDU 会话建立中，SMF 选定与该 S-NSSAI 对应的 UPF。

---

## 八、常见故障点与排错思路

| 现象 | 可能根因 | 排错动作 |
|------|---------|---------|
| UE 请求切片，Allowed 中却为空 | Requested S-NSSAI 未在 UDM 签约 | 查 UDM 的 `Subscribed S-NSSAI`；核对 SUPI |
| 同一 UE 移动后切片消失 | 该 TA 不支持该切片 | 查 gNB/AMF 的 TA-Slice 映射；看 NSSF 返回 `rejectedNssaiInTa` |
| 反复 AMF 重选、注册失败死循环 | targetAmfSet 内无可用 AMF 实例 | 查 NRF 注册情况、AMF Set 切片能力配置 |
| 漫游下切片不可用 | VPLMN/HPLMN S-NSSAI 映射缺失 | 查 `mappedHomeNssai`；核实漫游协议 |
| NSSF 返回 403 | 调用方非 AMF / 缺 tai | 检查 nf-type、nf-id、tai 参数完整性 |
| 切片"通了但很慢" | NSI 选到了远端 UPF | 查 `nsiInformationList`→NRF→SMF 选锚点是否本地 |

> **排错心法（3glteinfo 总结）**：切片问题**大多先暴露在会话层（PDU Session Establishment），而非注册层**。当会话建不起来时，第一步必须回溯注册期的 Allowed NSSAI，确认请求切片是否真的进了 Allowed 列表——否则容易误判为 SMF/UPF 故障。

---
## 常见问题

**Q1: Allowed NSSAI 与 Requested NSSAI 的区别是什么？**
A: Requested NSSAI 是 UE 单方面的"意愿"，可能含未签约或不在此 TA 可用的切片；Allowed NSSAI 是网络在签约、策略、TA 可用性三维约束下计算出的"实际可用"结果。UE 后续只能基于 Allowed NSSAI 建 PDU 会话。

**Q2: AMF 重选一定会发生吗？**
A: 不一定。若默认 AMF 已支持 UE 请求的全部切片，则 NSSF 返回的 Allowed NSSAI 不触发 `targetAmfSet` 重选，注册一次完成。只有当默认 AMF 能力不足时才重选。

**Q3: 为什么一个 NSSAI 最多 8 个 S-NSSAI？**
A: 出于 NAS 信令开销与空口效率的平衡（TS 23.501 §5.15.2）。8 个足以覆盖典型多切片场景，同时避免 Registration 消息过长。

**Q4: NSSF 在漫游下如何工作？**
A: VPLMN 的 AMF 调用本地 V-NSSF，V-NSSF 可能再咨询 H-NSSF；返回的 Allowed NSSAI 用 VPLMN 的 S-NSSAI，并通过 `mappedHomeNssai` 维持与 HPLMN 签约切片的对应关系，保证计费与策略一致。

**Q5: NSI-ID 有什么用？**
A: NSI-ID（Network Slice Instance ID）把"逻辑切片"映射到"具体的一组 NF 实例（SMF/UPF 池）"。NSSF 在 `nsiInformationList` 中给出 NSI-ID 与关联 NRF，SMF 据此发现本切片专用的网元，实现切片间资源隔离。

---

## 参考来源

1. [3GPP TS 29.531 — 5G System; Network Slice Selection Services; Stage 3](https://www.3gpp.org/dynareport/29531.htm) — Nnssf_NSSelection / Nnssf_NSSAIAvailability SBI 定义、AuthorizedNetworkSliceInfo 结构
2. [3GPP TS 23.501 — System architecture for the 5G System](https://www.3gpp.org/dynareport/23501.htm) — §5.15 Network Slicing、S-NSSAI 格式、NSSAI 类型、AMF 选择
3. [3GPP TS 23.502 — Procedures for the 5G System](https://www.3gpp.org/dynareport/23502.htm) — §4.2.2.2 注册流程及 AMF 重选子流程
4. [free5GC — Network Function NSSF Introduction](https://free5gc.org/blog/20260128/20260128/) — NSSF 两大服务工作流与开源代码实现解析（Kai-Hung, Hu, 2026-01-28）
5. [3GLTEInfo — 5G Network Slice Selection Procedure](https://www.3glteinfo.com/call-flows/network-slice-selection/) — 端到端切片选择呼叫流程、消息表与排错要点

---

> 本文由「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学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
