在这种场景下,NSSF需要执行一种兜底机制(Fallback Mechanism):当Requested NSSAI与Subscribed S-NSSAIs完全无交集时,NSSF不直接拒绝用户的注册请求,而是回退到用户的默认签约切片(Default Subscribed NSSAI)进行切片选择,确保用户至少能够获得基本的网络服务。
本篇正是验证这一关键机制:当AMF上报的Requested NSSAI与Subscribed S-NSSAIs完全无交集时,NSSF能够按照默认签约切片进行切片选择,返回合理的Allowed NSSAI和目标AMF Set。
本测试的网络配置
在本测试环境中,切片相关配置如下:
| 配置项 |
配置内容 |
| AMF SET1支持的切片 |
切片1、切片2 |
| UE签约切片(Subscribed) |
切片1、切片2 |
| UE默认签约切片(Default) |
切片1 |
| UE请求的切片(Requested) |
切片3、切片4 |
| NSSF切片配置 |
PLMN1->TA1->AMF SET1->切片1;PLMN1->TA1->AMF SET1->切片2 |
关键点:UE请求的切片3和切片4,与签约的切片1和切片2完全没有交集。
Requested NSSAI与Subscribed NSSAI无交集时的完整信令流程
sequenceDiagram
participant UE
participant RAN as (R)AN
participant AMF
participant UDM
participant NSSF
Note over UE, NSSF: UE发起注册请求,携带Requested NSSAI(3,4)
UE->>RAN: Registration Request
Note right of UE: 携带Requested NSSAI:<br/>切片3、切片4
RAN->>AMF: N2 Message (Registration Request)
rect rgb(230, 245, 255)
Note over AMF, UDM: AMF获取用户签约切片信息
AMF->>UDM: Nudm_SDM_Get (GET)
Note right of AMF: 获取Subscribed S-NSSAIs
UDM-->>AMF: 200 OK
Note left of UDM: Subscribed NSSAI: 切片1, 切片2<br/>Default NSSAI: 切片1
end
Note over AMF: AMF比对Requested(3,4)与Subscribed(1,2)<br/>交集为空! AMF无法全部支持
Note over AMF: AMF触发NSSF切片查询
rect rgb(255, 245, 230)
Note over AMF, NSSF: AMF向NSSF发起切片选择查询
AMF->>NSSF: Nnssf_NSSelection_Get
Note right of AMF: 携带Requested NSSAI(3,4)<br/>Subscribed NSSAI(1,2)<br/>Default NSSAI(1)<br/>TAI、PLMN ID
NSSF-->>AMF: Nnssf_NSSelection_Get Response
Note left of NSSF: Allowed NSSAI: 切片1<br/>Configured NSSAI: 切片1,2<br/>Target AMF Set: SET1
end
Note over AMF: NSSF使用默认签约切片(1)作为Allowed NSSAI
AMF-->>RAN: Registration Accept (含Allowed NSSAI)
RAN-->>UE: Registration Accept
切片匹配逻辑分析
flowchart TD
A["AMF收到UE Registration Request"] --> B["提取Requested NSSAI: 切片3, 切片4"]
B --> C["向UDM获取Subscribed S-NSSAIs: 切片1, 切片2"]
C --> D["计算Requested与Subscribed的交集"]
D --> E["交集结果: 空集 - 无任何匹配切片"]
E --> F["AMF向NSSF发起切片查询"]
F --> G["NSSF检测到无交集"]
G --> H["NSSF使用Default Subscribed NSSAI: 切片1"]
H --> I["NSSF返回Allowed NSSAI: 切片1"]
I --> J["NSSF返回Target AMF Set: SET1"]
J --> K["AMF根据NSSF响应完成注册流程"]
style E fill:#ffcdd2,stroke:#c62828,stroke-width:2px
style H fill:#fff3e0,stroke:#e65100,stroke-width:2px
style K fill:#c8e6c9,stroke:#2e7d32,stroke-width:3px
测试目的
验证当AMF上报的Requested NSSAI与Subscribed S-NSSAIs完全没有交集时,NSSF能够按照用户的默认签约切片(Default Subscribed NSSAI)进行切片选择,返回基于默认切片的Allowed NSSAI以及对应的目标AMF Set,确保UE仍能正常完成注册流程。
测试前置条件
-
SA网络中各网元系统及操作维护台运行正常,终端和网络连接正常。
-
终端、RAN、AMF、UDM、NSSF等网元均支持切片选择功能。
-
环境已配置好相关的切片信息:
-
AMF SET1支持切片1和切片2;
-
UE在UDM签约的切片类型为切片1和切片2,默认签约切片为切片1;
-
NSSF上配置了切片信息:PLMN1->TA1->AMF SET1->切片1,PLMN1->TA1->AMF SET1->切片2。
-
测试终端携带的Requested NSSAI为切片3和切片4(与签约切片无交集)。
-
服务化接口的信令监控、分析工具准备就绪。
测试步骤
-
用户发起Registration Request流程,请求消息中携带Requested NSSAI(切片3、切片4);RAN根据UE携带的AN信息(Request NSSAI、5G-S-TMSI)结合相关策略选择AMF,并将Registration Request发送给AMF。
-
AMF向UDM获取用户的签约信息(Subscribed S-NSSAIs),其中包含签约切片1、切片2以及默认切片1。
-
AMF判断Requested NSSAI(3,4)与Subscribed S-NSSAIs(1,2)的交集为空集,AMF无法全部支持,向NSSF发送切片查询请求。
-
查看AMF发送给NSSF的Nnssf_NSSelection_Get请求消息,验证携带的信元。
-
查看NSSF返回给AMF的Nnssf_NSSelection_Get Response消息,验证返回的Allowed NSSAI、Configured NSSAI和目标AMF Set。
-
查看AMF发送给UE的Registration Accept应答消息。
测试结果验证(预期)
-
AMF向NSSF发送Nnssf_NSSelection_Get请求消息,携带NF Type、NF Id(AMF的UUID)、Subscribed S-NSSAIs(切片1、切片2,指明Default为切片1)、Requested S-NSSAIs(切片3、切片4)、TAI、PLMN ID等信元。
-
NSSF返回Nnssf_NSSelection_Get Response消息,携带:
-
Allowed S-NSSAI:切片1(基于默认签约切片);
-
Configured S-NSSAI:切片1、切片2;
-
Target AMF Set:SET1。
-
AMF根据NSSF的响应,为UE分配Allowed NSSAI(切片1),完成注册流程。
2 信令深度解析
在本测试中,整个切片选择流程的核心挑战在于:UE请求的切片3和切片4,与用户在UDM中签约的切片1和切片2完全没有交集。这是一个典型的"请求与签约完全错配"场景,NSSF需要通过默认切片回退机制确保用户仍能获得网络服务。
(注:为保护网络安全,以下log中的SUPI/IMSI标识、网元IP等敏感信息已做严格脱敏处理)
2.1 UE发起注册请求(Registration Request)
UE向网络发起注册流程,在Registration Request消息中携带用户标识(SUCI、5G-GUTI或PEI)以及Requested NSSAI。在本测试中,UE请求的切片为切片3和切片4——这两个切片都不在用户的签约范围内。
sequenceDiagram
participant UE
participant RAN as (R)AN
participant AMF
Note over UE, AMF: Step 1: UE发起注册
UE->>RAN: Registration Request
Note right of UE: 携带信元:<br/>- 用户标识: SUCI/5G-GUTI<br/>- Requested NSSAI: 切片3, 切片4<br/>- UE Network Capability<br/>- 5GS Registration Type: Initial Registration
RAN->>AMF: N2 Initial UE Message
Note left of RAN: RAN根据Requested NSSAI<br/>和5G-S-TMSI选择AMF<br/>将消息路由到AMF
信令抓包解析:
# 1. UE -> RAN -> AMF(Registration Request)
Frame: 1025
NAS-5GS Message: Registration Request
Protocol Discriminator: 5GS Mobility Management (0x7)
Message Type: Registration Request (0x41)
5GS Registration Type: Initial Registration
# --- 用户标识 ---
Mobile Station Identifier: SUCI
SUPI Format: IMSI
MCC: 460
MNC: XX
MSIN: 00000XXXX
# SUPI: imsi-460XX00000XXXX(已脱敏)
# --- 请求的切片信息 ---
Requested NSSAI
S-NSSAI 1:
SST: 3
SD: 000003
# 切片3: UE请求的第一个切片
S-NSSAI 2:
SST: 4
SD: 000004
# 切片4: UE请求的第二个切片
# 注意: 切片3和切片4都不在用户的签约范围内
关键说明:UE携带的Requested NSSAI(切片3、切片4)来源于UE中预配置的切片信息或者从PCF/AMF下发的Configured NSSAI。当用户更换运营商或SIM卡但未更新终端配置时,就可能出现Requested NSSAI与Subscribed NSSAI完全不匹配的情况。
2.2 AMF获取用户签约切片信息(Nudm_SDM_Get)
AMF收到Registration Request后,首先需要向UDM获取用户的签约数据,其中包含Subscribed S-NSSAIs(签约切片列表)和Default Subscribed S-NSSAIs(默认切片列表)。
sequenceDiagram
participant AMF
participant UDM
Note over AMF, UDM: Step 2: AMF获取签约切片信息
AMF->>UDM: Nudm_SDM_Get (GET)
Note right of AMF: GET /nudm-sdm/v1/<br/>imsi-460XX00000XXXX/nssai<br/>获取NSSAI签约数据
UDM-->>AMF: 200 OK
Note left of UDM: 响应体含Nssai:<br/>singleNssais: 切片1, 切片2<br/>defaultSingleNssais: 切片1
信令抓包解析:
# 2. AMF -> UDM(查询用户切片信息 GET请求)
Frame: 1031
HEADERS[5]: GET /nudm-sdm/v1/imsi-460XX00000XXXX/nssai
# 请求方法: GET
# 服务名称: nudm-sdm
# 目标用户: imsi-460XX00000XXXX
# 资源类型: nssai
# 3. UDM -> AMF(返回NSSAI签约数据)
Frame: 1035
HEADERS[3]: 200 OK
JavaScript Object Notation: application/json
Object
# ===== 签约切片列表 =====
Member Key: singleNssais
Array
Object
Member Key: sst
Number value: 1
# 切片1: SST=1
Member Key: sd
String value: "000001"
# 切片1: SD=000001
Object
Member Key: sst
Number value: 2
# 切片2: SST=2
Member Key: sd
String value: "000002"
# 切片2: SD=000002
# 用户签约了2个切片: 切片1和切片2
# ===== 默认切片列表 =====
Member Key: defaultSingleNssais
Array
Object
Member Key: sst
Number value: 1
# 默认切片: SST=1
Member Key: sd
String value: "000001"
# 默认切片: SD=000001
# 当Requested与Subscribed无交集时<br/>NSSF将使用此默认切片
关键数据对比:
| 数据项 |
切片列表 |
说明 |
| Requested NSSAI |
切片3, 切片4 |
UE请求的切片 |
| Subscribed S-NSSAIs |
切片1, 切片2 |
用户签约的切片 |
| Default NSSAI |
切片1 |
默认签约切片 |
交集结果: 空集 | 完全没有匹配!
协议参考:根据3GPP TS 29.503第5.2.2节,singleNssais是Nssai数据类型中的必选字段,defaultSingleNssais为条件必选字段。AMF在切片选择过程中需要同时使用这两个字段来确定Allowed NSSAI。
2.3 AMF判断交集并向NSSF发起切片查询
AMF获取到签约数据后,进行关键的判断:
Requested NSSAI = {切片3, 切片4}
Subscribed S-NSSAIs = {切片1, 切片2}
交集 = Requested ∩ Subscribed = {} (空集)
由于交集为空集,AMF无法直接确定Allowed NSSAI,因此需要向NSSF发起切片选择查询。
flowchart TD
A["AMF获取签约数据"] --> B["提取Requested NSSAI: 切片3, 切片4"]
A --> C["提取Subscribed NSSAI: 切片1, 切片2"]
B --> D["计算交集: 切片3,4 ∩ 切片1,2"]
C --> D
D --> E["交集为空集"]
E --> F["AMF判断: 无法全部支持"]
F --> G["AMF决定: 向NSSF查询"]
G --> H["构造Nnssf_NSSelection_Get请求"]
style E fill:#ffcdd2,stroke:#c62828,stroke-width:2px
style G fill:#fff3e0,stroke:#e65100,stroke-width:2px
AMF的判断逻辑说明:
AMF在注册流程中执行以下判断步骤:
-
如果UE未携带Requested NSSAI,则判断AMF是否支持所有标记为default的Subscribed S-NSSAIs;
-
如果UE携带了Requested NSSAI,则判断AMF是否可以同时支持Requested NSSAI与Subscribed S-NSSAIs的交集;
-
如果AMF可以全部支持,则无需进行NSSF切片查询,AMF直接继续后续流程;
-
如果AMF无法全部支持(本场景中交集为空集),则必须向NSSF发送切片查询请求。
2.4 AMF向NSSF发起切片选择查询(Nnssf_NSSelection_Get)
AMF向NSSF发送Nnssf_NSSelection_Get请求消息,携带所有必要的信元,供NSSF进行切片选择决策。
sequenceDiagram
participant AMF
participant NSSF
Note over AMF, NSSF: Step 3: Nnssf_NSSelection_Get
AMF->>NSSF: GET /nnssf-nsselection/v1/slices
Note right of AMF: 查询参数:<br/>nf-type=AMF<br/>nf-id=AMF_UUID<br/>requested-nssai=切片3,4<br/>subscribed-nssai=切片1,2<br/>default-sNSSAI=切片1<br/>tai=TA1<br/>plmn-id=PLMN1
NSSF-->>AMF: 200 OK
Note left of NSSF: 响应体:<br/>allowedNssai: 切片1<br/>configuredNssai: 切片1,2<br/>targetAmfSet: SET1
信令抓包解析:
# 4. AMF -> NSSF(切片选择查询 GET请求)
Frame: 1038
HEADERS[8]: GET /nnssf-nsselection/v1/slices
Query String:
# --- NF类型和标识 ---
nf-type: AMF
# 发起查询的NF类型: AMF
nf-id: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
# AMF的NF Instance ID(UUID,已脱敏)
# --- 请求的切片信息 ---
requested-nssai:
Array
Object
sst: 3
sd: "000003"
# Requested S-NSSAI 1: 切片3
Object
sst: 4
sd: "000004"
# Requested S-NSSAI 2: 切片4
# --- 签约的切片信息 ---
subscribed-nssai:
Array
Object
sst: 1
sd: "000001"
# Subscribed S-NSSAI 1: 切片1
Object
sst: 2
sd: "000002"
# Subscribed S-NSSAI 2: 切片2
# --- 默认签约切片 ---
default-sNSSAI:
Object
sst: 1
sd: "000001"
# 默认签约切片: 切片1
# 当Requested与Subscribed无交集时<br/>NSSF使用此切片作为Allowed NSSAI
# --- 位置信息 ---
tai:
Object
plmnId:
mcc: "460"
mnc: "XX"
tac: "0001"
# TAI: PLMN1中的TA1
# --- PLMN标识 ---
plmn-id:
Object
mcc: "460"
mnc: "XX"
# PLMN1
# --- 可选信元 ---
defaultConfiguredSnssaiInd: true
# 指示是否使用默认配置的S-NSSAI
协议参考:根据3GPP TS 29.531第5.3.2.2节,Nnssf_NSSelection_Get服务操作的请求消息中,requested-nssai、subscribed-nssai、tai、plmn-id为关键信元。当defaultConfiguredSnssaiInd设置为true时,表示NSSF可以使用默认配置的S-NSSAI进行回退选择。
2.5 NSSF执行默认切片回退选择
NSSF收到AMF的切片查询请求后,执行以下关键决策步骤:
flowchart TD
A["NSSF收到NSSelection_Get请求"] --> B["提取Requested NSSAI: 切片3, 切片4"]
A --> C["提取Subscribed NSSAI: 切片1, 切片2"]
B --> D["比对交集"]
C --> D
D --> E["交集为空: 切片3,4不在签约列表中"]
E --> F["检查default-sNSSAI: 切片1"]
F --> G["切片1是否在NSSF配置中"]
G -->|"是"| H["查找切片1对应的AMF Set"]
H --> I["找到: PLMN1->TA1->AMF SET1->切片1"]
I --> J["确定Allowed NSSAI: 切片1"]
I --> K["确定Target AMF Set: SET1"]
J --> L["构造NSSelection_Get Response"]
K --> L
style E fill:#ffcdd2,stroke:#c62828,stroke-width:2px
style F fill:#fff3e0,stroke:#e65100,stroke-width:2px
style L fill:#c8e6c9,stroke:#2e7d32,stroke-width:3px
NSSF的决策逻辑详解:
-
交集计算:NSSF首先计算Requested NSSAI(切片3,4)与Subscribed S-NSSAIs(切片1,2)的交集,结果为空集;
-
回退机制触发:当交集为空时,NSSF触发默认切片回退机制,查找用户签约数据中标记为default的切片——即切片1;
-
配置匹配:NSSF检查切片1是否在自身的切片配置中,发现PLMN1->TA1->AMF SET1->切片1的配置存在;
-
确定目标AMF:根据配置,切片1对应的AMF Set为SET1;
-
生成响应:NSSF构造NSSelection_Get Response,包含Allowed NSSAI(切片1)、Configured NSSAI(切片1,2)和Target AMF Set(SET1)。
2.6 NSSF返回切片选择响应(Nnssf_NSSelection_Get Response)
NSSF完成切片选择后,向AMF返回切片选择响应消息。
信令抓包解析:
# 5. NSSF -> AMF(切片选择响应)
Frame: 1042
HEADERS[3]: 200 OK
JavaScript Object Notation: application/json
Object
# ===== 允许的切片列表 =====
Member Key: allowedNssai
Array
Object
Member Key: sst
Number value: 1
# Allowed S-NSSAI: SST=1
Member Key: sd
String value: "000001"
# Allowed S-NSSAI: SD=000001
# 切片1: 基于默认签约切片确定的Allowed NSSAI
# ===== 配置的切片列表 =====
Member Key: configuredNssai
Array
Object
Member Key: sst
Number value: 1
Member Key: sd
String value: "000001"
# Configured NSSAI: 切片1
Object
Member Key: sst
Number value: 2
Member Key: sd
String value: "000002"
# Configured NSSAI: 切片2
# 运营商为该PLMN配置的切片列表: 切片1和切片2
# ===== 目标AMF集合 =====
Member Key: targetAmfSet
String value: "SET1"
# 目标AMF Set: SET1
# 当前AMF就在SET1中,无需重路由
响应消息关键字段解读:
| 字段 |
取值 |
业务含义 |
| allowedNssai |
切片1 (SST=1/SD=000001) |
基于默认签约切片确定的Allowed NSSAI |
| configuredNssai |
切片1, 切片2 |
运营商配置的可用切片列表 |
| targetAmfSet |
SET1 |
目标AMF集合,当前AMF已在该集合中 |
关键分析:为什么Allowed NSSAI是切片1而不是切片3或切片4?
这是因为NSSF执行了默认切片回退机制:
flowchart LR
REQ["Requested NSSAI<br/>切片3, 切片4"] -->|"交集为空"| FALLBACK["NSSF回退机制"]
SUB["Subscribed NSSAI<br/>切片1, 切片2"] --> FALLBACK
FALLBACK --> DEFAULT["使用Default NSSAI<br/>切片1"]
DEFAULT --> ALLOWED["Allowed NSSAI = 切片1"]
ALLOWED --> AMF["Target AMF Set = SET1"]
style FALLBACK fill:#fff3e0,stroke:#e65100,stroke-width:2px
style ALLOWED fill:#c8e6c9,stroke:#2e7d32,stroke-width:2px
-
UE请求的切片3和切片4不在用户的签约切片列表中,因此不能作为Allowed NSSAI;
-
NSSF检查用户的默认签约切片(切片1),确认该切片在NSSF中有配置且有可用的AMF Set;
-
NSSF将切片1作为Allowed NSSAI返回给AMF,确保UE至少可以接入一个可用的切片。
协议参考:根据3GPP TS 29.531第5.3.2.2.2节,当Requested NSSAI中的所有S-NSSAI都不在Subscribed S-NSSAIs中时,NSSF应使用签约数据中的默认S-NSSAI来确定Allowed NSSAI和目标网络切片信息。TS 23.501第5.15.3节也规定了类似的默认切片选择规则。
2.7 AMF完成注册流程
AMF收到NSSF的切片选择响应后,根据返回的Allowed NSSAI(切片1)和Target AMF Set(SET1)完成注册流程。
sequenceDiagram
participant AMF
participant RAN as (R)AN
participant UE
Note over AMF, UE: Step 4: AMF完成注册
Note over AMF: AMF检查Target AMF Set = SET1<br/>当前AMF就在SET1中,无需重路由
AMF->>RAN: Registration Accept
Note right of AMF: 携带Allowed NSSAI: 切片1<br/>Configured NSSAI: 切片1, 切片2
RAN->>UE: Registration Accept
Note left of UE: UE更新本地切片配置:<br/>Allowed NSSAI: 切片1<br/>Configured NSSAI: 切片1, 切片2
信令抓包解析:
# 6. AMF -> RAN -> UE(Registration Accept)
Frame: 1050
NAS-5GS Message: Registration Accept
Protocol Discriminator: 5GS Mobility Management (0x7)
Message Type: Registration Accept (0x42)
# --- 允许的切片 ---
Allowed NSSAI
S-NSSAI 1:
SST: 1
SD: 000001
# Allowed NSSAI: 切片1
# 基于默认签约切片确定
# --- 配置的切片(可选)---
Configured NSSAI for the Serving PLMN
S-NSSAI 1:
SST: 1
SD: 000001
# Configured NSSAI: 切片1
S-NSSAI 2:
SST: 2
SD: 000002
# Configured NSSAI: 切片2
# 运营商配置的切片列表,UE后续注册时可使用
工程说明:AMF在Registration Accept中下发的Configured NSSAI非常重要——UE会将其保存,并在后续的注册请求中使用这些切片作为Requested NSSAI。这样,UE下次注册时就不会再请求切片3和切片4了,而是使用Configured NSSAI(切片1、切片2),从而避免再次触发NSSF的默认切片回退机制。
2.8 【硬核附加】用curl模拟NSSF切片选择查询
在实际排障中,如果怀疑NSSF的默认切片回退机制异常,可以使用curl直接查询NSSF接口来验证:
curl -i -X GET "http://10.XX.XX.XX:8081/nnssf-nsselection/v1/slices?nf-type=AMF&nf-id=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX&requested-nssai=%5B%7B%22sst%22:3,%22sd%22:%22000003%22%7D,%7B%22sst%22:4,%22sd%22:%22000004%22%7D%5D&subscribed-nssai=%5B%7B%22sst%22:1,%22sd%22:%22000001%22%7D,%7B%22sst%22:2,%22sd%22:%22000002%22%7D%5D&default-sNSSAI=%7B%22sst%22:1,%22sd%22:%22000001%22%7D&tai=%7B%22plmnId%22:%7B%22mcc%22:%22460%22,%22mnc%22:%22XX%22%7D,%22tac%22:%220001%22%7D&plmn-id=%7B%22mcc%22:%22460%22,%22mnc%22:%22XX%22%7D&defaultConfiguredSnssaiInd=true"
NSSF返回的JSON响应(已脱敏):
{
"allowedNssai": [
{
"sst": 1,
"sd": "000001"
}
],
"configuredNssai": [
{
"sst": 1,
"sd": "000001"
},
{
"sst": 2,
"sd": "000002"
}
],
"targetAmfSet": "SET1"
}
排障要点:
-
检查NSSF返回的allowedNssai是否包含默认签约切片(切片1);
-
检查targetAmfSet是否有对应的可用AMF实例;
-
如果NSSF返回错误(如404或500),检查NSSF的切片配置是否正确。
2.9 无交集场景与正常场景的对比
将本篇的无交集场景与正常场景进行对比,有助于更深入地理解NSSF的切片选择机制:
flowchart TD
subgraph "正常场景: 有交集"
A1["Requested: 切片1, 切片2<br/>Subscribed: 切片1, 切片2"] --> B1["交集: 切片1, 切片2"]
B1 --> C1["Allowed NSSAI = 切片1, 切片2"]
C1 --> D1["正常完成注册"]
end
subgraph "本篇场景: 无交集"
A2["Requested: 切片3, 切片4<br/>Subscribed: 切片1, 切片2"] --> B2["交集: 空集"]
B2 --> E2["NSSF回退到Default: 切片1"]
E2 --> F2["Allowed NSSAI = 切片1"]
F2 --> G2["仍可完成注册"]
end
style B1 fill:#c8e6c9,stroke:#2e7d32,stroke-width:2px
style B2 fill:#ffcdd2,stroke:#c62828,stroke-width:2px
style E2 fill:#fff3e0,stroke:#e65100,stroke-width:2px
style G2 fill:#c8e6c9,stroke:#2e7d32,stroke-width:2px
| 对比维度 |
正常场景(有交集) |
本篇场景(无交集) |
| Requested NSSAI |
切片1, 切片2 |
切片3, 切片4 |
| Subscribed NSSAI |
切片1, 切片2 |
切片1, 切片2 |
| 交集结果 |
切片1, 切片2 |
空集 |
| NSSF行为 |
直接基于交集选择 |
回退到默认签约切片 |
| Allowed NSSAI |
切片1, 切片2 |
切片1(默认) |
| 注册结果 |
正常完成 |
正常完成(基于默认切片) |
协议参考:根据3GPP TS 29.531第5.3.2节,Nnssf_NSSelection_Get服务操作的完整行为定义。TS 29.510第6.2.6节定义了NSSF的NF Profile中如何配置支持的切片信息。
3 测试结论
| 验证项 |
结果 |
说明 |
| UE成功发起注册请求 |
OK |
携带Requested NSSAI(切片3, 切片4) |
| AMF成功获取签约数据 |
OK |
Subscribed NSSAI(切片1, 切片2),Default NSSAI(切片1) |
| AMF正确判断无交集 |
OK |
切片3,4与切片1,2交集为空集 |
| AMF成功查询NSSF |
OK |
Nnssf_NSSelection_Get请求消息格式正确 |
| NSSF正确回退到默认切片 |
OK |
使用Default NSSAI(切片1)作为Allowed NSSAI |
| NSSF返回正确的目标AMF |
OK |
Target AMF Set: SET1 |
| AMF完成注册流程 |
OK |
Registration Accept携带Allowed NSSAI(切片1) |
本测试用例完美验证了NSSF的默认切片回退机制。当AMF上报的Requested NSSAI与Subscribed S-NSSAIs完全没有交集时,NSSF能够按照用户的默认签约切片(Default Subscribed NSSAI)进行切片选择,返回基于默认切片的Allowed NSSAI(切片1)以及对应的目标AMF Set(SET1),确保UE仍能正常完成注册流程。
关键收获总结:
-
NSSF回退机制:当Requested NSSAI与Subscribed NSSAI无交集时,NSSF不会直接拒绝,而是回退到默认签约切片,确保用户至少获得基本网络服务;
-
defaultConfiguredSnssaiInd的作用:AMF在Nnssf_NSSelection_Get请求中携带此标志,告知NSSF可以使用默认配置的S-NSSAI进行回退选择;
-
Configured NSSAI的下发:AMF在Registration Accept中下发Configured NSSAI(切片1, 切片2),UE后续注册将使用这些正确的切片,避免再次触发回退机制;
-
Target AMF Set的确定:NSSF根据默认切片1的配置(PLMN1->TA1->AMF SET1->切片1)确定目标AMF Set为SET1,当前AMF已在SET1中,无需重路由。
关于作者:爱卫生,从事通信教学18年,出版过《5G核心网原理与实践》等4本专业书籍。学5G核心网、IMS,来51学通信就对了!知识星球:200+小时视频、3000+精华文章、1年答疑群。公众号/知识星球:51学通信,微信:gprshome201101
本文为《5G核心网原理与实践》实践篇之NSSF系列。该系列持续更新,关注「51学通信」不错过每篇更新。