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

5GC实践篇之NSSF篇第11篇:requestedNssai与subscribedNssai无交集时的切片选择

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

5GC实践篇之NSSF篇第11篇:requestedNssai与subscribedNssai无交集时的切片选择

作者:爱卫生


1 测试背景与用例简介

网络切片选择是5G核心网注册流程中的关键环节。当UE发起注册请求时,会在Registration Request中携带Requested NSSAI——即UE希望使用的网络切片列表。AMF收到请求后,需要从UDM获取用户的Subscribed S-NSSAIs(签约切片列表),然后将两者进行匹配,确定最终的Allowed NSSAI(允许切片列表)。

但在实际网络运营中,有一种比较特殊的场景:UE请求的切片(Requested NSSAI)与用户签约的切片(Subscribed S-NSSAIs)完全没有交集。也就是说,UE请求的切片,用户一个都没有签约。这种情况可能出现在以下场景:

  • 用户的终端中预配置了多个切片信息,但该SIM卡对应的运营商套餐只支持其中一部分切片;
  • 用户从一个运营商换到了另一个运营商,但终端中仍然保留了旧运营商的切片配置;

  • 物联网设备出厂时写入了通用的切片配置,但实际部署时签约了不同的切片。

在这种场景下,NSSF需要执行一种兜底机制(Fallback Mechanism):当Requested NSSAI与Subscribed S-NSSAIs完全无交集时,NSSF不直接拒绝用户的注册请求,而是回退到用户的默认签约切片(Default Subscribed NSSAI)进行切片选择,确保用户至少能够获得基本的网络服务。

本篇正是验证这一关键机制:当AMF上报的Requested NSSAI与Subscribed S-NSSAIs完全无交集时,NSSF能够按照默认签约切片进行切片选择,返回合理的Allowed NSSAI和目标AMF Set。

本测试的网络配置

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

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

关键点:UE请求的切片3和切片4,与签约的切片1和切片2完全没有交集

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(3,4)

    UE->>RAN: Registration Request

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

    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<br/>Default NSSAI: 切片1

    end

    Note over AMF: AMF比对Requested(3,4)与Subscribed(1,2)<br/>交集为空! AMF无法全部支持

    Note over AMF: AMF触发NSSF切片查询

    rect rgb(255, 245, 230)

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

        AMF->>NSSF: Nnssf_NSSelection_Get

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

        NSSF-->>AMF: Nnssf_NSSelection_Get Response

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

    end

    Note over AMF: NSSF使用默认签约切片(1)作为Allowed NSSAI

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

    RAN-->>UE: Registration Accept

切片匹配逻辑分析


flowchart TD

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

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

    C --> D["计算Requested与Subscribed的交集"]

    D --> E["交集结果: 空集 - 无任何匹配切片"]

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

    F --> G["NSSF检测到无交集"]

    G --> H["NSSF使用Default Subscribed NSSAI: 切片1"]

    H --> I["NSSF返回Allowed NSSAI: 切片1"]

    I --> J["NSSF返回Target AMF Set: SET1"]

    J --> K["AMF根据NSSF响应完成注册流程"]

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

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

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


测试目的

验证当AMF上报的Requested NSSAI与Subscribed S-NSSAIs完全没有交集时,NSSF能够按照用户的默认签约切片(Default Subscribed NSSAI)进行切片选择,返回基于默认切片的Allowed NSSAI以及对应的目标AMF Set,确保UE仍能正常完成注册流程。

测试前置条件

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

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

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

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

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

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

  7. 测试终端携带的Requested NSSAI为切片3和切片4(与签约切片无交集)。

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

测试步骤

  1. 用户发起Registration Request流程,请求消息中携带Requested NSSAI(切片3、切片4);RAN根据UE携带的AN信息(Request NSSAI、5G-S-TMSI)结合相关策略选择AMF,并将Registration Request发送给AMF。

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

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

  4. 查看AMF发送给NSSF的Nnssf_NSSelection_Get请求消息,验证携带的信元。

  5. 查看NSSF返回给AMF的Nnssf_NSSelection_Get Response消息,验证返回的Allowed NSSAI、Configured NSSAI和目标AMF Set。

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

