5G核心网学习平台
UDM 实践篇 #10

5GC实践篇之UDM篇第26篇:AMF发起的切片信息查询

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

5GC实践篇之UDM篇第26篇:AMF发起的切片信息查询

作者:爱卫生


1 测试背景与用例简介

网络切片(Network Slicing)是5G核心网最具标志性的特性之一。它允许运营商在同一张物理网络基础设施上,虚拟出多个端到端的逻辑网络,每个逻辑网络可以针对不同的业务场景(如eMBB、URLLC、mMTC)进行独立优化。而S-NSSAI(Single Network Slice Selection Assistance Information)就是5G中标识和管理网络切片的核心数据结构。

在UE的注册流程中,AMF需要知道两件关于切片的事情:

  1. 这个用户签约了哪些切片——即用户订阅的所有S-NSSAI列表;
  1. 如果UE没有请求特定切片,应该给它分配哪个默认切片——即默认S-NSSAI。

虽然AMF可以在获取AM-Data时一并拿到nssai字段(我们在第19篇和第27篇中会详细讨论),但在某些场景下,AMF需要单独查询用户的切片信息——例如在Inter-AMF移动性场景中,新AMF可能只需要快速获取切片数据而不需要完整的AM-Data;又或者在切片选择过程中,AMF需要重新校验用户的切片签约状态。

这时,AMF会使用Nudm_SDM_Get服务,直接向UDM请求nssai资源——这不是am-data中的nssai子字段,而是UDM提供的独立的/nudm-sdm/v1/{supi}/nssai资源路径。UDM会返回包含singleNssais(签约切片列表)和defaultSingleNssais(默认切片列表)的NSSAI数据。

本篇正是验证:AMF通过独立的Nudm_SDM_Get请求查询用户切片信息时,UDM能够正确返回完整的NSSAI数据,且与用户签约数据一致。

AMF查询切片信息的信令流程


sequenceDiagram

    participant UE

    participant RAN as (R)AN

    participant AMF

    participant UDM

    Note over UE, UDM: UE发起注册请求(携带或不携带Requested NSSAI)

    UE->>RAN: Registration Request

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

    rect rgb(230, 245, 255)

        Note over AMF, UDM: AMF单独查询用户切片信息

        AMF->>UDM: Nudm_SDM_Get (GET)<br/>获取NSSAI数据

        Note right of AMF: GET /nudm-sdm/v1/{supi}/nssai

        UDM-->>AMF: 200 OK + Nssai<br/>含singleNssais + defaultSingleNssais

    end

    Note over AMF: AMF根据NSSAI数据进行切片选择

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

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

S-NSSAI数据结构解析


flowchart TD

    ROOT["Nssai<br/>网络切片选择辅助信息"] --> SINGLE["singleNssais<br/>签约切片列表"]

    ROOT --> DEFAULT["defaultSingleNssais<br/>默认切片列表"]

    SINGLE --> S1["S-NSSAI 1<br/>SST + SD"]

    SINGLE --> S2["S-NSSAI 2<br/>SST + SD"]

    SINGLE --> S3["S-NSSAI N<br/>SST + SD"]

    DEFAULT --> D1["默认S-NSSAI<br/>SST + SD"]

    S1 --> SST1["sst: 切片服务类型<br/>1=eMBB, 2=URLLC<br/>3=mMTC, 4=V2X"]

    S1 --> SD1["sd: 切片区分符<br/>可选, 3字节十六进制<br/>同一SST下的进一步区分"]

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

    style SINGLE fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px

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

S-NSSAI组成要素


flowchart LR

    SNSSAI["S-NSSAI<br/>单一网络切片<br/>选择辅助信息"] --> SST["SST<br/>Slice/Service Type<br/>切片服务类型<br/>1字节, 必选"]

    SNSSAI --> SD["SD<br/>Slice Differentiator<br/>切片区分符<br/>3字节, 可选"]

    SST --> STD["标准值:<br/>1 = eMBB<br/>2 = URLLC<br/>3 = MIoT<br/>4 = V2X<br/>128~255 = 运营商自定义"]

    SD --> SDD["作用:<br/>在同一SST类型下<br/>区分不同的切片实例<br/>例如:<br/>SST=1 + SD=000001<br/>SST=1 + SD=000002<br/>代表两个不同的eMBB切片"]

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

    style SST fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px

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


