5GC实践篇之NSSF篇第9篇:UE注册携带requestedNssai的切片匹配
作者:爱卫生
1 测试背景与用例简介
在前面的第6~8篇中,我们聚焦了PDU会话建立阶段的切片选择机制。从本篇开始,我们将回到5G核心网的"入口"——注册流程,深入分析NSSF在注册阶段的切片匹配和AMF重定向机制。
本篇讨论的场景是:UE发起注册时携带了Requested NSSAI,但当前服务AMF无法完全支持UE请求的切片集合,需要向NSSF查询以确定正确的AMF和Allowed NSSAI。
《5G核心网原理与实践》实践篇 · NSSF 网元功能
作者:爱卫生
在前面的第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求助。
本篇的核心流程链路如下:
UE发起注册,携带Requested NSSAI = S-NSSAI(1,X);
RAN根据UE携带的信息选择初始AMF(AMF SET1);
AMF SET1从UDM获取UE签约数据(Subscribed S-NSSAI: 1,2);
AMF SET1判断自己无法同时支持Requested NSSAI(1,X)和Subscribed NSSAI的交集;
AMF SET1向NSSF发送Nnssf_NSSelection_Get请求;
NSSF匹配切片策略,返回目标AMF信息和Allowed NSSAI;
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。
终端、RAN、AMF、UDM、NSSF等网元均支持切片选择功能。
环境已配置好相关切片信息。
AMF SET1支持切片2和3,不支持切片1。
UE在UDM签约切片类型为1和2,默认签约切片为1。
NSSF上配置了切片信息:
PLMN1 -> TA1 -> AMF SET1 -> 切片2
PLMN1 -> TA1 -> AMF SET1 -> 切片3
UE在注册请求中携带Requested NSSAI = 切片1。
用户发起Registration Request流程,携带Requested NSSAI(1,X)。
RAN将Initial Message路由到AMF SET1。
检查AMF向NSSF发送的切片查询请求消息。
检查NSSF返回给AMF的切片选择应答消息。
检查AMF最终给UE的应答消息(Registration Accept或Reject)。
AMF向NSSF发送Nnssf_NSSelection_Get请求,携带NF Type、NF ID、Subscribed S-NSSAIs(1,2)、Requested S-NSSAIs(1)、TAI、PLMN ID等信元。
NSSF根据配置策略进行切片匹配,返回切片选择响应。
根据NSSF返回结果,AMF进行重定向或直接响应UE。
本测试的核心是AMF何时以及如何向NSSF发起切片查询。下面逐条消息解析。
(注:为保护网络安全,以下log中的SUPI/IMSI标识、网元IP及实例ID等敏感信息已做严格脱敏处理)
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。
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请求切片选择信息。
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根据这些信息在本地配置的切片策略库中进行匹配。
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
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。
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间有直接接口 |
将本篇涉及的各方信息整理为决策矩阵,有助于理解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。
| 验证项 | 结果 | 说明 |
|---|---|---|
| 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