测试结果验证(预期)

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

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

  3. Allowed S-NSSAI:切片1(基于默认签约切片);

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

  5. Target AMF Set:SET1。

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


2 信令深度解析

在本测试中,整个切片选择流程的核心挑战在于:UE请求的切片3和切片4,与用户在UDM中签约的切片1和切片2完全没有交集。这是一个典型的"请求与签约完全错配"场景,NSSF需要通过默认切片回退机制确保用户仍能获得网络服务。

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

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

UE向网络发起注册流程,在Registration Request消息中携带用户标识(SUCI、5G-GUTI或PEI)以及Requested NSSAI。在本测试中,UE请求的切片为切片3和切片4——这两个切片都不在用户的签约范围内。


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: 切片3, 切片4<br/>- UE Network Capability<br/>- 5GS Registration Type: Initial Registration

    RAN->>AMF: N2 Initial UE Message

    Note left of RAN: RAN根据Requested NSSAI<br/>和5G-S-TMSI选择AMF<br/>将消息路由到AMF

信令抓包解析:


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

Frame: 1025

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: 3

      SD: 000003

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

    S-NSSAI 2:

      SST: 4

      SD: 000004

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

    #  注意: 切片3和切片4都不在用户的签约范围内

关键说明:UE携带的Requested NSSAI(切片3、切片4)来源于UE中预配置的切片信息或者从PCF/AMF下发的Configured NSSAI。当用户更换运营商或SIM卡但未更新终端配置时,就可能出现Requested NSSAI与Subscribed NSSAI完全不匹配的情况。


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

AMF收到Registration Request后,首先需要向UDM获取用户的签约数据,其中包含Subscribed S-NSSAIs(签约切片列表)和Default Subscribed S-NSSAIs(默认切片列表)。


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<br/>获取NSSAI签约数据

    UDM-->>AMF: 200 OK

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

信令抓包解析:


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

Frame: 1031

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

# 请求方法: GET

# 服务名称: nudm-sdm

# 目标用户: imsi-460XX00000XXXX

# 资源类型: nssai

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

Frame: 1035

HEADERS[3]: 200 OK

JavaScript Object Notation: application/json

  Object

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

    Member Key: singleNssais

      Array

        Object

          Member Key: sst

            Number value: 1

            # 切片1: SST=1

          Member Key: sd

            String value: "000001"

            # 切片1: SD=000001

        Object

          Member Key: sst

            Number value: 2

            # 切片2: SST=2

          Member Key: sd

            String value: "000002"

            # 切片2: SD=000002

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

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

    Member Key: defaultSingleNssais

      Array

        Object

          Member Key: sst

            Number value: 1

            # 默认切片: SST=1

          Member Key: sd

            String value: "000001"

            # 默认切片: SD=000001

            #  当Requested与Subscribed无交集时<br/>NSSF将使用此默认切片

关键数据对比:

数据项 切片列表 说明
Requested NSSAI 切片3, 切片4 UE请求的切片
Subscribed S-NSSAIs 切片1, 切片2 用户签约的切片
Default NSSAI 切片1 默认签约切片
交集结果: 空集 | 完全没有匹配!

协议参考:根据3GPP TS 29.503第5.2.2节,singleNssaisNssai数据类型中的必选字段,defaultSingleNssais为条件必选字段。AMF在切片选择过程中需要同时使用这两个字段来确定Allowed NSSAI。


2.3 AMF判断交集并向NSSF发起切片查询

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


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

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

交集 = Requested ∩ Subscribed = {} (空集)

由于交集为空集,AMF无法直接确定Allowed NSSAI,因此需要向NSSF发起切片选择查询。


flowchart TD

    A["AMF获取签约数据"] --> B["提取Requested NSSAI: 切片3, 切片4"]

    A --> C["提取Subscribed NSSAI: 切片1, 切片2"]

    B --> D["计算交集: 切片3,4 ∩ 切片1,2"]

    C --> D

    D --> E["交集为空集"]

    E --> F["AMF判断: 无法全部支持"]

    F --> G["AMF决定: 向NSSF查询"]

    G --> H["构造Nnssf_NSSelection_Get请求"]

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

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