测试目的

验证UDM支持AMF通过Nudm_SDM_Get服务独立查询用户的网络切片签约信息(NSSAI),包括singleNssais(签约S-NSSAI列表)和defaultSingleNssais(默认S-NSSAI列表),确保UDM返回的数据与用户在UDM中的签约数据完全一致。

测试前置条件

  1. SA网络中各网元系统及操作维护台运行正常。

  2. 终端和网络连接正常。

  3. UE在UDM开户,签约5G业务,且已配置至少一个签约S-NSSAI和一个默认S-NSSAI。

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

  5. 网络已部署至少一个网络切片,且切片对应的NF实例可用。

测试步骤

  1. 在UDM中为测试用户签约网络切片信息,包括:

  2. singleNssais:用户签约的所有S-NSSAI列表(每个S-NSSAI包含SST和可选的SD);

  3. defaultSingleNssais:默认S-NSSAI列表(当UE未请求特定切片时使用)。

  4. UE发起注册请求,触发AMF通过Nudm_SDM_Get服务向UDM查询用户的NSSAI数据。

  5. Frame: 657(AMF发送GET请求)

  6. Frame: 663(UDM返回200 OK)

  7. Frame: 665(可选:确认后续处理)

  8. 验证UDM返回的NSSAI数据与配置的签约数据一致。

测试结果验证(预期)

  1. AMF通过Nudm_SDM_Get的GET请求成功获取NSSAI数据,请求消息格式符合3GPP TS 29.503规范。

  2. UDM正确返回200 OK,响应消息中包含singleNssaisdefaultSingleNssais字段,且值与UDM中的签约数据完全一致。


2 信令深度解析

在本测试中,AMF通过Nudm_SDM_Get服务向UDM发起独立的NSSAI查询请求。与获取完整AM-Data不同,这里AMF直接请求/nssai资源路径,UDM仅返回切片相关的签约数据。这种"按需获取"的设计体现了5GC服务化架构的精细化数据管理理念——AMF可以只获取当前所需的数据,而不必每次都拉取完整的AM-Data。

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

2.1 AMF查询切片信息(Nudm_SDM_Get - nssai)

AMF在注册流程中的某个时刻(可能在获取完整AM-Data之前或之后),需要单独确认用户的切片签约信息。此时,AMF向UDM发起一个简洁的HTTP GET请求,URI路径指向{supi}/nssai——这是一个独立于am-data的资源路径,专门用于返回用户的NSSAI签约数据。


sequenceDiagram

    participant AMF

    participant UDM

    Note over AMF, UDM: Nudm_SDM_Get - 独立查询NSSAI

    AMF->>UDM: GET /nudm-sdm/v1/imsi-460XX00000XXXX/nssai

    Note right of AMF: HTTP GET请求<br/>资源路径: /nssai<br/>无请求体,无需查询参数

    UDM-->>AMF: 200 OK

    Note left of UDM: 响应体含Nssai:<br/>singleNssais (签约切片列表)<br/>defaultSingleNssais (默认切片列表)

信令抓包解析:


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

Frame: 657

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

# 请求方法: GET

# 服务名称: nudm-sdm(SDM服务)

# API版本: v1

# 目标用户: imsi-460XX00000XXXX(已脱敏)

# 资源类型: nssai(网络切片选择辅助信息)

# 无请求体,所有定位信息通过URL路径完成

# 无查询参数——查询该用户所有签约切片信息

# 2. UDM -> AMF(返回NSSAI数据)

Frame: 663

HEADERS[3]: 200 OK

