5G核心网学习平台
NSSF 实践篇 #03

5GC实践篇之NSSF篇第12篇:requestedNssai与subscribedNssai部分匹配时的切片选择

《5G核心网原理与实践》实践篇 · NSSF 网元功能

5GC实践篇之NSSF篇第12篇:requestedNssai与subscribedNssai部分匹配时的切片选择

作者:爱卫生


1 测试背景与用例简介

在上一篇(第11篇)中,我们讨论了一个极端场景——UE请求的切片与用户签约的切片完全没有交集,NSSF通过默认切片回退机制保障了用户的基本接入能力。但在实际网络运营中,更常见的一种场景是:Requested NSSAI与Subscribed S-NSSAIs存在部分交集,但NSSF上只支持交集中的部分切片(最高优先级的切片)

这是一个典型的"部分匹配"场景。它与"完全无交集"(第11篇)和"完全匹配"(正常场景)都不同,是介于两者之间的中间状态。在这种场景下,NSSF需要做出更精细的判断:在交集的切片中,哪些切片在NSSF上有配置(即有对应的AMF Set可以服务),哪些没有。只有NSSF上配置了的切片,才能被纳入Allowed NSSAI;而没有配置的切片,则需要被放入Rejected NSSAI,告知UE这些切片暂时不可用。

本测试的网络配置

在本测试环境中,切片相关配置如下:

配置项 配置内容
AMF SET1支持的切片 切片1、切片2
UE签约切片(Subscribed) 切片1、切片2、切片3
UE默认签约切片(Default) 切片1
UE请求的切片(Requested) 切片2、切片3
NSSF切片配置 PLMN1->TA1->AMF SET1->切片1;PLMN1->TA1->AMF SET1->切片2

关键差异:UE签约了切片1、2、3,请求了切片2、3,交集是切片2和切片3。但是,NSSF上只为切片1和切片2配置了AMF SET1,切片3没有配置任何AMF Set。因此,NSSF只能为切片2返回Allowed NSSAI和目标AMF,切片3将被放入Rejected NSSAI。

Requested NSSAI与Subscribed NSSAI部分匹配时的完整信令流程


sequenceDiagram

    participant UE

    participant RAN as (R)AN

    participant AMF

    participant UDM

    participant NSSF

    Note over UE, NSSF: UE发起注册请求,携带Requested NSSAI(2,3)

    UE->>RAN: Registration Request

    Note right of UE: 携带Requested NSSAI:<br/>切片2、切片3

    RAN->>AMF: N2 Message (Registration Request)

    rect rgb(230, 245, 255)

        Note over AMF, UDM: AMF获取用户签约切片信息

        AMF->>UDM: Nudm_SDM_Get (GET)

        Note right of AMF: 获取Subscribed S-NSSAIs

        UDM-->>AMF: 200 OK

        Note left of UDM: Subscribed NSSAI: 切片1,2,3<br/>Default NSSAI: 切片1

    end

    Note over AMF: AMF比对交集: 切片2,3<br/>AMF SET1只支持切片1,2<br/>无法全部支持,需查询NSSF

    rect rgb(255, 245, 230)

        Note over AMF, NSSF: AMF向NSSF发起切片选择查询

        AMF->>NSSF: Nnssf_NSSelection_Get

        Note right of AMF: 携带Requested NSSAI(2,3)<br/>Subscribed NSSAI(1,2,3)<br/>Default NSSAI(1)

        NSSF-->>AMF: Nnssf_NSSelection_Get Response

        Note left of NSSF: Allowed NSSAI: 切片2<br/>Rejected NSSAI: 切片3<br/>Configured NSSAI: 切片1,2<br/>Target AMF Set: SET1

    end

    AMF-->>RAN: Registration Accept (含Allowed NSSAI: 切片2)

    RAN-->>UE: Registration Accept

部分匹配的切片选择逻辑