AMF的判断逻辑说明:

AMF在注册流程中执行以下判断步骤:

  1. 如果UE未携带Requested NSSAI,则判断AMF是否支持所有标记为default的Subscribed S-NSSAIs;

  2. 如果UE携带了Requested NSSAI,则判断AMF是否可以同时支持Requested NSSAI与Subscribed S-NSSAIs的交集;

  3. 如果AMF可以全部支持,则无需进行NSSF切片查询,AMF直接继续后续流程;

  4. 如果AMF无法全部支持(本场景中交集为空集),则必须向NSSF发送切片查询请求。


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

AMF向NSSF发送Nnssf_NSSelection_Get请求消息,携带所有必要的信元,供NSSF进行切片选择决策。


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=切片3,4<br/>subscribed-nssai=切片1,2<br/>default-sNSSAI=切片1<br/>tai=TA1<br/>plmn-id=PLMN1

    NSSF-->>AMF: 200 OK

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

信令抓包解析:


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

Frame: 1038

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: 3

        sd: "000003"

        # Requested S-NSSAI 1: 切片3

      Object

        sst: 4

        sd: "000004"

        # Requested S-NSSAI 2: 切片4

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

  subscribed-nssai:

    Array

      Object

        sst: 1

        sd: "000001"

        # Subscribed S-NSSAI 1: 切片1

      Object

        sst: 2

        sd: "000002"

        # Subscribed S-NSSAI 2: 切片2

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

  default-sNSSAI:

    Object

      sst: 1

      sd: "000001"

      #  默认签约切片: 切片1

      # 当Requested与Subscribed无交集时<br/>NSSF使用此切片作为Allowed NSSAI

  # --- 位置信息 ---

  tai:

    Object

      plmnId:

        mcc: "460"

        mnc: "XX"

      tac: "0001"

      # TAI: PLMN1中的TA1

  # --- PLMN标识 ---

  plmn-id:

    Object

      mcc: "460"

      mnc: "XX"

    # PLMN1

  # --- 可选信元 ---

  defaultConfiguredSnssaiInd: true

    # 指示是否使用默认配置的S-NSSAI

协议参考:根据3GPP TS 29.531第5.3.2.2节,Nnssf_NSSelection_Get服务操作的请求消息中,requested-nssaisubscribed-nssaitaiplmn-id为关键信元。当defaultConfiguredSnssaiInd设置为true时,表示NSSF可以使用默认配置的S-NSSAI进行回退选择。


2.5 NSSF执行默认切片回退选择

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


flowchart TD

    A["NSSF收到NSSelection_Get请求"] --> B["提取Requested NSSAI: 切片3, 切片4"]

    A --> C["提取Subscribed NSSAI: 切片1, 切片2"]

    B --> D["比对交集"]

    C --> D

    D --> E["交集为空: 切片3,4不在签约列表中"]

    E --> F["检查default-sNSSAI: 切片1"]

    F --> G["切片1是否在NSSF配置中"]

    G -->|"是"| H["查找切片1对应的AMF Set"]

    H --> I["找到: PLMN1->TA1->AMF SET1->切片1"]

    I --> J["确定Allowed NSSAI: 切片1"]

    I --> K["确定Target AMF Set: SET1"]

    J --> L["构造NSSelection_Get Response"]

    K --> L

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

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

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

NSSF的决策逻辑详解:

  1. 交集计算:NSSF首先计算Requested NSSAI(切片3,4)与Subscribed S-NSSAIs(切片1,2)的交集,结果为空集;

  2. 回退机制触发:当交集为空时,NSSF触发默认切片回退机制,查找用户签约数据中标记为default的切片——即切片1;

  3. 配置匹配:NSSF检查切片1是否在自身的切片配置中,发现PLMN1->TA1->AMF SET1->切片1的配置存在;

  4. 确定目标AMF:根据配置,切片1对应的AMF Set为SET1;

  5. 生成响应:NSSF构造NSSelection_Get Response,包含Allowed NSSAI(切片1)、Configured NSSAI(切片1,2)和Target AMF Set(SET1)。


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

NSSF完成切片选择后,向AMF返回切片选择响应消息。