JavaScript Object Notation: application/json

  Object

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

    Member Key: singleNssais

      Array

        Object

          Member Key: sst

            Number value: 1

            # SST=1, eMBB(增强移动宽带)切片类型

          Member Key: sd

            String value: "000001"

            # 切片区分符: SD=000001

            # 标识运营商部署的第一个eMBB切片实例

        Object

          Member Key: sst

            Number value: 1

            # SST=1, eMBB切片类型(与上一个同类型)

          Member Key: sd

            String value: "000002"

            # 切片区分符: SD=000002

            # 标识运营商部署的第二个eMBB切片实例

        Object

          Member Key: sst

            Number value: 4

            # SST=4, 运营商自定义切片类型(如V2X或行业专网)

          Member Key: sd

            String value: "000003"

            # 切片区分符: SD=000003

            # 标识一个非标准类型的特殊切片

        # 用户共签约了3个S-NSSAI切片

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

    Member Key: defaultSingleNssais

      Array

        Object

          Member Key: sst

            Number value: 1

            # 默认切片类型: eMBB

          Member Key: sd

            String value: "000001"

            # 默认切片: SST=1/SD=000001

            # 当UE未请求特定切片时,AMF使用此默认切片


2.2 NSSAI关键字段深度解读

2.2.1 singleNssais(签约S-NSSAI列表)

singleNssais数组列出了该用户所有已签约的网络切片。AMF收到此列表后,会将其与UE在注册请求中携带的Requested NSSAI进行逐项比对——只有同时满足"UE请求"且"用户已签约"的切片,才会被纳入Allowed NSSAI。

本例中用户签约了3个切片:

序号 SST SD 切片含义
1 1 000001 eMBB切片实例1(默认互联网接入)
2 1 000002 eMBB切片实例2(可能是高优先级宽带)
3 4 000003 运营商自定义切片(如行业专网/V2X)

关键规则

  • AMF不会为UE分配不在singleNssais列表中的切片;

  • 一个用户可以签约同一SST下的多个切片实例(通过不同的SD值区分);

  • SST是必选字段,SD是可选字段——如果SD省略,表示该SST下的默认切片实例。

协议参考:根据3GPP TS 29.503 第5.2.2.2节,singleNssaisNssai数据类型中的必选字段,类型为array(Snssai)。每个Snssai包含必选的sst(整数,取值0~255)和可选的sd(字符串,3字节十六进制)。

2.2.2 defaultSingleNssais(默认S-NSSAI列表)

defaultSingleNssais数组定义了当UE没有在注册请求中携带Requested NSSAI时,AMF应该为UE分配的默认切片。这是一个关键的设计——确保即使用户的终端不支持或未配置切片选择逻辑,也能获得基本的网络服务。

本例中默认切片配置:

字段 取值 含义
sst 1 默认切片类型为eMBB
sd "000001" 默认切片实例为第一个eMBB切片

singleNssais与defaultSingleNssais的关系:


flowchart TD

    REG["UE发送Registration Request"] --> CHECK{"是否携带<br/>Requested NSSAI"}

    CHECK -->|"携带Requested NSSAI"| MATCH["AMF将Requested NSSAI<br/>与singleNssais逐项比对"]

    CHECK -->|"未携带Requested NSSAI"| DEFAULT["AMF使用<br/>defaultSingleNssais<br/>作为Allowed NSSAI"]

    MATCH -->|"请求切片在singleNssais中"| ALLOW["将匹配的切片<br/>加入Allowed NSSAI"]

    MATCH -->|"请求切片不在singleNssais中"| REJECT["拒绝该切片<br/>返回注册拒绝或<br/>仅授权已签约切片"]

    DEFAULT --> SET1["Allowed NSSAI =<br/>SST=1/SD=000001"]

    ALLOW --> SET2["Allowed NSSAI =<br/>匹配的S-NSSAI集合"]

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

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

    style REJECT fill:#ffcdd2,stroke:#c62828

关键规则:

  • defaultSingleNssais中的切片必须同时存在于singleNssais中,否则是配置错误;

  • 默认切片可以有多个(但通常只配置一个),AMF会将所有默认切片加入Allowed NSSAI;

  • 运营商通常将"大众用户"的默认切片设置为eMBB类型(SST=1),确保基本的互联网接入能力。