flowchart TD

    A["AMF收到UE Registration Request"] --> B["提取Requested NSSAI: 切片2, 切片3"]

    B --> C["向UDM获取Subscribed S-NSSAIs: 切片1,2,3"]

    C --> D["计算交集: 切片2,3"]

    D --> E["交集不为空,但AMF只支持切片1,2"]

    E --> F["AMF无法全部支持交集切片3"]

    F --> G["AMF向NSSF发起切片查询"]

    G --> H["NSSF检查交集切片的配置"]

    H --> I["切片2: NSSF有配置 - AMF SET1"]

    H --> J["切片3: NSSF无配置 - 无AMF Set"]

    I --> K["切片2纳入Allowed NSSAI"]

    J --> L["切片3纳入Rejected NSSAI"]

    K --> M["返回Allowed: 切片2, Rejected: 切片3"]

    style D fill:#c8e6c9,stroke:#2e7d32,stroke-width:2px

    style J fill:#ffcdd2,stroke:#c62828,stroke-width:2px

    style K fill:#c8e6c9,stroke:#2e7d32,stroke-width:2px

    style M fill:#e3f2fd,stroke:#1565c0,stroke-width:3px


测试目的

验证当Requested NSSAI与Subscribed S-NSSAIs存在交集,但NSSF只支持交集中的部分切片时,NSSF能够正确地将已配置的切片纳入Allowed NSSAI,将未配置的切片纳入Rejected NSSAI,并返回正确的目标AMF Set信息。

测试前置条件

  1. SA网络中各网元系统及操作维护台运行正常,终端和网络连接正常。

  2. 终端、RAN、AMF、UDM、NSSF等网元均支持切片选择功能。

  3. 环境已配置好相关的切片信息:

  4. AMF SET1支持切片1和切片2;

  5. UE在UDM签约的切片类型为切片1、切片2、切片3,默认签约切片为切片1;

  6. NSSF上配置了切片信息:PLMN1->TA1->AMF SET1->切片1,PLMN1->TA1->AMF SET1->切片2;

  7. 切片3在NSSF上没有配置对应的AMF Set。

  8. 测试终端携带的Requested NSSAI为切片2和切片3。

  9. 服务化接口的信令监控、分析工具准备就绪。

测试步骤

  1. 用户发起Registration Request流程,请求消息中携带Requested NSSAI(切片2、切片3);RAN将Registration Request发送给AMF。

  2. AMF向UDM获取用户的签约信息(Subscribed S-NSSAIs),其中包含签约切片1、切片2、切片3以及默认切片1。

  3. AMF判断Requested NSSAI(2,3)与Subscribed S-NSSAIs(1,2,3)的交集为切片2和切片3,但AMF SET1只支持切片1和切片2,无法全部支持交集中的切片3,因此向NSSF发送切片查询请求。

  4. 查看AMF发送给NSSF的Nnssf_NSSelection_Get请求消息。

  5. 查看NSSF返回给AMF的Nnssf_NSSelection_Get Response消息,重点关注Allowed NSSAI、Rejected NSSAI、Configured NSSAI和目标AMF Set。

  6. 查看AMF发送给UE的Registration Accept应答消息。

测试结果验证(预期)

  1. AMF向NSSF发送Nnssf_NSSelection_Get请求消息,携带NF Type、NF Id、Subscribed S-NSSAIs(切片1、2、3,指明Default为切片1)、Requested S-NSSAIs(切片2、切片3)、TAI、PLMN ID等信元。

  2. NSSF返回Nnssf_NSSelection_Get Response消息,携带:

  3. Allowed S-NSSAI:切片2(NSSF有配置的切片);

  4. Rejected NSSAI:切片3(NSSF无配置的切片);

  5. Configured S-NSSAI:切片1、切片2;

  6. Target AMF Set:SET1。

  7. AMF根据NSSF的响应,为UE分配Allowed NSSAI(切片2),完成注册流程。


2 信令深度解析

在本测试中,核心挑战在于NSSF对"部分匹配"场景的处理。UE请求了切片2和切片3,两者都在用户的签约列表中(这是与第11篇的关键区别),但NSSF上只有切片2有对应的AMF配置,切片3没有。NSSF需要同时返回Allowed NSSAI(切片2)和Rejected NSSAI(切片3),让AMF和UE都清楚地知道哪些切片可用、哪些不可用。

(注:为保护网络安全,以下log中的SUPI/IMSI标识、网元IP等敏感信息已做严格脱敏处理)

2.1 UE发起注册请求(Registration Request)

UE向网络发起注册流程,在Registration Request消息中携带Requested NSSAI(切片2和切片3)。这两个切片都在用户的签约范围内,但只有切片2在NSSF上有AMF配置。


