在本测试环境中,切片相关配置如下:
| 配置项 |
配置内容 |
| AMF SET1支持的切片 |
切片1、切片2 |
| UE签约切片(Subscribed) |
切片1、切片2、切片3 |
| UE默认签约切片(Default) |
切片1 |
| UE请求的切片(Requested) |
切片2、切片3 |
| NSSF切片配置 |
PLMN1->TA1->AMF SET1->切片1;PLMN1->TA1->AMF SET1->切片2 |
关键差异:UE签约了切片1、2、3,请求了切片2、3,交集是切片2和切片3。但是,NSSF上只为切片1和切片2配置了AMF SET1,切片3没有配置任何AMF Set。因此,NSSF只能为切片2返回Allowed NSSAI和目标AMF,切片3将被放入Rejected NSSAI。
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(2,3)
UE->>RAN: Registration Request
Note right of UE: 携带Requested NSSAI:<br/>切片2、切片3
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,3<br/>Default NSSAI: 切片1
end
Note over AMF: AMF比对交集: 切片2,3<br/>AMF SET1只支持切片1,2<br/>无法全部支持,需查询NSSF
rect rgb(255, 245, 230)
Note over AMF, NSSF: AMF向NSSF发起切片选择查询
AMF->>NSSF: Nnssf_NSSelection_Get
Note right of AMF: 携带Requested NSSAI(2,3)<br/>Subscribed NSSAI(1,2,3)<br/>Default NSSAI(1)
NSSF-->>AMF: Nnssf_NSSelection_Get Response
Note left of NSSF: Allowed NSSAI: 切片2<br/>Rejected NSSAI: 切片3<br/>Configured NSSAI: 切片1,2<br/>Target AMF Set: SET1
end
AMF-->>RAN: Registration Accept (含Allowed NSSAI: 切片2)
RAN-->>UE: Registration Accept
部分匹配的切片选择逻辑
flowchart TD
A["AMF收到UE Registration Request"] --> B["提取Requested NSSAI: 切片2, 切片3"]
B --> C["向UDM获取Subscribed S-NSSAIs: 切片1,2,3"]
C --> D["计算交集: 切片2,3"]
D --> E["交集不为空,但AMF只支持切片1,2"]
E --> F["AMF无法全部支持交集切片3"]
F --> G["AMF向NSSF发起切片查询"]
G --> H["NSSF检查交集切片的配置"]
H --> I["切片2: NSSF有配置 - AMF SET1"]
H --> J["切片3: NSSF无配置 - 无AMF Set"]
I --> K["切片2纳入Allowed NSSAI"]
J --> L["切片3纳入Rejected NSSAI"]
K --> M["返回Allowed: 切片2, Rejected: 切片3"]
style D fill:#c8e6c9,stroke:#2e7d32,stroke-width:2px
style J fill:#ffcdd2,stroke:#c62828,stroke-width:2px
style K fill:#c8e6c9,stroke:#2e7d32,stroke-width:2px
style M fill:#e3f2fd,stroke:#1565c0,stroke-width:3px
测试目的
验证当Requested NSSAI与Subscribed S-NSSAIs存在交集,但NSSF只支持交集中的部分切片时,NSSF能够正确地将已配置的切片纳入Allowed NSSAI,将未配置的切片纳入Rejected NSSAI,并返回正确的目标AMF Set信息。
测试前置条件
-
SA网络中各网元系统及操作维护台运行正常,终端和网络连接正常。
-
终端、RAN、AMF、UDM、NSSF等网元均支持切片选择功能。
-
环境已配置好相关的切片信息:
-
AMF SET1支持切片1和切片2;
-
UE在UDM签约的切片类型为切片1、切片2、切片3,默认签约切片为切片1;
-
NSSF上配置了切片信息:PLMN1->TA1->AMF SET1->切片1,PLMN1->TA1->AMF SET1->切片2;
-
切片3在NSSF上没有配置对应的AMF Set。
-
测试终端携带的Requested NSSAI为切片2和切片3。
-
服务化接口的信令监控、分析工具准备就绪。
测试步骤
-
用户发起Registration Request流程,请求消息中携带Requested NSSAI(切片2、切片3);RAN将Registration Request发送给AMF。
-
AMF向UDM获取用户的签约信息(Subscribed S-NSSAIs),其中包含签约切片1、切片2、切片3以及默认切片1。
-
AMF判断Requested NSSAI(2,3)与Subscribed S-NSSAIs(1,2,3)的交集为切片2和切片3,但AMF SET1只支持切片1和切片2,无法全部支持交集中的切片3,因此向NSSF发送切片查询请求。
-
查看AMF发送给NSSF的Nnssf_NSSelection_Get请求消息。
-
查看NSSF返回给AMF的Nnssf_NSSelection_Get Response消息,重点关注Allowed NSSAI、Rejected NSSAI、Configured NSSAI和目标AMF Set。
-
查看AMF发送给UE的Registration Accept应答消息。
测试结果验证(预期)
-
AMF向NSSF发送Nnssf_NSSelection_Get请求消息,携带NF Type、NF Id、Subscribed S-NSSAIs(切片1、2、3,指明Default为切片1)、Requested S-NSSAIs(切片2、切片3)、TAI、PLMN ID等信元。
-
NSSF返回Nnssf_NSSelection_Get Response消息,携带:
-
Allowed S-NSSAI:切片2(NSSF有配置的切片);
-
Rejected NSSAI:切片3(NSSF无配置的切片);
-
Configured S-NSSAI:切片1、切片2;
-
Target AMF Set:SET1。
-
AMF根据NSSF的响应,为UE分配Allowed NSSAI(切片2),完成注册流程。
2 信令深度解析
在本测试中,核心挑战在于NSSF对"部分匹配"场景的处理。UE请求了切片2和切片3,两者都在用户的签约列表中(这是与第11篇的关键区别),但NSSF上只有切片2有对应的AMF配置,切片3没有。NSSF需要同时返回Allowed NSSAI(切片2)和Rejected NSSAI(切片3),让AMF和UE都清楚地知道哪些切片可用、哪些不可用。
(注:为保护网络安全,以下log中的SUPI/IMSI标识、网元IP等敏感信息已做严格脱敏处理)
2.1 UE发起注册请求(Registration Request)
UE向网络发起注册流程,在Registration Request消息中携带Requested NSSAI(切片2和切片3)。这两个切片都在用户的签约范围内,但只有切片2在NSSF上有AMF配置。
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: 切片2, 切片3<br/>- 5GS Registration Type: Initial Registration
RAN->>AMF: N2 Initial UE Message
Note left of RAN: RAN根据Requested NSSAI<br/>选择AMF并将消息路由
信令抓包解析:
# 1. UE -> RAN -> AMF(Registration Request)
Frame: 2015
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: 2
SD: "000002"
# 切片2: UE请求的第一个切片
S-NSSAI 2:
SST: 3
SD: "000003"
# 切片3: UE请求的第二个切片
# 注意: 切片2和切片3都在签约列表中
# 但只有切片2在NSSF上有AMF配置
2.2 AMF获取用户签约切片信息(Nudm_SDM_Get)
AMF收到Registration Request后,向UDM获取用户的签约数据。
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
UDM-->>AMF: 200 OK
Note left of UDM: 响应体含Nssai:<br/>singleNssais: 切片1, 切片2, 切片3<br/>defaultSingleNssais: 切片1
信令抓包解析:
# 2. AMF -> UDM(查询用户切片信息 GET请求)
Frame: 2021
HEADERS[5]: GET /nudm-sdm/v1/imsi-460XX00000XXXX/nssai
# 3. UDM -> AMF(返回NSSAI签约数据)
Frame: 2025
HEADERS[3]: 200 OK
JavaScript Object Notation: application/json
Object
# ===== 签约切片列表 =====
Member Key: singleNssais
Array
Object
Member Key: sst
Number value: 1
Member Key: sd
String value: "000001"
# 切片1: SST=1, SD=000001
Object
Member Key: sst
Number value: 2
Member Key: sd
String value: "000002"
# 切片2: SST=2, SD=000002
Object
Member Key: sst
Number value: 3
Member Key: sd
String value: "000003"
# 切片3: SST=3, SD=000003
# 用户签约了3个切片: 切片1, 切片2, 切片3
# ===== 默认切片列表 =====
Member Key: defaultSingleNssais
Array
Object
Member Key: sst
Number value: 1
Member Key: sd
String value: "000001"
# 默认切片: 切片1
关键数据对比:
| 数据项 |
切片列表 |
说明 |
| Requested NSSAI |
切片2, 切片3 |
UE请求的切片 |
| Subscribed S-NSSAIs |
切片1, 切片2, 切片3 |
用户签约的切片 |
交集结果: 切片2, 切片3 | 有交集但需NSSF进一步判断
| Default NSSAI |
切片1 |
默认签约切片 |
| AMF SET1支持 |
切片1, 切片2 |
当前AMF支持的切片 |
2.3 AMF判断交集并触发NSSF查询
AMF获取到签约数据后,执行关键判断:
Requested NSSAI = {切片2, 切片3}
Subscribed S-NSSAIs = {切片1, 切片2, 切片3}
交集 = Requested ∩ Subscribed = {切片2, 切片3}
交集不为空(这是与第11篇的关键区别),但AMF SET1只支持切片1和切片2,不支持交集中的切片3。因此AMF无法全部支持交集切片,需要向NSSF查询。
flowchart TD
A["AMF获取签约数据完成"] --> B["计算交集: 切片2, 切片3"]
B --> C["交集不为空 - 与第11篇不同"]
C --> D["检查AMF SET1支持: 切片1, 切片2"]
D --> E["交集中的切片3不在AMF SET1中"]
E --> F["AMF无法全部支持交集"]
F --> G["向NSSF发起NSSelection_Get查询"]
style C fill:#c8e6c9,stroke:#2e7d32,stroke-width:2px
style E fill:#fff3e0,stroke:#e65100,stroke-width:2px
style G fill:#e3f2fd,stroke:#1565c0,stroke-width:2px
与第11篇的区别:在第11篇中,交集为空集(完全没有匹配),NSSF直接回退到默认切片;而在本篇中,交集不为空(切片2和切片3),但只有部分切片有NSSF配置,NSSF需要对每个交集切片逐一检查。
2.4 AMF向NSSF发起切片选择查询(Nnssf_NSSelection_Get)
AMF向NSSF发送Nnssf_NSSelection_Get请求消息。
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=切片2,3<br/>subscribed-nssai=切片1,2,3<br/>default-sNSSAI=切片1<br/>tai=TA1
NSSF-->>AMF: 200 OK
Note left of NSSF: 响应体:<br/>allowedNssai: 切片2<br/>rejectedNssai: 切片3<br/>configuredNssai: 切片1,2<br/>targetAmfSet: SET1
信令抓包解析:
# 4. AMF -> NSSF(切片选择查询 GET请求)
Frame: 2030
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: 2
sd: "000002"
# Requested S-NSSAI 1: 切片2
Object
sst: 3
sd: "000003"
# Requested S-NSSAI 2: 切片3
# --- 签约的切片信息 ---
subscribed-nssai:
Array
Object
sst: 1
sd: "000001"
# Subscribed S-NSSAI 1: 切片1
Object
sst: 2
sd: "000002"
# Subscribed S-NSSAI 2: 切片2
Object
sst: 3
sd: "000003"
# Subscribed S-NSSAI 3: 切片3
# --- 默认签约切片 ---
default-sNSSAI:
Object
sst: 1
sd: "000001"
# 默认签约切片: 切片1
# --- 位置信息 ---
tai:
Object
plmnId:
mcc: "460"
mnc: "XX"
tac: "0001"
# TAI: PLMN1中的TA1
# --- PLMN标识 ---
plmn-id:
Object
mcc: "460"
mnc: "XX"
2.5 NSSF执行部分匹配切片选择
NSSF收到AMF的切片查询请求后,执行以下关键决策:
flowchart TD
A["NSSF收到NSSelection_Get请求"] --> B["计算交集: 切片2, 切片3"]
B --> C["逐一检查交集切片的NSSF配置"]
C --> D["切片2: 检查NSSF配置"]
C --> E["切片3: 检查NSSF配置"]
D --> F["切片2有配置: PLMN1->TA1->AMF SET1"]
E --> G["切片3无配置: 无对应AMF Set"]
F --> H["切片2纳入Allowed NSSAI"]
G --> I["切片3纳入Rejected NSSAI"]
H --> J["查找切片2对应AMF Set: SET1"]
J --> K["构造响应消息"]
I --> K
style F fill:#c8e6c9,stroke:#2e7d32,stroke-width:2px
style G fill:#ffcdd2,stroke:#c62828,stroke-width:2px
style K fill:#e3f2fd,stroke:#1565c0,stroke-width:3px
NSSF的决策逻辑详解:
Step 1: 计算交集
Requested NSSAI = {切片2(SST=2/SD=000002), 切片3(SST=3/SD=000003)}
Subscribed NSSAI = {切片1(SST=1/SD=000001), 切片2(SST=2/SD=000002), 切片3(SST=3/SD=000003)}
交集 = {切片2, 切片3}
Step 2: 逐一检查交集切片
| 交集切片 |
NSSF配置查询 |
配置结果 |
决策 |
| 切片2 (SST=2/SD=000002) |
PLMN1->TA1->AMF SET1 |
有配置 |
纳入Allowed NSSAI |
| 切片3 (SST=3/SD=000003) |
PLMN1->TA1->? |
无配置 |
纳入Rejected NSSAI |
Step 3: 确定目标AMF
切片2对应的AMF Set为SET1,当前AMF已在SET1中,无需重路由。
协议参考:根据3GPP TS 29.531第5.3.2.2.2节,当NSSF在交集切片中发现部分切片没有对应的网络切片配置时,应将这些切片放入Rejected NSSAI列表返回给AMF。TS 23.501第5.15.5节定义了Rejected NSSAI的处理规则——AMF在Registration Accept中将Rejected NSSAI告知UE。
2.6 NSSF返回切片选择响应(Nnssf_NSSelection_Get Response)
NSSF完成切片选择后,向AMF返回包含Allowed NSSAI和Rejected NSSAI的响应消息。
信令抓包解析:
# 5. NSSF -> AMF(切片选择响应)
Frame: 2035
HEADERS[3]: 200 OK
JavaScript Object Notation: application/json
Object
# ===== 允许的切片列表 =====
Member Key: allowedNssai
Array
Object
Member Key: sst
Number value: 2
# Allowed S-NSSAI: SST=2
Member Key: sd
String value: "000002"
# Allowed S-NSSAI: SD=000002
# 切片2: NSSF有配置,纳入Allowed NSSAI
# ===== 拒绝的切片列表 =====
Member Key: rejectedNssai
Array
Object
Member Key: sst
Number value: 3
# Rejected S-NSSAI: SST=3
Member Key: sd
String value: "000003"
# Rejected S-NSSAI: SD=000003
# 切片3: NSSF无配置,纳入Rejected 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(基于切片2的配置)
响应消息关键字段解读:
| 字段 |
取值 |
业务含义 |
| allowedNssai |
切片2 (SST=2/SD=000002) |
NSSF有配置的交集切片,允许使用 |
| rejectedNssai |
切片3 (SST=3/SD=000003) |
NSSF无配置的交集切片,当前不可用 |
| configuredNssai |
切片1, 切片2 |
运营商配置的可用切片列表 |
| targetAmfSet |
SET1 |
基于Allowed NSSAI确定的目标AMF集合 |
三种NSSAI的区别与联系:
flowchart LR
subgraph "输入数据"
REQ["Requested NSSAI<br/>切片2, 切片3"]
SUB["Subscribed NSSAI<br/>切片1, 2, 3"]
end
subgraph "NSSF处理"
INT["交集: 切片2, 切片3"]
CK1["切片2 -> NSSF配置检查 -> 有配置"]
CK2["切片3 -> NSSF配置检查 -> 无配置"]
end
subgraph "输出结果"
ALLOWED["Allowed NSSAI<br/>切片2"]
REJECTED["Rejected NSSAI<br/>切片3"]
CONFIG["Configured NSSAI<br/>切片1, 切片2"]
end
REQ --> INT
SUB --> INT
INT --> CK1
INT --> CK2
CK1 --> ALLOWED
CK2 --> REJECTED
style ALLOWED fill:#c8e6c9,stroke:#2e7d32,stroke-width:2px
style REJECTED fill:#ffcdd2,stroke:#c62828,stroke-width:2px
style CONFIG fill:#e3f2fd,stroke:#1565c0,stroke-width:2px
协议参考:根据3GPP TS 29.531第5.3.2.2.2节,rejectedNssai是Nnssf_NSSelection_Get响应中的可选字段,当部分请求的切片无法被满足时,NSSF应在响应中包含此字段。每个Rejected S-NSSAI可以携带一个拒绝原因值,指示该切片被拒绝的具体原因。
2.7 AMF完成注册流程并下发Rejected NSSAI
AMF收到NSSF的响应后,将Allowed NSSAI(切片2)和Rejected NSSAI(切片3)通过Registration Accept消息下发给UE。
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: 携带:<br/>Allowed NSSAI: 切片2<br/>Rejected NSSAI: 切片3<br/>Configured NSSAI: 切片1, 切片2
RAN->>UE: Registration Accept
Note left of UE: UE更新本地切片配置:<br/>可用切片: 切片2<br/>被拒切片: 切片3
信令抓包解析:
# 6. AMF -> RAN -> UE(Registration Accept)
Frame: 2045
NAS-5GS Message: Registration Accept
Protocol Discriminator: 5GS Mobility Management (0x7)
Message Type: Registration Accept (0x42)
# --- 允许的切片 ---
Allowed NSSAI
S-NSSAI 1:
SST: 2
SD: "000002"
# Allowed NSSAI: 切片2
# --- 拒绝的切片 ---
Rejected NSSAI
S-NSSAI 1:
SST: 3
SD: "000003"
# Rejected NSSAI: 切片3
# 该切片当前不可用,UE不应在当前TA中再次请求
# --- 配置的切片 ---
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收到Registration Accept后的行为:
-
UE将切片2保存为当前的Allowed NSSAI,后续可以在此切片上建立PDU Session;
-
UE将切片3标记为Rejected,在当前注册区域内不会再次请求该切片;
-
UE更新Configured NSSAI为切片1和切片2,后续注册请求将基于此列表发起。
2.8 三种场景的全面对比
将第11篇(无交集)、本篇(部分匹配)和正常场景进行全面对比:
flowchart TD
subgraph "场景A: 完全匹配"
A1["Requested: 切片1,2<br/>Subscribed: 切片1,2"] --> A2["交集: 切片1,2"]
A2 --> A3["NSSF: 全部有配置"]
A3 --> A4["Allowed: 切片1,2<br/>Rejected: 无"]
end
subgraph "场景B: 本篇-部分匹配"
B1["Requested: 切片2,3<br/>Subscribed: 切片1,2,3"] --> B2["交集: 切片2,3"]
B2 --> B3["NSSF: 切片2有配置<br/>切片3无配置"]
B3 --> B4["Allowed: 切片2<br/>Rejected: 切片3"]
end
subgraph "场景C: 第11篇-无交集"
C1["Requested: 切片3,4<br/>Subscribed: 切片1,2"] --> C2["交集: 空集"]
C2 --> C3["NSSF回退到Default"]
C3 --> C4["Allowed: 切片1(默认)<br/>Rejected: 无"]
end
style A4 fill:#c8e6c9,stroke:#2e7d32,stroke-width:2px
style B4 fill:#fff3e0,stroke:#e65100,stroke-width:2px
style C4 fill:#e3f2fd,stroke:#1565c0,stroke-width:2px
| 对比维度 |
场景A: 完全匹配 |
场景B: 本篇-部分匹配 |
场景C: 第11篇-无交集 |
| Requested NSSAI |
切片1, 切片2 |
切片2, 切片3 |
切片3, 切片4 |
| Subscribed NSSAI |
切片1, 切片2 |
切片1, 2, 3 |
切片1, 切片2 |
| 交集 |
切片1, 2 |
切片2, 3 |
空集 |
| NSSF配置 |
全部有 |
部分有 |
无 |
| Allowed NSSAI |
切片1, 2 |
切片2 |
切片1(默认) |
| Rejected NSSAI |
无 |
切片3 |
无 |
| 注册结果 |
正常完成 |
正常完成 |
正常完成(默认切片) |
| NSSF特殊机制 |
无 |
部分拒绝 |
默认回退 |
协议参考:TS 23.501第5.15.5节定义了Rejected NSSAI的详细处理规则。根据该节,Rejected NSSAI可以按PLMN或按TA进行限制,UE在接收到Rejected NSSAI后,应在对应的范围内不再请求该切片。
2.9 【硬核附加】Rejected NSSAI的工程意义与排障
在实际网络运维中,Rejected NSSAI是一个非常重要的排障指示器。如果用户投诉"某个切片业务不可用",工程师可以通过以下步骤排查:
Step 1: 检查信令中的Rejected NSSAI
在Registration Accept消息中查找Rejected NSSAI信元。
如果存在,说明UE请求的切片被网络拒绝了。
Step 2: 分析拒绝原因
Rejected NSSAI中的切片被拒绝,可能的原因:
1. NSSF上没有配置该切片对应的AMF Set
2. 当前TA不在该切片的服务范围内
3. 该切片尚未部署或正在维护中
Step 3: 检查NSSF配置
确认NSSF上是否配置了被拒绝切片的AMF Set:
NSSF配置项: PLMN->TA->AMF Set->S-NSSAI
如果配置缺失,需要添加相应的配置。
Step 4: 验证端到端切片部署
一个完整的切片部署需要以下环节全部就绪:
1. UDM签约配置(Subscribed NSSAI)
2. NSSF切片策略配置(AMF Set映射)← 本篇的问题点
3. AMF Set中的AMF实例就绪
4. SMF和UPF的切片关联配置
5. RAN侧的切片资源预留
3 测试结论
| 验证项 |
结果 |
说明 |
| UE成功发起注册请求 |
OK |
携带Requested NSSAI(切片2, 切片3) |
| AMF成功获取签约数据 |
OK |
Subscribed NSSAI(切片1,2,3),Default NSSAI(切片1) |
| AMF正确判断部分匹配 |
OK |
交集为切片2和切片3,AMF SET1不支持切片3 |
| AMF成功查询NSSF |
OK |
Nnssf_NSSelection_Get请求消息格式正确 |
| NSSF正确区分Allowed/Rejected |
OK |
Allowed: 切片2, Rejected: 切片3 |
| NSSF返回正确的目标AMF |
OK |
Target AMF Set: SET1 |
| AMF完成注册流程 |
OK |
Registration Accept携带Allowed NSSAI和Rejected NSSAI |
本测试用例完美验证了NSSF的部分匹配切片选择机制。当Requested NSSAI与Subscribed S-NSSAIs存在交集,但NSSF只支持交集中的部分切片时,NSSF能够正确地将已配置的切片(切片2)纳入Allowed NSSAI,将未配置的切片(切片3)纳入Rejected NSSAI,并返回正确的目标AMF Set(SET1)。
关键收获总结:
-
部分匹配与完全无交集的区别:部分匹配场景下,交集不为空,NSSF逐个检查交集切片的配置;完全无交集场景下,NSSF直接回退到默认切片;
-
Rejected NSSAI的作用:NSSF通过Rejected NSSAI明确告知AMF和UE哪些切片当前不可用,避免UE反复请求不可用的切片;
-
Configured NSSAI的更新:AMF在Registration Accept中下发Configured NSSAI(切片1, 切片2),UE后续注册将基于此列表发起请求,不再请求切片3;
-
切片部署的完整性:Rejected NSSAI的出现通常意味着切片部署不完整——虽然用户已经签约了切片3,但NSSF上还没有为切片3配置对应的AMF Set。
关于作者:爱卫生,从事通信教学18年,出版过《5G核心网原理与实践》等4本专业书籍。学5G核心网、IMS,来51学通信就对了!知识星球:200+小时视频、3000+精华文章、1年答疑群。公众号/知识星球:51学通信,微信:gprshome201101
本文为《5G核心网原理与实践》实践篇之NSSF系列。该系列持续更新,关注「51学通信」不错过每篇更新。