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

5GC实践篇之NSSF篇第9篇:UE注册携带requestedNssai的切片匹配

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

5GC实践篇之NSSF篇第9篇:UE注册携带requestedNssai的切片匹配

作者:爱卫生


1 测试背景与用例简介

在前面的第6~8篇中,我们聚焦了PDU会话建立阶段的切片选择机制。从本篇开始,我们将回到5G核心网的"入口"——注册流程,深入分析NSSF在注册阶段的切片匹配和AMF重定向机制。

本篇讨论的场景是:UE发起注册时携带了Requested NSSAI,但当前服务AMF无法完全支持UE请求的切片集合,需要向NSSF查询以确定正确的AMF和Allowed NSSAI。

典型网络配置

理解本篇场景的关键在于理解以下网络配置关系:

配置项 取值 说明
AMF SET1支持的切片 S-NSSAI(2,X), S-NSSAI(3,X) AMF SET1只支持切片2和3
UE签约切片 S-NSSAI(1,X), S-NSSAI(2,X) UE在UDM签约了切片1和2
UE默认签约切片 S-NSSAI(1,X) 切片1标记为default
UE请求切片(Requested NSSAI) S-NSSAI(1,X) UE在注册请求中携带切片1
NSSF配置 PLMN1-TA1-AMF SET1支持切片2和3 NSSF上的切片与AMF Set映射

关键矛盾: UE请求切片1,但AMF SET1只支持切片2和3,不支持切片1。AMF无法自行处理这个请求,必须向NSSF求助。

本篇的核心流程链路如下:

  1. UE发起注册,携带Requested NSSAI = S-NSSAI(1,X);

  2. RAN根据UE携带的信息选择初始AMF(AMF SET1);

  3. AMF SET1从UDM获取UE签约数据(Subscribed S-NSSAI: 1,2);

  4. AMF SET1判断自己无法同时支持Requested NSSAI(1,X)和Subscribed NSSAI的交集;

  5. AMF SET1向NSSF发送Nnssf_NSSelection_Get请求;

  6. NSSF匹配切片策略,返回目标AMF信息和Allowed NSSAI;

  7. AMF根据NSSF响应进行重定向或继续注册流程。

详细消息流程图


sequenceDiagram

    participant UE

    participant RAN as RAN

    participant AMF1 as AMF SET1

    participant UDM

    participant NSSF

    participant AMF2 as AMF SET2

    Note over UE, AMF2: UE携带Requested NSSAI发起注册

    UE->>RAN: Registration Request(Requested NSSAI: 1,X)

    RAN->>AMF1: N2 Initial UE Message(Requested NSSAI: 1,X)

    Note over AMF1, UDM: AMF获取UE签约数据

    AMF1->>UDM: Nudm_SDM_Get(获取签约数据)

    UDM-->>AMF1: Subscribed S-NSSAI: (1,X)和(2,X), Default: (1,X)

    Note over AMF1, AMF1: AMF判断无法完全支持

    AMF1->>AMF1: AMF SET1支持切片2,3

    AMF1->>AMF1: UE请求切片1, 签约切片1,2

    AMF1->>AMF1: 交集为切片1,2但AMF仅支持2

    AMF1->>AMF1: 无法完全支持, 需查询NSSF

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

    AMF1->>NSSF: Nnssf_NSSelection_Get(NF ID, Subscribed NSSAI, Requested NSSAI, TAI, PLMN)

    NSSF->>NSSF: 匹配切片策略

    NSSF-->>AMF1: Nnssf_NSSelection_Get Response(目标AMF + Allowed NSSAI)

    alt 需要重定向到新AMF

        AMF1->>AMF2: Registration Redirect(路由到AMF SET2)

        AMF2-->>UE: Registration Accept(Allowed NSSAI)

    else 当前AMF可继续服务

        AMF1-->>UE: Registration Accept(Allowed NSSAI)

    end


flowchart TD

    A["UE注册携带Requested NSSAI(1,X)"] --> B["RAN路由到AMF SET1"]

    B --> C["AMF从UDM获取签约: 切片1,2"]

    C --> D["AMF判断: 自身仅支持2,3"]

    D --> E["交集=切片2, 但UE请求切片1不在AMF支持范围"]

    E --> F["AMF向NSSF查询: Nnssf_NSSelection_Get"]

    F --> G["NSSF匹配策略并返回结果"]

    G -->|"返回目标AMF SET + Allowed NSSAI"| H["重定向到目标AMF"]

    G -->|"返回空AuthorizedNetworkSliceInfo"| I["Registration Reject"]

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

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


测试目的

验证当UE发起注册时携带Requested NSSAI,且当前AMF无法完全支持UE请求和签约的切片集合时,NSSF能够正确进行切片匹配并返回目标AMF信息和Allowed NSSAI。