sequenceDiagram

    participant UE

    participant RAN as (R)AN

    participant AMF

    Note over UE, AMF: Step 1: UE发起注册

    UE->>RAN: Registration Request

    Note right of UE: 携带信元:<br/>- 用户标识: SUCI/5G-GUTI<br/>- Requested NSSAI: 切片2, 切片3<br/>- 5GS Registration Type: Initial Registration

    RAN->>AMF: N2 Initial UE Message

    Note left of RAN: RAN根据Requested NSSAI<br/>选择AMF并将消息路由

信令抓包解析:


# 1. UE -> RAN -> AMF(Registration Request)

Frame: 2015

NAS-5GS Message: Registration Request

  Protocol Discriminator: 5GS Mobility Management (0x7)

  Message Type: Registration Request (0x41)

  5GS Registration Type: Initial Registration

  # --- 用户标识 ---

  Mobile Station Identifier: SUCI

    SUPI Format: IMSI

    MCC: 460

    MNC: XX

    MSIN: 00000XXXX

    # SUPI: imsi-460XX00000XXXX(已脱敏)

  # --- 请求的切片信息 ---

  Requested NSSAI

    S-NSSAI 1:

      SST: 2

      SD: "000002"

      # 切片2: UE请求的第一个切片

    S-NSSAI 2:

      SST: 3

      SD: "000003"

      # 切片3: UE请求的第二个切片

    #  注意: 切片2和切片3都在签约列表中

    # 但只有切片2在NSSF上有AMF配置


2.2 AMF获取用户签约切片信息(Nudm_SDM_Get)

AMF收到Registration Request后,向UDM获取用户的签约数据。


sequenceDiagram

    participant AMF

    participant UDM

    Note over AMF, UDM: Step 2: AMF获取签约切片信息

    AMF->>UDM: Nudm_SDM_Get (GET)

    Note right of AMF: GET /nudm-sdm/v1/<br/>imsi-460XX00000XXXX/nssai

    UDM-->>AMF: 200 OK

    Note left of UDM: 响应体含Nssai:<br/>singleNssais: 切片1, 切片2, 切片3<br/>defaultSingleNssais: 切片1

信令抓包解析:


# 2. AMF -> UDM(查询用户切片信息 GET请求)

Frame: 2021

HEADERS[5]: GET /nudm-sdm/v1/imsi-460XX00000XXXX/nssai

# 3. UDM -> AMF(返回NSSAI签约数据)

Frame: 2025

HEADERS[3]: 200 OK

JavaScript Object Notation: application/json

  Object

    # ===== 签约切片列表 =====

    Member Key: singleNssais

      Array

        Object

          Member Key: sst

            Number value: 1

          Member Key: sd

            String value: "000001"

          # 切片1: SST=1, SD=000001

        Object

          Member Key: sst

            Number value: 2

          Member Key: sd

            String value: "000002"

          # 切片2: SST=2, SD=000002

        Object

          Member Key: sst

            Number value: 3

          Member Key: sd

            String value: "000003"

          # 切片3: SST=3, SD=000003

        # 用户签约了3个切片: 切片1, 切片2, 切片3

    # ===== 默认切片列表 =====

    Member Key: defaultSingleNssais

      Array

        Object

          Member Key: sst

            Number value: 1

          Member Key: sd

            String value: "000001"

          # 默认切片: 切片1

关键数据对比:

数据项 切片列表 说明
Requested NSSAI 切片2, 切片3 UE请求的切片
Subscribed S-NSSAIs 切片1, 切片2, 切片3 用户签约的切片
交集结果: 切片2, 切片3 | 有交集但需NSSF进一步判断
Default NSSAI 切片1 默认签约切片
AMF SET1支持 切片1, 切片2 当前AMF支持的切片

2.3 AMF判断交集并触发NSSF查询

AMF获取到签约数据后,执行关键判断:


Requested NSSAI = {切片2, 切片3}

Subscribed S-NSSAIs = {切片1, 切片2, 切片3}

交集 = Requested ∩ Subscribed = {切片2, 切片3}

交集不为空(这是与第11篇的关键区别),但AMF SET1只支持切片1和切片2,不支持交集中的切片3。因此AMF无法全部支持交集切片,需要向NSSF查询。