协议参考:根据3GPP TS 29.503 第5.2.2.2节,defaultSingleNssais为条件必选字段。当用户配置了默认切片时,UDM必须在响应中包含此字段。AMF在TS 23.502 第4.2.2.2节定义的注册流程中使用此数据进行切片选择。


2.3 S-NSSAI = SST + SD:切片标识的完整理解

S-NSSAI由两部分组成——SST和SD。理解它们的含义和组合规则,是掌握5G切片技术的基础。

SST(Slice/Service Type)

SST是切片的核心类型标识,长度为1字节(取值范围0~255),其中0~127为标准化值,128~255为运营商自定义值。

SST值 标准名称 特征描述 典型应用场景
1 eMBB 高带宽、高速率 普通手机上网、视频流媒体
2 URLLC 低时延、高可靠 工业控制、远程手术、自动驾驶
3 MIoT 海量连接、低功耗 智能水表、烟感传感器
4 V2X 车联网通信 车辆编队、自动驾驶辅助
128~255 运营商自定义 运营商根据需求定义 企业专网、政府应急通信

SD(Slice Differentiator)

SD是可选的切片区分符,长度为3字节(用6位十六进制字符串表示),用于在同一SST类型下进一步区分不同的切片实例。

为什么需要SD? 举一个实际例子:


运营商部署了3个eMBB切片(SST都为1):

- SST=1, SD=000001 → 面向普通用户的互联网切片

- SST=1, SD=000002 → 面向VIP用户的高速互联网切片

- SST=1, SD=000003 → 面向企业客户的企业专网切片

如果没有SD,这3个切片在信令中就完全无法区分!


2.4 AMF使用NSSAI数据进行切片选择的完整逻辑

将本篇的NSSAI查询放到整个注册流程中来看,AMF获取到切片数据后的完整处理逻辑如下:


flowchart TD

    START["AMF收到UE Registration Request"] --> GET_NSSAI["AMF通过Nudm_SDM_Get<br/>向UDM查询NSSAI数据"]

    GET_NSSAI -->|"200 OK"| PARSE["AMF解析Nssai响应:<br/>提取singleNssais和defaultSingleNssais"]

    GET_NSSAI -->|"失败"| FAIL1["注册失败:<br/>无法获取切片信息"]

    PARSE --> CHECK_REQ{"UE是否携带<br/>Requested NSSAI"}

    CHECK_REQ -->|"未携带"| USE_DEFAULT["使用defaultSingleNssais<br/>作为Allowed NSSAI"]

    CHECK_REQ -->|"已携带"| MATCH["将Requested NSSAI<br/>与singleNssais逐项匹配"]

    MATCH --> ALL_OK{"所有请求切片<br/>都在singleNssais中"}

    ALL_OK -->|"全部匹配"| ALLOW_ALL["Allowed NSSAI =<br/>Requested NSSAI"]

    ALL_OK -->|"部分匹配"| ALLOW_PART["Allowed NSSAI =<br/>仅包含匹配的切片"]

    ALL_OK -->|"全部不匹配"| USE_DEFAULT2["使用defaultSingleNssais<br/>作为Allowed NSSAI"]

    USE_DEFAULT --> NSSF["AMF将Allowed NSSAI<br/>传递给NSSF(如需要)<br/>确定目标NF实例"]

    ALLOW_ALL --> NSSF

    ALLOW_PART --> NSSF

    USE_DEFAULT2 --> NSSF

    NSSF --> REG_ACCEPT["Registration Accept<br/>携带Allowed NSSAI和Configured NSSAI"]

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

    style FAIL1 fill:#ffcdd2,stroke:#c62828

切片选择中各角色的职责分工:

角色 职责 说明
UDM 存储并返回NSSAI签约数据 本篇重点——提供singleNssais和defaultSingleNssais
AMF 执行切片授权 比对Requested NSSAI与签约数据,生成Allowed NSSAI
NSSF 网络切片选择功能 根据Allowed NSSAI确定目标NSI(Network Slice Instance)和候选NF
UE 携带Requested NSSAI 在注册请求中表明希望使用的切片
RAN 基于切片信息选择AMF gNB根据UE携带的NSSAI将信令路由到合适的AMF
-i - 在输出中包含HTTP响应头
-X GET GET HTTP方法为GET
URL http://10.XX.XX.XX:31381/nudm-sdm/v1/imsi-460XX00000XXXX/nssai UDM的SBI接口地址
singleNssais[0] SST=1/SD=000001 签约切片1: eMBB默认互联网切片
singleNssais[1] SST=1/SD=000002 签约切片2: eMBB高速切片
singleNssais[2] SST=4/SD=000003 签约切片3: 运营商自定义切片
defaultSingleNssais[0] SST=1/SD=000001 默认切片: eMBB默认互联网切片
对比维度 独立查询/nssai /am-data中获取nssai子字段
--------- ---------------- --------------------------
URI路径 /nudm-sdm/v1/{supi}/nssai /nudm-sdm/v1/{supi}/am-data
返回数据 仅NSSAI数据 完整AM-Data(含NSSAI、UE-AMBR、RFSP等)
数据量 轻量,仅含切片信息 较大,包含所有接入管理签约数据
典型场景 快速切片查询、Inter-AMF切换 初始注册、获取完整签约数据
3GPP资源 独立的Nssai资源 AmData中的nssai子字段

两者返回的切片数据内容是一致的(都来源于UDR中的同一份AccessAndMobilitySubscriptionData),区别仅在于获取粒度使用场景

工程实践提示:在大多数注册流程中,AMF会通过/am-data一次性获取所有接入管理数据(含NSSAI),无需额外发起/nssai查询。独立的/nssai查询更多用于以下特殊场景:

  • Inter-AMF mobility(N2 Handover),新AMF需要快速确认切片信息;

  • AMF本地缓存过期后的切片信息刷新;

  • 网络运维中的切片数据验证和故障排查。


3 测试结论

验证项 结果 说明
AMF成功发起NSSAI查询 OK Nudm_SDM_Get请求URI路径为/nssai,消息格式正确
UDM正确返回singleNssais OK 返回3个签约S-NSSAI:SST=1/SD=000001、SST=1/SD=000002、SST=4/SD=000003
UDM正确返回defaultSingleNssais OK 返回1个默认S-NSSAI:SST=1/SD=000001,与签约列表中的第一项一致
签约数据与UDM配置一致 OK 所有返回的S-NSSAI值与UDM中的签约数据完全一致
信令流程符合3GPP规范 OK 请求/响应流程与TS 29.503第5.2节定义的Nudm_SDM_Get服务完全吻合

本测试用例完美通过!AMF通过Nudm_SDM_Get服务独立查询用户的网络切片签约信息,UDM正确返回了包含singleNssais(3个签约切片)和defaultSingleNssais(1个默认切片)的完整NSSAI数据,所有字段值与UDM中的用户签约配置完全一致。

关键收获总结:

  1. S-NSSAI = SST + SD——SST标识切片类型(eMBB/URLLC/mMTC等),SD在同一SST下区分不同切片实例;

  2. singleNssais vs defaultSingleNssais——前者是用户签约的所有切片列表,后者是UE未请求特定切片时使用的默认切片;

  3. 独立的NSSAI查询——AMF可以通过/nssai资源路径单独获取切片信息,适用于快速查询和特殊移动性场景;

  4. 切片选择是AMF的核心职责——AMF将Requested NSSAI与签约数据比对,生成Allowed NSSAI,决定用户可以使用的切片集合。



爱卫生 | 18年通信教学 · 4本专业书籍作者 · 51学通信创始人

想系统学5G核心网?知识星球等你来:200+小时视频 · 3000+精华文章 · 1年答疑群

公众号/知识星球:51学通信 | 微信:gprshome201101

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

← 返回 UDM 实践篇