信令抓包解析:


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

Frame: 1042

HEADERS[3]: 200 OK

JavaScript Object Notation: application/json

  Object

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

    Member Key: allowedNssai

      Array

        Object

          Member Key: sst

            Number value: 1

            # Allowed S-NSSAI: SST=1

          Member Key: sd

            String value: "000001"

            # Allowed S-NSSAI: SD=000001

            #  切片1: 基于默认签约切片确定的Allowed 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

      # 当前AMF就在SET1中,无需重路由

响应消息关键字段解读:

字段 取值 业务含义
allowedNssai 切片1 (SST=1/SD=000001) 基于默认签约切片确定的Allowed NSSAI
configuredNssai 切片1, 切片2 运营商配置的可用切片列表
targetAmfSet SET1 目标AMF集合,当前AMF已在该集合中

关键分析:为什么Allowed NSSAI是切片1而不是切片3或切片4?

这是因为NSSF执行了默认切片回退机制:


flowchart LR

    REQ["Requested NSSAI<br/>切片3, 切片4"] -->|"交集为空"| FALLBACK["NSSF回退机制"]

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

    FALLBACK --> DEFAULT["使用Default NSSAI<br/>切片1"]

    DEFAULT --> ALLOWED["Allowed NSSAI = 切片1"]

    ALLOWED --> AMF["Target AMF Set = SET1"]

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

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

  1. UE请求的切片3和切片4不在用户的签约切片列表中,因此不能作为Allowed NSSAI;

  2. NSSF检查用户的默认签约切片(切片1),确认该切片在NSSF中有配置且有可用的AMF Set;

  3. NSSF将切片1作为Allowed NSSAI返回给AMF,确保UE至少可以接入一个可用的切片。

协议参考:根据3GPP TS 29.531第5.3.2.2.2节,当Requested NSSAI中的所有S-NSSAI都不在Subscribed S-NSSAIs中时,NSSF应使用签约数据中的默认S-NSSAI来确定Allowed NSSAI和目标网络切片信息。TS 23.501第5.15.3节也规定了类似的默认切片选择规则。


2.7 AMF完成注册流程

AMF收到NSSF的切片选择响应后,根据返回的Allowed NSSAI(切片1)和Target AMF Set(SET1)完成注册流程。


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: 携带Allowed NSSAI: 切片1<br/>Configured NSSAI: 切片1, 切片2

    RAN->>UE: Registration Accept

    Note left of UE: UE更新本地切片配置:<br/>Allowed NSSAI: 切片1<br/>Configured NSSAI: 切片1, 切片2

信令抓包解析:


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

Frame: 1050

NAS-5GS Message: Registration Accept

  Protocol Discriminator: 5GS Mobility Management (0x7)

  Message Type: Registration Accept (0x42)

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

  Allowed NSSAI

    S-NSSAI 1:

      SST: 1

      SD: 000001

      # Allowed NSSAI: 切片1

      #  基于默认签约切片确定

  # --- 配置的切片(可选)---

  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后续注册时可使用

工程说明:AMF在Registration Accept中下发的Configured NSSAI非常重要——UE会将其保存,并在后续的注册请求中使用这些切片作为Requested NSSAI。这样,UE下次注册时就不会再请求切片3和切片4了,而是使用Configured NSSAI(切片1、切片2),从而避免再次触发NSSF的默认切片回退机制。


2.8 【硬核附加】用curl模拟NSSF切片选择查询

在实际排障中,如果怀疑NSSF的默认切片回退机制异常,可以使用curl直接查询NSSF接口来验证:


curl -i -X GET "http://10.XX.XX.XX:8081/nnssf-nsselection/v1/slices?nf-type=AMF&nf-id=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX&requested-nssai=%5B%7B%22sst%22:3,%22sd%22:%22000003%22%7D,%7B%22sst%22:4,%22sd%22:%22000004%22%7D%5D&subscribed-nssai=%5B%7B%22sst%22:1,%22sd%22:%22000001%22%7D,%7B%22sst%22:2,%22sd%22:%22000002%22%7D%5D&default-sNSSAI=%7B%22sst%22:1,%22sd%22:%22000001%22%7D&tai=%7B%22plmnId%22:%7B%22mcc%22:%22460%22,%22mnc%22:%22XX%22%7D,%22tac%22:%220001%22%7D&plmn-id=%7B%22mcc%22:%22460%22,%22mnc%22:%22XX%22%7D&defaultConfiguredSnssaiInd=true"