flowchart TD

    A["AMF获取签约数据完成"] --> B["计算交集: 切片2, 切片3"]

    B --> C["交集不为空 - 与第11篇不同"]

    C --> D["检查AMF SET1支持: 切片1, 切片2"]

    D --> E["交集中的切片3不在AMF SET1中"]

    E --> F["AMF无法全部支持交集"]

    F --> G["向NSSF发起NSSelection_Get查询"]

    style C fill:#c8e6c9,stroke:#2e7d32,stroke-width:2px

    style E fill:#fff3e0,stroke:#e65100,stroke-width:2px

    style G fill:#e3f2fd,stroke:#1565c0,stroke-width:2px

与第11篇的区别:在第11篇中,交集为空集(完全没有匹配),NSSF直接回退到默认切片;而在本篇中,交集不为空(切片2和切片3),但只有部分切片有NSSF配置,NSSF需要对每个交集切片逐一检查。


2.4 AMF向NSSF发起切片选择查询(Nnssf_NSSelection_Get)

AMF向NSSF发送Nnssf_NSSelection_Get请求消息。


sequenceDiagram

    participant AMF

    participant NSSF

    Note over AMF, NSSF: Step 3: Nnssf_NSSelection_Get

    AMF->>NSSF: GET /nnssf-nsselection/v1/slices

    Note right of AMF: 查询参数:<br/>nf-type=AMF<br/>nf-id=AMF_UUID<br/>requested-nssai=切片2,3<br/>subscribed-nssai=切片1,2,3<br/>default-sNSSAI=切片1<br/>tai=TA1

    NSSF-->>AMF: 200 OK

    Note left of NSSF: 响应体:<br/>allowedNssai: 切片2<br/>rejectedNssai: 切片3<br/>configuredNssai: 切片1,2<br/>targetAmfSet: SET1

信令抓包解析:


# 4. AMF -> NSSF(切片选择查询 GET请求)

Frame: 2030

HEADERS[8]: GET /nnssf-nsselection/v1/slices

Query String:

  # --- NF类型和标识 ---

  nf-type: AMF

    # 发起查询的NF类型: AMF

  nf-id: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX

    # AMF的NF Instance ID(UUID,已脱敏)

  # --- 请求的切片信息 ---

  requested-nssai:

    Array

      Object

        sst: 2

        sd: "000002"

        # Requested S-NSSAI 1: 切片2

      Object

        sst: 3

        sd: "000003"

        # Requested S-NSSAI 2: 切片3

  # --- 签约的切片信息 ---

  subscribed-nssai:

    Array

      Object

        sst: 1

        sd: "000001"

        # Subscribed S-NSSAI 1: 切片1

      Object

        sst: 2

        sd: "000002"

        # Subscribed S-NSSAI 2: 切片2

      Object

        sst: 3

        sd: "000003"

        # Subscribed S-NSSAI 3: 切片3

  # --- 默认签约切片 ---

  default-sNSSAI:

    Object

      sst: 1

      sd: "000001"

      # 默认签约切片: 切片1

  # --- 位置信息 ---

  tai:

    Object

      plmnId:

        mcc: "460"

        mnc: "XX"

      tac: "0001"

      # TAI: PLMN1中的TA1

  # --- PLMN标识 ---

  plmn-id:

    Object

      mcc: "460"

      mnc: "XX"


2.5 NSSF执行部分匹配切片选择

NSSF收到AMF的切片查询请求后,执行以下关键决策:


flowchart TD

    A["NSSF收到NSSelection_Get请求"] --> B["计算交集: 切片2, 切片3"]

    B --> C["逐一检查交集切片的NSSF配置"]

    C --> D["切片2: 检查NSSF配置"]

    C --> E["切片3: 检查NSSF配置"]

    D --> F["切片2有配置: PLMN1->TA1->AMF SET1"]

    E --> G["切片3无配置: 无对应AMF Set"]

    F --> H["切片2纳入Allowed NSSAI"]

    G --> I["切片3纳入Rejected NSSAI"]

    H --> J["查找切片2对应AMF Set: SET1"]

    J --> K["构造响应消息"]

    I --> K

    style F fill:#c8e6c9,stroke:#2e7d32,stroke-width:2px

    style G fill:#ffcdd2,stroke:#c62828,stroke-width:2px

    style K fill:#e3f2fd,stroke:#1565c0,stroke-width:3px