测试前置条件

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

  2. 环境已配置好相关切片信息。

  3. AMF SET1支持切片2和3,不支持切片1。

  4. UE在UDM签约切片类型为1和2,默认签约切片为1。

  5. NSSF上配置了切片信息

  6. PLMN1 -> TA1 -> AMF SET1 -> 切片2

  7. PLMN1 -> TA1 -> AMF SET1 -> 切片3

  8. UE在注册请求中携带Requested NSSAI = 切片1。

测试步骤

  1. 用户发起Registration Request流程,携带Requested NSSAI(1,X)。

  2. RAN将Initial Message路由到AMF SET1。

  3. 检查AMF向NSSF发送的切片查询请求消息。

  4. 检查NSSF返回给AMF的切片选择应答消息。

  5. 检查AMF最终给UE的应答消息(Registration Accept或Reject)。

测试结果验证(预期)

  1. AMF向NSSF发送Nnssf_NSSelection_Get请求,携带NF Type、NF ID、Subscribed S-NSSAIs(1,2)、Requested S-NSSAIs(1)、TAI、PLMN ID等信元。

  2. NSSF根据配置策略进行切片匹配,返回切片选择响应。

  3. 根据NSSF返回结果,AMF进行重定向或直接响应UE。


2 信令深度解析

本测试的核心是AMF何时以及如何向NSSF发起切片查询。下面逐条消息解析。

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

2.1 UE发起注册——携带Requested NSSAI

UE在注册请求中通过NAS消息携带Requested NSSAI,告知网络"我希望使用切片1"。RAN根据UE携带的AN信息(包括Requested NSSAI和5G-S-TMSI)结合自身策略选择初始AMF。


# UE -> RAN -> AMF SET1(注册请求)

Frame: 205

NAS-5GS Registration Request

  5GS Registration type: Initial Registration

  Mobile Identity: SUCI

    suci: imsi-460XX00000XXXX

      # 用户标识(已脱敏)

  Requested NSSAI:

    - S-NSSAI:

        SST: 1

        SD: XXXXXXX

          # UE请求的网络切片标识

          # SST=1 表示eMBB类型

  User equipment capability:

    S1 mode: supported

    N1 mode: supported

Requested NSSAI的来源:

来源 说明
UE的Configured NSSAI 网络侧在之前的注册或配置更新中下发的切片列表
UE本地策略 终端根据应用需求主动请求的切片
上次注册的Allowed NSSAI UE可能将上次获准的切片再次请求

协议参考:根据3GPP TS 23.501 第5.15.2节,UE在注册请求中可以携带Requested NSSAI,该列表是UE的Configured NSSAI或Allowed NSSAI的子集。网络侧(AMF/NSSF)会根据UE的签约数据和网络配置来决定最终的Allowed NSSAI。

2.2 AMF获取UE签约数据——发现配置矛盾

AMF收到注册请求后,首先向UDM获取UE的签约数据,其中包括Subscribed S-NSSAI列表。AMF需要将自身支持的切片、UE请求的切片和UE签约的切片三者进行交叉比对。


# AMF SET1 -> UDM(获取签约数据)

Frame: 210

HEADERS: GET /nudm-sdm/v1/imsi-460XX00000XXXX/am-data

  ?plmn-id=%7B%22mcc%22%3A%22460%22%2C%22mnc%22%3A%22XX%22%7D

# UDM -> AMF SET1(返回签约数据)

Frame: 214

HEADERS: 200 OK

JavaScript Object Notation: application/json

  Object

    Member Key: subscribedSnssais

      Array

        Object  # 签约切片1

          Member Key: sst

            Number value: 1

          Member Key: sd

            String value: "XXXXXXX"

          Member Key: defaultIndication

            Boolean value: true

              # 标记为默认切片

        Object  # 签约切片2

          Member Key: sst

            Number value: 2

          Member Key: sd

            String value: "XXXXXXX"

          Member Key: defaultIndication

            Boolean value: false

AMF SET1的判断逻辑:


flowchart TD

    A["AMF SET1获取签约数据"] --> B["AMF SET1支持的切片: (2,X), (3,X)"]

    B --> C["UE请求的切片: (1,X)"]

    C --> D["UE签约的切片: (1,X), (2,X)"]

    D --> E["计算交集: Requested AND Subscribed"]

    E --> F["交集结果: (1,X)"]

    F --> G["AMF检查: 交集(1,X)是否在自身支持范围内"]

    G -->|"切片1不在AMF SET1支持范围"| H["AMF无法完全支持"]

    H --> I["AMF向NSSF查询"]

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

关键判断规则:

条件 AMF行为
交集切片全部在AMF支持范围内 无需查询NSSF,AMF直接处理
交集切片部分或全部不在AMF支持范围内 查询NSSF(本篇场景)
交集为空(无匹配切片) 查询NSSF,可能被拒绝

协议参考:根据3GPP TS 23.501 第5.15.3节,AMF在收到UE注册请求后,需要检查是否能服务UE请求的NSSAI和签约NSSAI的交集。如果AMF无法完全服务,则应向NSSF请求切片选择信息。

2.3 AMF向NSSF发送切片查询——Nnssf_NSSelection_Get

AMF判断无法完全支持后,向NSSF发送Nnssf_NSSelection_Get请求,携带所有必要信息供NSSF进行切片匹配决策。


# AMF SET1 -> NSSF(切片选择查询请求)

Frame: 222

HEADERS: GET /nnssf-nsselection/v1/slices

  Query Parameters:

    nf-type: AMF

      # 发起查询的NF类型

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

      # AMF SET1的NF Instance ID (UUID)

    subscribed-snssais:

      [

        {"sst":1, "sd":"XXXXXXX", "defaultIndication":true},

        {"sst":2, "sd":"XXXXXXX"}

      ]

      # UE签约的全部S-NSSAI(来源: UDM)

      # 其中切片1标记为default

    requested-snssais:

      [

        {"sst":1, "sd":"XXXXXXX"}

      ]

      # UE在注册请求中携带的Requested NSSAI

    home-plmn-id: {"mcc":"460", "mnc":"XX"}

      # 归属PLMN标识

    tai: {"tac":"XXXX", "plmn-id":{"mcc":"460", "mnc":"XX"}}

      # UE当前所在跟踪区

    defaultConfiguredSnssaiInd: true

      # 可选参数, 表示是否使用default configured S-NSSAI

Nnssf_NSSelection_Get请求关键信元解读:

信元 含义 说明
nf-type 查询方NF类型 固定为AMF
nf-id AMF实例ID 用于NSSF判断是否需要重定向到其他AMF
subscribed-snssais UE签约切片列表 UDM返回的完整签约数据
requested-snssais UE请求切片列表 注册请求中携带的Requested NSSAI
tai 跟踪区标识 区域化切片策略的匹配依据
home-plmn-id 归属PLMN 区分漫游场景

协议参考:根据3GPP TS 29.531 第5.3.2.2节,Nnssf_NSSelection_Get服务的请求参数包括NF ID、Requested NSSAI、Subscribed S-NSSAI、TAI、PLMN ID等。NSSF根据这些信息在本地配置的切片策略库中进行匹配。

2.4 NSSF切片匹配——配置策略比对

NSSF收到AMF的查询请求后,按照以下逻辑进行切片匹配:


flowchart TD

    A["NSSF收到NSSelection_Get请求"] --> B["提取关键信息"]

    B --> C["Requested NSSAI: (1,X)"]

    C --> D["Subscribed NSSAI: (1,X), (2,X)"]

    D --> E["TAI + PLMN: 确定区域"]

    E --> F["查询NSSF切片策略库"]

    F --> G["PLMN1-TA1-AMF SET1-切片2"]

    G --> H["PLMN1-TA1-AMF SET1-切片3"]

    H --> I["查找支持切片1的AMF Set"]

    I -->|"场景A: 找到AMF SET2支持切片1"| J["返回: 目标AMF=AMF SET2, Allowed NSSAI=(1,X)"]

    I -->|"场景B: 没有AMF Set支持切片1"| K["返回: 空AuthorizedNetworkSliceInfo"]

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

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

2.5 NSSF返回切片选择响应——Nnssf_NSSelection_Get Response

NSSF完成匹配后,向AMF返回切片选择响应。根据匹配结果不同,响应内容也不同。

场景A:NSSF找到了支持切片1的目标AMF


# NSSF -> AMF SET1(切片选择响应——成功匹配)

Frame: 226

HEADERS: 200 OK

JavaScript Object Notation: application/json

  Object

    Member Key: targetAmfSet

      String value: "AMF_SET2_XXXXXXXX"

        # 目标AMF Set标识, UE应重定向到此AMF Set

    Member Key: allowedNssai

      Array

        Object

          Member Key: sst

            Number value: 1

          Member Key: sd

            String value: "XXXXXXX"

            # Allowed NSSAI: 切片1

    Member Key: candidateAmfList

      Array

        Object

          Member Key: nfInstanceId

            String value: "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"

              # AMF SET2中的具体AMF实例

          Member Key: ipEndPoints

            Array

              Object

                Member Key: ipAddress

                  String value: "10.XX.XX.XX"

                Member Key: port

                  Number value: 8080

    Member Key: authorizedNetworkSliceInfo

      Object

        Member Key: allowedNssai

          ...

        Member Key: subsChangeInd

          Boolean value: false

            # 签约数据是否发生变化