NSSF返回的JSON响应(已脱敏):


{

  "allowedNssai": [

    {

      "sst": 1,

      "sd": "000001"

    }

  ],

  "configuredNssai": [

    {

      "sst": 1,

      "sd": "000001"

    },

    {

      "sst": 2,

      "sd": "000002"

    }

  ],

  "targetAmfSet": "SET1"

}

排障要点:

  1. 检查NSSF返回的allowedNssai是否包含默认签约切片(切片1);

  2. 检查targetAmfSet是否有对应的可用AMF实例;

  3. 如果NSSF返回错误(如404或500),检查NSSF的切片配置是否正确。


2.9 无交集场景与正常场景的对比

将本篇的无交集场景与正常场景进行对比,有助于更深入地理解NSSF的切片选择机制:


flowchart TD

    subgraph "正常场景: 有交集"

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

        B1 --> C1["Allowed NSSAI = 切片1, 切片2"]

        C1 --> D1["正常完成注册"]

    end

    subgraph "本篇场景: 无交集"

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

        B2 --> E2["NSSF回退到Default: 切片1"]

        E2 --> F2["Allowed NSSAI = 切片1"]

        F2 --> G2["仍可完成注册"]

    end

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

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

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

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

对比维度 正常场景(有交集) 本篇场景(无交集)
Requested NSSAI 切片1, 切片2 切片3, 切片4
Subscribed NSSAI 切片1, 切片2 切片1, 切片2
交集结果 切片1, 切片2 空集
NSSF行为 直接基于交集选择 回退到默认签约切片
Allowed NSSAI 切片1, 切片2 切片1(默认)
注册结果 正常完成 正常完成(基于默认切片)

协议参考:根据3GPP TS 29.531第5.3.2节,Nnssf_NSSelection_Get服务操作的完整行为定义。TS 29.510第6.2.6节定义了NSSF的NF Profile中如何配置支持的切片信息。


3 测试结论

验证项 结果 说明
UE成功发起注册请求 OK 携带Requested NSSAI(切片3, 切片4)
AMF成功获取签约数据 OK Subscribed NSSAI(切片1, 切片2),Default NSSAI(切片1)
AMF正确判断无交集 OK 切片3,4与切片1,2交集为空集
AMF成功查询NSSF OK Nnssf_NSSelection_Get请求消息格式正确
NSSF正确回退到默认切片 OK 使用Default NSSAI(切片1)作为Allowed NSSAI
NSSF返回正确的目标AMF OK Target AMF Set: SET1
AMF完成注册流程 OK Registration Accept携带Allowed NSSAI(切片1)

本测试用例完美验证了NSSF的默认切片回退机制。当AMF上报的Requested NSSAI与Subscribed S-NSSAIs完全没有交集时,NSSF能够按照用户的默认签约切片(Default Subscribed NSSAI)进行切片选择,返回基于默认切片的Allowed NSSAI(切片1)以及对应的目标AMF Set(SET1),确保UE仍能正常完成注册流程。

关键收获总结:

  1. NSSF回退机制:当Requested NSSAI与Subscribed NSSAI无交集时,NSSF不会直接拒绝,而是回退到默认签约切片,确保用户至少获得基本网络服务;

  2. defaultConfiguredSnssaiInd的作用:AMF在Nnssf_NSSelection_Get请求中携带此标志,告知NSSF可以使用默认配置的S-NSSAI进行回退选择;

  3. Configured NSSAI的下发:AMF在Registration Accept中下发Configured NSSAI(切片1, 切片2),UE后续注册将使用这些正确的切片,避免再次触发回退机制;

  4. Target AMF Set的确定:NSSF根据默认切片1的配置(PLMN1->TA1->AMF SET1->切片1)确定目标AMF Set为SET1,当前AMF已在SET1中,无需重路由。



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

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

← 返回 NSSF 实践篇