NSSF的决策逻辑详解:

Step 1: 计算交集


Requested NSSAI = {切片2(SST=2/SD=000002), 切片3(SST=3/SD=000003)}

Subscribed NSSAI = {切片1(SST=1/SD=000001), 切片2(SST=2/SD=000002), 切片3(SST=3/SD=000003)}

交集 = {切片2, 切片3}

Step 2: 逐一检查交集切片

交集切片 NSSF配置查询 配置结果 决策
切片2 (SST=2/SD=000002) PLMN1->TA1->AMF SET1 有配置 纳入Allowed NSSAI
切片3 (SST=3/SD=000003) PLMN1->TA1->? 无配置 纳入Rejected NSSAI

Step 3: 确定目标AMF

切片2对应的AMF Set为SET1,当前AMF已在SET1中,无需重路由。

协议参考:根据3GPP TS 29.531第5.3.2.2.2节,当NSSF在交集切片中发现部分切片没有对应的网络切片配置时,应将这些切片放入Rejected NSSAI列表返回给AMF。TS 23.501第5.15.5节定义了Rejected NSSAI的处理规则——AMF在Registration Accept中将Rejected NSSAI告知UE。


2.6 NSSF返回切片选择响应(Nnssf_NSSelection_Get Response)

NSSF完成切片选择后,向AMF返回包含Allowed NSSAI和Rejected NSSAI的响应消息。

信令抓包解析:


# 5. NSSF -> AMF(切片选择响应)

Frame: 2035

HEADERS[3]: 200 OK

JavaScript Object Notation: application/json

  Object

    # ===== 允许的切片列表 =====

    Member Key: allowedNssai

      Array

        Object

          Member Key: sst

            Number value: 2

            # Allowed S-NSSAI: SST=2

          Member Key: sd

            String value: "000002"

            # Allowed S-NSSAI: SD=000002

            #  切片2: NSSF有配置,纳入Allowed NSSAI

    # ===== 拒绝的切片列表 =====

    Member Key: rejectedNssai

      Array

        Object

          Member Key: sst

            Number value: 3

            # Rejected S-NSSAI: SST=3

          Member Key: sd

            String value: "000003"

            # Rejected S-NSSAI: SD=000003

            #  切片3: NSSF无配置,纳入Rejected NSSAI

    # ===== 配置的切片列表 =====

    Member Key: configuredNssai

      Array

        Object

          Member Key: sst

            Number value: 1

          Member Key: sd

            String value: "000001"

          # Configured NSSAI: 切片1

        Object

          Member Key: sst

            Number value: 2

          Member Key: sd

            String value: "000002"

          # Configured NSSAI: 切片2

        # 运营商为该PLMN配置的切片: 切片1和切片2

    # ===== 目标AMF集合 =====

    Member Key: targetAmfSet

      String value: "SET1"

      #  目标AMF Set: SET1(基于切片2的配置)

响应消息关键字段解读:

字段 取值 业务含义
allowedNssai 切片2 (SST=2/SD=000002) NSSF有配置的交集切片,允许使用
rejectedNssai 切片3 (SST=3/SD=000003) NSSF无配置的交集切片,当前不可用
configuredNssai 切片1, 切片2 运营商配置的可用切片列表
targetAmfSet SET1 基于Allowed NSSAI确定的目标AMF集合

三种NSSAI的区别与联系:


flowchart LR

    subgraph "输入数据"

        REQ["Requested NSSAI<br/>切片2, 切片3"]

        SUB["Subscribed NSSAI<br/>切片1, 2, 3"]

    end

    subgraph "NSSF处理"

        INT["交集: 切片2, 切片3"]

        CK1["切片2 -> NSSF配置检查 -> 有配置"]

        CK2["切片3 -> NSSF配置检查 -> 无配置"]

    end

    subgraph "输出结果"

        ALLOWED["Allowed NSSAI<br/>切片2"]

        REJECTED["Rejected NSSAI<br/>切片3"]

        CONFIG["Configured NSSAI<br/>切片1, 切片2"]

    end

    REQ --> INT

    SUB --> INT

    INT --> CK1

    INT --> CK2

    CK1 --> ALLOWED

    CK2 --> REJECTED

    style ALLOWED fill:#c8e6c9,stroke:#2e7d32,stroke-width:2px

    style REJECTED fill:#ffcdd2,stroke:#c62828,stroke-width:2px

    style CONFIG fill:#e3f2fd,stroke:#1565c0,stroke-width:2px