场景B:NSSF未找到匹配策略(所有回退均失败)


# NSSF -> AMF SET1(切片选择响应——无匹配)

Frame: 226

HEADERS: 200 OK

JavaScript Object Notation: application/json

  Object

    # 空的 AuthorizedNetworkSliceInfo

    # 表示NSSF无法为该UE找到合适的切片策略

NSSF响应关键信元解读:

信元 含义 说明
targetAmfSet 目标AMF Set UE应重定向到此AMF Set
allowedNssai 允许的NSSAI UE最终可以使用的切片列表
candidateAmfList 候选AMF列表 目标AMF Set中的具体AMF实例
authorizedNetworkSliceInfo 授权切片信息 包含完整的切片授权结果

协议参考:根据3GPP TS 29.531 第5.3.2.3节,NSSF在切片选择响应中返回AuthorizedNetworkSliceInfo数据结构,包含目标AMF信息、Allowed NSSAI和候选AMF列表。如果NSSF无法匹配任何切片策略,将返回空的AuthorizedNetworkSliceInfo

2.6 AMF根据NSSF响应处理——重定向或拒绝

AMF收到NSSF响应后,根据结果决定后续操作:


flowchart TD

    A["AMF收到NSSF响应"] --> B["检查响应内容"]

    B -->|"有targetAmfSet"| C["需要重定向"]

    B -->|"空AuthorizedNetworkSliceInfo"| D["Registration Reject"]

    C --> E["RAN间接重路由"]

    C --> F["AMF间直接重路由"]

    E --> G["AMF SET1通知RAN重路由到AMF SET2"]

    G --> H["RAN将注册请求转发到AMF SET2"]

    H --> I["AMF SET2处理注册并返回Allowed NSSAI"]

    F --> J["AMF SET1直接将注册请求转发到AMF SET2"]

    J --> I

    I --> K["Registration Accept(Allowed NSSAI=(1,X))"]

    D --> L["Registration Reject(原因: 无可用切片)"]

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

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

重定向方式对比:

方式 说明 适用场景
RAN间接重路由 AMF通知RAN,RAN重新选择AMF AMF间无法直接通信
AMF间直接重路由 AMF直接将请求转发给目标AMF AMF间有直接接口

2.7 【硬核附加】切片匹配的完整决策矩阵

将本篇涉及的各方信息整理为决策矩阵,有助于理解NSSF切片匹配的全貌:

各方信息矩阵:

信息维度 具体值 来源
UE请求切片 (1,X) Registration Request中的Requested NSSAI
UE签约切片 (1,X), (2,X) UDM Subscribed S-NSSAI
UE Default切片 (1,X) UDM签约中defaultIndication=true
AMF SET1支持切片 (2,X), (3,X) AMF本地配置
NSSF配置 AMF SET1 -> 切片2,3 NSSF切片策略库

NSSF匹配逻辑:

步骤 操作 结果
1 Requested NSSAI AND Subscribed NSSAI (1,X) - 交集
2 交集(1,X)是否在AMF SET1支持范围 否 - AMF不支持切片1
3 查找支持切片1的AMF Set 找到AMF SET2(假设存在)
4 返回AMF SET2 + Allowed NSSAI(1,X) 重定向

协议参考:根据3GPP TS 23.501 第5.15.3节和TS 29.531 第5.3节,NSSF的切片选择算法综合考虑了UE的Requested NSSAI、Subscribed NSSAI、AMF能力、区域策略和PLMN信息。NSSF的目标是找到能够服务UE请求切片的最佳AMF。


3 测试结论

验证项 结果 说明
UE携带Requested NSSAI注册 OK UE在Registration Request中携带S-NSSAI(1,X)
AMF获取签约数据 OK UDM返回Subscribed S-NSSAI: (1,X), (2,X)
AMF判断无法完全支持 OK AMF SET1仅支持切片2,3,不支持UE请求的切片1
AMF向NSSF发送切片查询 OK Nnssf_NSSelection_Get携带完整参数
NSSF切片匹配与响应 OK/拒绝 取决于是否存在支持切片1的AMF Set
重定向或拒绝处理 OK AMF根据NSSF响应正确处理

本测试用例验证了UE注册携带Requested NSSAI时NSSF的切片匹配机制。当初始AMF无法完全支持UE请求的切片时,通过Nnssf_NSSelection_Get服务向NSSF查询,NSSF根据切片策略库进行匹配并返回目标AMF信息和Allowed NSSAI。这个机制是5GC实现切片感知的AMF选择的核心,确保UE能够被路由到正确的AMF进行服务。



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

← 返回 NSSF 实践篇