- 如果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中的签约数据完全一致。
测试前置条件
-
SA网络中各网元系统及操作维护台运行正常。
-
终端和网络连接正常。
-
UE在UDM开户,签约5G业务,且已配置至少一个签约S-NSSAI和一个默认S-NSSAI。
-
服务化接口的信令监控、分析工具准备就绪。
-
网络已部署至少一个网络切片,且切片对应的NF实例可用。
测试步骤
-
在UDM中为测试用户签约网络切片信息,包括:
-
singleNssais:用户签约的所有S-NSSAI列表(每个S-NSSAI包含SST和可选的SD);
-
defaultSingleNssais:默认S-NSSAI列表(当UE未请求特定切片时使用)。
-
UE发起注册请求,触发AMF通过Nudm_SDM_Get服务向UDM查询用户的NSSAI数据。
-
Frame: 657(AMF发送GET请求)
-
Frame: 663(UDM返回200 OK)
-
Frame: 665(可选:确认后续处理)
-
验证UDM返回的NSSAI数据与配置的签约数据一致。
测试结果验证(预期)
-
AMF通过Nudm_SDM_Get的GET请求成功获取NSSAI数据,请求消息格式符合3GPP TS 29.503规范。
-
UDM正确返回200 OK,响应消息中包含singleNssais和defaultSingleNssais字段,且值与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节,singleNssais是Nssai数据类型中的必选字段,类型为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查询更多用于以下特殊场景:
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中的用户签约配置完全一致。
关键收获总结:
-
S-NSSAI = SST + SD——SST标识切片类型(eMBB/URLLC/mMTC等),SD在同一SST下区分不同切片实例;
-
singleNssais vs defaultSingleNssais——前者是用户签约的所有切片列表,后者是UE未请求特定切片时使用的默认切片;
-
独立的NSSAI查询——AMF可以通过/nssai资源路径单独获取切片信息,适用于快速查询和特殊移动性场景;
-
切片选择是AMF的核心职责——AMF将Requested NSSAI与签约数据比对,生成Allowed NSSAI,决定用户可以使用的切片集合。
爱卫生 | 18年通信教学 · 4本专业书籍作者 · 51学通信创始人
想系统学5G核心网?知识星球等你来:200+小时视频 · 3000+精华文章 · 1年答疑群
公众号/知识星球:51学通信 | 微信:gprshome201101
本文为《5G核心网原理与实践》实践篇之UDM系列。该系列持续更新,关注「51学通信」不错过每篇更新。