协议参考:根据3GPP TS 29.531第5.3.2.2.2节,rejectedNssai是Nnssf_NSSelection_Get响应中的可选字段,当部分请求的切片无法被满足时,NSSF应在响应中包含此字段。每个Rejected S-NSSAI可以携带一个拒绝原因值,指示该切片被拒绝的具体原因。


2.7 AMF完成注册流程并下发Rejected NSSAI

AMF收到NSSF的响应后,将Allowed NSSAI(切片2)和Rejected NSSAI(切片3)通过Registration Accept消息下发给UE。


sequenceDiagram

    participant AMF

    participant RAN as (R)AN

    participant UE

    Note over AMF, UE: Step 4: AMF完成注册

    Note over AMF: AMF检查Target AMF Set = SET1<br/>当前AMF就在SET1中,无需重路由

    AMF->>RAN: Registration Accept

    Note right of AMF: 携带:<br/>Allowed NSSAI: 切片2<br/>Rejected NSSAI: 切片3<br/>Configured NSSAI: 切片1, 切片2

    RAN->>UE: Registration Accept

    Note left of UE: UE更新本地切片配置:<br/>可用切片: 切片2<br/>被拒切片: 切片3

信令抓包解析:


# 6. AMF -> RAN -> UE(Registration Accept)

Frame: 2045

NAS-5GS Message: Registration Accept

  Protocol Discriminator: 5GS Mobility Management (0x7)

  Message Type: Registration Accept (0x42)

  # --- 允许的切片 ---

  Allowed NSSAI

    S-NSSAI 1:

      SST: 2

      SD: "000002"

      # Allowed NSSAI: 切片2

  # --- 拒绝的切片 ---

  Rejected NSSAI

    S-NSSAI 1:

      SST: 3

      SD: "000003"

      # Rejected NSSAI: 切片3

      # 该切片当前不可用,UE不应在当前TA中再次请求

  # --- 配置的切片 ---

  Configured NSSAI for the Serving PLMN

    S-NSSAI 1:

      SST: 1

      SD: "000001"

      # Configured NSSAI: 切片1

    S-NSSAI 2:

      SST: 2

      SD: "000002"

      # Configured NSSAI: 切片2

UE收到Registration Accept后的行为:

  1. UE将切片2保存为当前的Allowed NSSAI,后续可以在此切片上建立PDU Session;

  2. UE将切片3标记为Rejected,在当前注册区域内不会再次请求该切片;

  3. UE更新Configured NSSAI为切片1和切片2,后续注册请求将基于此列表发起。


2.8 三种场景的全面对比

将第11篇(无交集)、本篇(部分匹配)和正常场景进行全面对比:


flowchart TD

    subgraph "场景A: 完全匹配"

        A1["Requested: 切片1,2<br/>Subscribed: 切片1,2"] --> A2["交集: 切片1,2"]

        A2 --> A3["NSSF: 全部有配置"]

        A3 --> A4["Allowed: 切片1,2<br/>Rejected: 无"]

    end

    subgraph "场景B: 本篇-部分匹配"

        B1["Requested: 切片2,3<br/>Subscribed: 切片1,2,3"] --> B2["交集: 切片2,3"]

        B2 --> B3["NSSF: 切片2有配置<br/>切片3无配置"]

        B3 --> B4["Allowed: 切片2<br/>Rejected: 切片3"]

    end

    subgraph "场景C: 第11篇-无交集"

        C1["Requested: 切片3,4<br/>Subscribed: 切片1,2"] --> C2["交集: 空集"]

        C2 --> C3["NSSF回退到Default"]

        C3 --> C4["Allowed: 切片1(默认)<br/>Rejected: 无"]

    end

    style A4 fill:#c8e6c9,stroke:#2e7d32,stroke-width:2px

    style B4 fill:#fff3e0,stroke:#e65100,stroke-width:2px

    style C4 fill:#e3f2fd,stroke:#1565c0,stroke-width:2px

