-
用户能访问哪些网络切片(Subscribed S-NSSAIs);
-
用户能建立哪些数据会话(Subscribed DNN list);
-
会话的类型和连续性模式(PDU Session Types、SSC Modes);
-
会话的服务质量等级(5QI、ARP、Session-AMBR);
-
计费方式(Charging Characteristics)。
可以说,SM-Data中的每一个字段都直接影响到PDU会话的建立参数和后续策略控制。如果SMF获取不到正确的SM-Data,或者SM-Data中的某个字段配置错误,轻则会话参数降级,重则会话建立直接失败。
本篇将详细验证:当SMF通过Nudm_SDM_Get请求获取SM-Data时,UDM是否能够正确返回完整的、与用户签约数据一致的会话管理数据。
SMF获取SM-Data流程总览
sequenceDiagram
participant UE
participant AMF
participant SMF
participant UDM
participant UDR
Note over UE, UDM: PDU会话建立流程中,SMF获取签约数据阶段
UE->>AMF: PDU Session Establishment Request
AMF->>SMF: Nsmf_PDUSession_CreateSMContext Request
rect rgb(230, 245, 255)
Note over SMF, UDR: 本篇重点:Nudm_SDM_Get获取SM-Data
SMF->>UDM: GET /nudm-sdm/v1/{supi}/sm-data<br/>?dnn=internet&s-nssai=...&plmn-id=...
UDM->>UDR: GET /nudr-dr/v1/subscription-data/{supi}/sm-data
UDR-->>UDM: 200 OK + SessionManagementSubscriptionData
UDM-->>SMF: 200 OK + SM-Data完整响应
end
Note over SMF: SMF基于SM-Data进行:<br/>1. DNN/S-NSSAI授权校验<br/>2. QoS参数配置<br/>3. SSC模式选择<br/>4. 计费策略关联
SM-Data数据结构全景图
flowchart TD
ROOT["SessionManagementSubscriptionData<br/>会话管理签约数据"] --> NSSAI["singleNssai<br/>签约的单一网络切片"]
ROOT --> DNN_CFG["dnnConfigurations<br/>DNN配置集合"]
ROOT --> CHARGE["chargingCharacteristics<br/>计费特性"]
DNN_CFG --> DNN_INTERNET["internet<br/>互联网DNN配置"]
DNN_CFG --> DNN_IMS["ims<br/>IMS语音DNN配置"]
DNN_INTERNET --> PDU_TYPE["pduSessionTypes<br/>允许的PDU会话类型"]
DNN_INTERNET --> SSC_MODE["sscModes<br/>SSC连续性模式"]
DNN_INTERNET --> QOS_PROF["5gQosProfile<br/>5GS QoS配置"]
DNN_INTERNET --> SES_AMBR["sessionAmbr<br/>会话级AMBR"]
PDU_TYPE --> DEF_TYPE["defaultSessionType: IPV4"]
PDU_TYPE --> ALLOW_TYPE["allowedSessionTypes:<br/>IPV4, IPV6, IPV4V6"]
SSC_MODE --> DEF_SSC["defaultSscMode: SSC_MODE_1"]
SSC_MODE --> ALLOW_SSC["allowedSscModes:<br/>SSC_MODE_1, SSC_MODE_2, SSC_MODE_3"]
QOS_PROF --> FIVE_QI["5qi: 9"]
QOS_PROF --> ARP["arp: priorityLevel=8"]
QOS_PROF --> SES_AMBR2["sessionAmbr: UL/DL"]
style ROOT fill:#e3f2fd,stroke:#1565c0,stroke-width:2px
style DNN_CFG fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px
style PDU_TYPE fill:#fff3e0,stroke:#e65100,stroke-width:1px
style SSC_MODE fill:#fff3e0,stroke:#e65100,stroke-width:1px
style QOS_PROF fill:#fce4ec,stroke:#c62828,stroke-width:1px
测试目的
验证UDM能够正确支持SMF通过Nudm_SDM_Get服务获取用户签约的会话管理数据(SM-Data),包括签约S-NSSAI、签约DNN列表、允许的PDU会话类型、默认PDU会话类型、允许的SSC模式、默认SSC模式、5GS签约QoS配置、计费特性和会话级AMBR等必选字段,且返回数据与用户实际签约数据一致。
测试前置条件
-
SA网络中各网元系统及操作维护台运行正常。
-
终端和网络连接正常。
-
UE在UDM开户,签约5G业务,且已配置完整的会话管理签约数据(包括S-NSSAI、DNN、QoS、SSC模式、计费特性等必选字段)。
-
服务化接口的信令监控、分析的工具准备就绪。
-
用户已在5GC完成注册。
测试步骤
-
在UDM中为用户签约会话管理数据,确保包含以下必选字段:
-
Subscribed S-NSSAIs(签约的网络切片选择辅助信息)
-
Subscribed DNN list(签约的数据网络名称列表)
-
Allowed PDU Session Types(允许的PDU会话类型)
-
Default PDU Session Type(默认PDU会话类型)
-
Allowed SSC modes(允许的SSC连续性模式)
-
Default SSC mode(默认SSC连续性模式)
-
5GS Subscribed QoS profile(5GS签约QoS配置文件)
-
Charging Characteristics(计费特性)
-
Subscribed-Session-AMBR(签约的会话级聚合最大比特速率)
-
UE发起PDU会话建立请求,触发SMF通过Nudm_SDM_Get消息从UDM获取会话管理签约数据。
-
检查SMF获取到的数据是否与UDM中配置的签约数据一致。
测试结果验证(预期)
-
用户会话管理签约数据配置成功,包含所有必选字段,OK。
-
SMF通过Nudm_SDM_Get正确获取SM-Data,UDM返回的签约数据与配置的签约数据一致,OK。
2 信令深度解析
在本测试中,核心关注点是SMF通过Nudm_SDM_Get服务从UDM获取Session Management Subscription Data的完整过程。我们将深入剖析HTTP请求的构造、查询参数的含义、响应数据的每一个关键字段,以及SMF如何使用这些数据。
(注:为保护网络安全,以下log中的SUPI/IMSI标识、网元IP及实例ID等敏感信息已做严格脱敏处理)
2.1 SMF获取SM签约数据(Nudm_SDM_Get)
当SMF收到AMF通过Nsmf_PDUSession_CreateSMContext发来的会话创建请求后,SMF必须先"查阅用户档案"——向UDM请求该用户的会话管理签约数据。这一步是SMF决策链的第一环节:没有正确的签约数据,SMF就无法做出任何合法的会话管理决策。
SMF使用HTTP GET方法,在URI中通过查询参数指定DNN、S-NSSAI和PLMN-ID,精准定位到所需的签约数据切片。
sequenceDiagram
participant SMF
participant UDM
Note over SMF, UDM: Nudm_SDM_Get - 获取会话管理签约数据
SMF->>UDM: GET /nudm-sdm/v1/imsi-460XX00000XXXX<br/>/sm-data?dnn=internet<br/>&s-nssai=sst:1,sd:XXXXXXX<br/>&plmn-id=mcc:460,mnc:XX
Note right of SMF: 请求查询参数:<br/>dnn: 目标数据网络名称<br/>s-nssai: 目标网络切片<br/>plmn-id: 用户归属PLMN
UDM-->>SMF: 200 OK
Note left of UDM: 响应体含完整SM-Data:<br/>singleNssai + dnnConfigurations<br/>包含QoS/SSC/PDU类型/AMBR等
信令抓包解析:
# 1. SMF -> UDM(获取会话管理签约数据 GET请求)
HEADERS: GET /nudm-sdm/v1/imsi-460XX00000XXXX/sm-data
?dnn=internet
&s-nssai=%7B%22sst%22%3A1%2C%22sd%22%3A%22XXXXXXX%22%7D
&plmn-id=%7B%22mcc%22%3A%22460%22%2C%22mnc%22%3A%22XX%22%7D
# URL解码后的查询参数:
# dnn=internet
# s-nssai={"sst":1,"sd":"XXXXXXX"}
# plmn-id={"mcc":"460","mnc":"XX"}
# 说明:
# - dnn参数:SMF指定要查询的数据网络名称,这里是"internet"
# - s-nssai参数:SMF指定目标切片的SST和SD值
# - plmn-id参数:标识用户的归属PLMN,用于漫游场景下区分数据
查询参数详解:
dnn |
可选 |
数据网络名称 |
指定要查询的DNN,不携带则返回所有DNN配置 |
s-nssai |
可选 |
网络切片标识 |
包含sst和sd,用于筛选特定切片的签约数据 |
plmn-id |
可选 |
PLMN标识 |
漫游场景下用于区分H-PLMN和V-PLMN的签约数据 |
sst |
1 |
切片服务类型:1=eMBB,2=URLLC,3=mMTC |
|
sd |
"XXXXXXX" |
切片区分符,在同一SST下进一步区分子切片 |
|
IPV4 |
IPv4类型会话 |
最常见的互联网接入 |
|
IPV6 |
IPv6类型会话 |
运营商IPv6-only部署 |
|
IPV4V6 |
IPv4v6双栈会话 |
同时支持IPv4和IPv6 |
|
Ethernet |
以太网类型会话 |
企业专线、工业物联网 |
|
Unstructured |
非结构化数据会话 |
CIoT、NIDD(非IP数据传输) |
|
SSC_MODE_1 |
永远保持 |
UE无论怎么移动,IP地址始终不变,锚点UPF不变 |
|
SSC_MODE_2 |
网络触发重连 |
网络决定释放会话后重新建立,可能更换IP地址 |
|
SSC_MODE_3 |
UE触发重连 |
网络通知UE先建新会话再释放旧会话,确保业务不中断 |
|
5qi |
9 |
5G QoS标识符,9=Non-GBR"尽力而为"业务 |
|
arp.priorityLevel |
8 |
ARP优先级(1~15,8为中等偏高) |
|
arp.preemptCap |
NOT_PREEMPT |
不允许抢占低优先级会话的资源 |
|
arp.preemptVuln |
PREEMPTABLE |
可被更高优先级会话抢占 |
|
priorityLevel |
15 |
数据业务优先级(1~15,适用于非GBR QoS流) |
|
| 9 |
Non-GBR |
9 |
默认数据业务(Internet) |
| 80 |
Non-GBR |
6 |
低延迟云游戏 |
uplink |
"1000000000" |
上行AMBR = 1 Gbps(单位:bps) |
|
downlink |
"2000000000" |
下行AMBR = 2 Gbps(单位:bps) |
|
| 获取网元 |
AMF |
SMF |
|
| SBI服务 |
Nudm_SDM_Get /am-data |
Nudm_SDM_Get /sm-data |
|
| 获取时机 |
UE注册流程 |
PDU会话建立流程 |
|
| 核心功能 |
控制UE是否允许接入网络 |
控制UE是否允许建立数据会话 |
|
| 切片信息 |
返回所有签约S-NSSAI的完整列表 |
返回特定S-NSSAI的详细配置 |
|
| 速率控制 |
UE-AMBR(所有会话的总速率) |
Session-AMBR(单个会话的速率) |
|
| QoS |
不含QoS Profile(由SMF侧管理) |
包含5QI/ARP等详细QoS配置 |
|
| DNN信息 |
可能含默认DNN指示 |
包含每个DNN的完整参数配置 |
|
| SSC模式 |
不涉及 |
包含允许和默认的SSC模式 |
|
| 计费 |
不涉及 |
包含Charging Characteristics |
|
| 数据量级 |
相对较轻,关注接入权限 |
数据量大,DNN配置可达数十项 |
|
为什么要分两套数据?
这个设计体现了5GC架构的一个重要原则——关注点分离(Separation of Concerns):
-
最小权限原则:AMF只需要知道"这个用户能不能接入网络",不需要关心用户能建立什么样的数据会话;SMF只需要知道"这个用户能建立什么样的会话",不需要关心用户的移动性管理策略。每个网元只获取自己需要的数据,既减少了不必要的数据传输,也降低了敏感信息泄露的风险。
-
独立演进:运营商修改用户的会话管理策略(如提速、增加DNN)时,只需要更新SM-Data,不会影响AMF侧的接入控制。反之亦然。
-
多会话场景:一个用户可以同时拥有多个PDU会话,每个会话可能由不同的SMF管理。分离SM-Data使得每个SMF可以独立获取自己关心的DNN配置,互不干扰。
协议参考:根据3GPP TS 29.503 第5.2节,UDM提供的SDM数据被分为多个独立的Resource:am-data、sm-data、nssai、ue-context-in-smf-data等。每种数据有独立的URI路径和查询参数。这种设计使得不同NF可以并行获取各自所需的数据,提高了系统效率。
两大数据集的关联关系:
虽然AM-Data和SM-Data是独立的数据集,但它们之间存在逻辑关联:
flowchart LR
A1["AMF获取AM-Data<br/>得到签约S-NSSAI列表"] --> A2["AMF在N2消息中将<br/>允许的S-NSSAI传递给SMF"]
A2 --> B1["SMF获取SM-Data<br/>基于指定的S-NSSAI<br/>查询对应的DNN配置"]
B1 --> B2["SMF验证:<br/>请求的DNN是否在<br/>sm-data的dnnConfigurations中"]
B2 -->|"存在"| C1["授权通过<br/>继续建立PDU会话"]
B2 -->|"不存在"| C2["授权失败<br/>拒绝会话建立<br/>返回错误码"]
style C1 fill:#c8e6c9,stroke:#2e7d32,stroke-width:2px
style C2 fill:#ffcdd2,stroke:#c62828,stroke-width:2px
简单来说,AMF先从AM-Data中确定"用户可以使用哪些切片",SMF再从SM-Data中确认"在这些切片下用户可以使用哪些DNN以及对应的会话参数"。两者形成了一个从宏观到微观的授权链路。
3 测试结论
| 验证项 |
结果 |
说明 |
| 会话管理签约数据配置 |
OK |
所有必选字段(S-NSSAI、DNN、PDU Session Types、SSC Modes、QoS Profile、Session-AMBR、Charging Characteristics)配置完整 |
| SMF获取SM-Data |
OK |
Nudm_SDM_Get请求正确携带dnn、s-nssai、plmn-id查询参数 |
| UDM返回数据完整性 |
OK |
响应包含singleNssai、dnnConfigurations、chargingCharacteristics全部必选字段 |
| 签约数据一致性 |
OK |
UDM返回的SM-Data与UDM中配置的签约数据完全一致 |
| DNN配置正确性 |
OK |
internet DNN配置包含完整的pduSessionTypes、sscModes、5gQosProfile、sessionAmbr |
| QoS参数正确性 |
OK |
5QI=9(默认数据业务),ARP优先级=8,Session-AMBR=1G/2G |
本测试用例完美通过!SMF通过Nudm_SDM_Get服务从UDM成功获取了完整的会话管理签约数据(SM-Data),UDM返回的数据结构与用户在UDM中配置的签约信息完全一致。返回数据涵盖了S-NSSAI配置、DNN配置(包括PDU会话类型、SSC模式、QoS配置文件、会话级AMBR)以及计费特性等全部必选字段,信令交互流程与3GPP TS 29.503规范完全吻合。
关键收获总结:
-
SM-Data是SMF进行会话管理的核心数据源——它决定了用户能否建立PDU会话以及会话的参数配置;
-
Nudm_SDM_Get通过查询参数实现精准过滤——SMF可以按DNN和S-NSSAI精确获取所需的签约配置;
-
AM-Data与SM-Data各司其职——AMF关注接入权限和移动性策略,SMF关注会话参数和QoS配置,体现了5GC关注点分离的设计理念;
-
dnnConfigurations是SM-Data中最复杂的数据结构——一个DNN配置包含会话类型、SSC模式、QoS、AMBR等多个子结构,运营商在配置时需确保各字段的逻辑一致性。
作者简介:爱卫生,通信教育老兵(18年教龄),出版《5G核心网原理与实践》等4本著作。在51学通信知识星球持续分享5GC/IMS/云原生核心网技术,包含200+小时视频课程和3000+篇技术精华帖。
学5G核心网、IMS,来51学通信就对了!公众号/知识星球:51学通信,微信:gprshome201101