对比维度 场景A: 完全匹配 场景B: 本篇-部分匹配 场景C: 第11篇-无交集
Requested NSSAI 切片1, 切片2 切片2, 切片3 切片3, 切片4
Subscribed NSSAI 切片1, 切片2 切片1, 2, 3 切片1, 切片2
交集 切片1, 2 切片2, 3 空集
NSSF配置 全部有 部分有
Allowed NSSAI 切片1, 2 切片2 切片1(默认)
Rejected NSSAI 切片3
注册结果 正常完成 正常完成 正常完成(默认切片)
NSSF特殊机制 部分拒绝 默认回退

协议参考:TS 23.501第5.15.5节定义了Rejected NSSAI的详细处理规则。根据该节,Rejected NSSAI可以按PLMN或按TA进行限制,UE在接收到Rejected NSSAI后,应在对应的范围内不再请求该切片。


2.9 【硬核附加】Rejected NSSAI的工程意义与排障

在实际网络运维中,Rejected NSSAI是一个非常重要的排障指示器。如果用户投诉"某个切片业务不可用",工程师可以通过以下步骤排查:

Step 1: 检查信令中的Rejected NSSAI


在Registration Accept消息中查找Rejected NSSAI信元。

如果存在,说明UE请求的切片被网络拒绝了。

Step 2: 分析拒绝原因


Rejected NSSAI中的切片被拒绝,可能的原因:

1. NSSF上没有配置该切片对应的AMF Set

2. 当前TA不在该切片的服务范围内

3. 该切片尚未部署或正在维护中

Step 3: 检查NSSF配置


确认NSSF上是否配置了被拒绝切片的AMF Set:

NSSF配置项: PLMN->TA->AMF Set->S-NSSAI

如果配置缺失,需要添加相应的配置。

Step 4: 验证端到端切片部署


一个完整的切片部署需要以下环节全部就绪:

1. UDM签约配置(Subscribed NSSAI)

2. NSSF切片策略配置(AMF Set映射)← 本篇的问题点

3. AMF Set中的AMF实例就绪 

4. SMF和UPF的切片关联配置

5. RAN侧的切片资源预留


3 测试结论

验证项 结果 说明
UE成功发起注册请求 OK 携带Requested NSSAI(切片2, 切片3)
AMF成功获取签约数据 OK Subscribed NSSAI(切片1,2,3),Default NSSAI(切片1)
AMF正确判断部分匹配 OK 交集为切片2和切片3,AMF SET1不支持切片3
AMF成功查询NSSF OK Nnssf_NSSelection_Get请求消息格式正确
NSSF正确区分Allowed/Rejected OK Allowed: 切片2, Rejected: 切片3
NSSF返回正确的目标AMF OK Target AMF Set: SET1
AMF完成注册流程 OK Registration Accept携带Allowed NSSAI和Rejected NSSAI

本测试用例完美验证了NSSF的部分匹配切片选择机制。当Requested NSSAI与Subscribed S-NSSAIs存在交集,但NSSF只支持交集中的部分切片时,NSSF能够正确地将已配置的切片(切片2)纳入Allowed NSSAI,将未配置的切片(切片3)纳入Rejected NSSAI,并返回正确的目标AMF Set(SET1)。

关键收获总结:

  1. 部分匹配与完全无交集的区别:部分匹配场景下,交集不为空,NSSF逐个检查交集切片的配置;完全无交集场景下,NSSF直接回退到默认切片;

  2. Rejected NSSAI的作用:NSSF通过Rejected NSSAI明确告知AMF和UE哪些切片当前不可用,避免UE反复请求不可用的切片;

  3. Configured NSSAI的更新:AMF在Registration Accept中下发Configured NSSAI(切片1, 切片2),UE后续注册将基于此列表发起请求,不再请求切片3;

  4. 切片部署的完整性:Rejected NSSAI的出现通常意味着切片部署不完整——虽然用户已经签约了切片3,但NSSF上还没有为切片3配置对应的AMF Set。



关于作者:爱卫生,从事通信教学18年,出版过《5G核心网原理与实践》等4本专业书籍。学5G核心网、IMS,来51学通信就对了!知识星球:200+小时视频、3000+精华文章、1年答疑群。公众号/知识星球:51学通信,微信:gprshome201101

本文为《5G核心网原理与实践》实践篇之NSSF系列。该系列持续更新,关注「51学通信」不错过每篇更新。

← 返回 NSSF 实践篇