规范依据:TS 23.501 V18.9.0 §5.15 / TS 23.502 V18.7.0 §4.2.2.2.2 / TS 29.531 V18.5.0 §6.1
5G网络切片是3GPP SA2架构组设计的核心能力之一。一个PLMN可以同时运营多个逻辑网络——eMBB、URLLC、MIoT、V2X——它们共享物理基础设施但拥有独立的SLA保障。NSSF(Network Slice Selection Function) 的职责就是在UE注册和PDU会话建立过程中,根据用户的签约切片、当前TAI、PLMN策略等因素,决定UE可以使用哪些切片(Allowed NSSAI),以及这些切片对应的AMF Set、NSI ID和SMF候选列表。
与4G EPS中MME统一承担接入控制不同,5GC将切片选择逻辑从AMF剥离为独立NF,使得运营商可以灵活地在不修改AMF逻辑的前提下扩展切片组合。这一设计带来的直接后果是:一次初始注册可能触发AMF重选——初始AMF发现自己无法服务UE请求的切片时,必须通过NSSF查询后转发注册请求到目标AMF。
本文将从S-NSSAI数据结构出发,逐步拆解Nnssf_NSSelection_Get API的请求/响应参数、注册流程中的NSSF交互、PDU会话建立中的SMF选择辅助、以及NSSAA和NSAC等扩展机制。
每个切片由一个S-NSSAI(Single Network Slice Selection Assistance Information) 标识。S-NSSAI由两部分组成(TS 23.501 §5.15.2.1):
| 字段 | 长度 | 必选/可选 | 含义 |
|---|---|---|---|
| SST(Slice/Service Type) | 8 bit(标准值)或可变长度(非标准) | 必选 | 指示切片的业务类型 |
| SD(Slice Differentiator) | 可变长度 | 可选 | 在同一SST下区分不同切片实例 |
标准SST值(TS 23.501 §5.15.2.2 Table 5.15.2.2-1):
| SST值 | 十进制 | 业务类型 | 典型场景 |
|---|---|---|---|
| 0 | — | 保留 | — |
| 1 | eMBB | 增强移动宽带 | 高速视频、大带宽应用 |
| 2 | URLLC | 超可靠低时延通信 | 工业自动化、远程手术 |
| 3 | MIoT | 大规模物联网 | 传感器网络、智慧城市 |
| 4 | V2X | 车联网 | 自动驾驶、V2V/V2I |
| 5 | HMTC | 高性能机器类型通信 | AR/VR、云游戏 |
| 6 | HDLLC | 高数据速率低时延 | 工业检测、高清视频监控 |
关键约束:标准SST值在所有PLMN中具有全局唯一含义;非标准SST值仅在归属PLMN内有意义。HPLMN的S-NSSAI与VPLMN的S-NSSAI之间通过MappingOfNssai建立映射关系,漫游场景下由NSSF完成映射。
TS 23.501 §5.15.2.1定义了以下NSSAI类型,它们在不同阶段出现:
| NSSAI类型 | 来源 | 最多包含S-NSSAI数 | 使用阶段 |
|---|---|---|---|
| Subscribed S-NSSAI | UDM签约数据 | 最多16个 | 注册阶段(AMF从UDM获取) |
| Configured NSSAI | AMF/NSSF按TAI配置 | 8个 | UE开机附着、5GS Registration Request |
| Requested NSSAI | UE在Registration Request中携带 | 8个 | 初始注册、移动性注册更新 |
| Allowed NSSAI | NSSF或AMF授权后返回 | 8个 | 注册完成后UE可用切片集合 |
| Pending NSSAI | 待NSSAA认证的切片 | — | 切片特定认证未完成前 |
| Partially Allowed NSSAI | 部分S-NSSAI被授权 | — | NSSAA流程中部分通过认证 |
最大S-NSSAI数量规则(TS 23.501 §5.15.2.1): - Requested NSSAI、Allowed NSSAI、Configured NSSAI均不超过8个S-NSSAI - Subscribed S-NSSAI不超过16个
NSSF对外暴露的SBI服务名为Nnssf_NSSelection,定义于TS 29.531 §6.1。核心操作为Nnssf_NSSelection_Get(HTTP GET),AMF在无法自行确定Allowed NSSAI时调用此操作。
Nnssf_NSSelection_Get通过URI查询参数传递请求信息(TS 29.531 §6.1.3.2.3.1):
GET /nnssf-nsselection/v1/network-slice-information
?nf-type=AMF
&nf-id={amfId}
&slice-info-request-for-registration={SliceInfoForRegistration}
&tai={Tai}
&home-plmn-id={PlmnId}
SliceInfoForRegistration(TS 29.531 §6.1.6.2.10)关键字段:
| 属性名 | 类型 | 必选 | 说明 |
|---|---|---|---|
| subscribedNssai | array(SubscribedSnssai) | 否 | UDM签约切片列表 |
| requestedNssai | array(Snssai) | 否 | UE请求的NSSAI |
| allowedNssaiCurrentAccess | array(AllowedSnssai) | 否 | 当前接入类型已允许的NSSAI |
| allowedNssaiOtherAccess | array(AllowedSnssai) | 否 | 其他接入类型已允许的NSSAI |
| mappingOfNssai | array(MappingOfNssai) | 否 | HPLMN与VPLMN的S-NSSAI映射 |
| defaultConfiguredSnssaiInd | boolean | 否 | 指示是否使用默认配置的S-NSSAI |
| ueSupNssrgInd | boolean | 否 | UE是否支持NSSRG |
| nsagSupported | boolean | 否 | UE是否支持NSAG |
SliceInfoForPDUSession(TS 29.531 §6.1.6.2.11)用于PDU会话场景:
| 属性名 | 类型 | 必选 | 说明 |
|---|---|---|---|
| sNssai | Snssai | 是 | 目标S-NSSAI |
| roamingIndication | RoamingIndication | 是 | 漫游指示(非漫游/LBO/归属路由) |
| homeSnssai | Snssai | 否 | 归属S-NSSAI(漫游时映射用) |
NSSF返回AuthorizedNetworkSliceInfo(TS 29.531 §6.1.6.2.2),这是整个切片选择流程的核心响应数据结构:
| 属性名 | 类型 | 说明 |
|---|---|---|
| allowedNssaiList | array(AllowedNssai) | 按接入类型划分的Allowed NSSAI列表 |
| targetAmfSet | string | 目标AMF Set标识(触发AMF重选时) |
| candidateAmfList | array(AmfInfo) | 候选AMF实例列表 |
| nsiInformation | array(NsiInformation) | 网络切片实例信息(含NSI ID和对应NRF) |
| rejectedNssaiInPlmn | array(Snssai) | PLMN级别被拒绝的S-NSSAI |
| rejectedNssaiInTa | array(Snssai) | 当前TA级别被拒绝的S-NSSAI |
| configuredNssai | array(Snssai) | 为UE配置的NSSAI |
| targetNssai | array(Snssai) | 目标NSSAI(指示UE应切换到其他频率/TA) |
| nrfAmfSet | Uri | 目标AMF Set对应的NRF地址 |
| nrfNsiInformationList | array(NrfNsiInformation) | 每个NSI对应的NRF信息 |
NsiInformation(TS 29.531 §6.1.6.2.7)包含: - nsiId:网络切片实例标识 - nrfId:该NSI对应NRF的URI - nrfNfMgtUri:NRF NF管理服务的URI - nrfAccessTokenUri:NRF OAuth2令牌端点URI
当UE发起初始注册或移动性注册更新时,如果初始AMF发现UE Requested NSSAI中的切片超出了自己的服务能力,就必须与NSSF交互。TS 23.502 §4.2.2.2.2详细定义了这一流程。
sequenceDiagram
participant UE
participant RAN as (R)AN
participant AMF as Initial AMF
participant UDM
participant NSSF
participant NRF as NRF(AMF Set)
participant Target as Target AMF
UE->>RAN: Registration Request<br/>(Requested NSSAI)
RAN->>AMF: N2 Initial UE Message<br/>(Registration Request + TAI)
Note over AMF: Step 2: AMF检查自己是否能服务<br/>Requested NSSAI中的所有切片
alt AMF不能确定Allowed NSSAI
AMF->>UDM: Nudm_SDM_Get<br/>(Slice Selection Subscription Data)
UDM-->>AMF: Subscribed S-NSSAIs<br/>(最多16个)
Note over AMF: Step 3b-3c: AMF评估<br/>Requested NSSAI vs Subscribed S-NSSAIs
AMF->>NSSF: Nnssf_NSSelection_Get<br/>(SliceInfoForRegistration<br/>+ TAI + PLMN ID)
NSSF-->>AMF: AuthorizedNetworkSliceInfo<br/>(Allowed NSSAI + Target AMF Set<br/>+ NSI Info + Rejected S-NSSAIs)
Note over AMF: Step 5: AMF发现Target AMF Set<br/>不同于自身
AMF->>NRF: Nnrf_NFDiscovery<br/>(nf-type=AMF, target-amf-set)
NRF-->>AMF: Candidate AMF List
alt Direct Forwarding (Step 7A)
AMF->>Target: Namf_Communication_UEContextTransfer<br/>(Registration Request)
Target-->>AMF: UE Context
AMF->>Target: Namf_Communication_RegStatusTransfer
else Via RAN Reroute (Step 7B)
AMF->>RAN: N2 AMF Reroute<br/>(Target AMF Set + Registration Request)
RAN->>Target: N2 Initial UE Message<br/>(Registration Request)
end
Target-->>UE: Registration Accept<br/>(Allowed NSSAI)
end
AMF收到Registration Request后,首先检查Requested NSSAI(如果携带)与自身的服务能力。AMF的决策逻辑分为三种路径(TS 23.501 §5.15.5.2.1):
路径A——AMF自行确定Allowed NSSAI: - AMF已配置了当前TAI下所有可用的S-NSSAI - Requested NSSAI中的所有S-NSSAI均在Subscribed S-NSSAIs内 - AMF不需要查询NSSF,直接根据本地配置和签约数据确定Allowed NSSAI
路径B——AMF查询NSSF: - AMF配置了NSSF地址且无法自行确定Allowed NSSAI - 可能原因:Requested NSSAI包含AMF不认识的S-NSSAI、需要确定AMF Set、需要获取NSI Information
路径C——AMF确定Registration Area: - 当Allowed NSSAI在不同TAI集合中可用时,NSSF需要协助确定最优的Registration Area
AMF通过Nudm_SDM_Get服务从UDM获取Slice Selection Subscription Data,包含: - Subscribed S-NSSAIs:UE签约的所有切片(最多16个),每个标注是否为Default S-NSSAI - NSSRG信息:网络切片同时注册组的约束条件(如果配置) - Prohibited S-NSSAIs:禁止UE使用的切片(如果配置)
AMF构建SliceInfoForRegistration请求体,向NSSF发送查询。以下是一个典型的请求示例:
{
"sliceInfoRequestForRegistration": {
"subscribedNssai": [
{"subscribedSnssai": {"sst": 1, "sd": "000001"}, "defaultIndication": true},
{"subscribedSnssai": {"sst": 2, "sd": "000002"}, "defaultIndication": false},
{"subscribedSnssai": {"sst": 3}, "defaultIndication": false}
],
"requestedNssai": [
{"sst": 1, "sd": "000001"},
{"sst": 2, "sd": "000002"}
],
"mappingOfNssai": [],
"defaultConfiguredSnssaiInd": false,
"ueSupNssrgInd": true
},
"tai": {"plmnId": {"mcc": "460", "mnc": "00"}, "tac": "0001"},
"nfType": "AMF"
}
NSSF的处理逻辑:
NSSF返回的典型响应:
{
"allowedNssaiList": [
{
"allowedSnssaiList": [
{"allowedSnssai": {"sst": 1, "sd": "000001"}, "nsiInformationList": [{"nsiId": "nsi-001", "nrfId": "https://nrf1.5gc.mnc000.mcc460.3gppnetwork.org"}]},
{"allowedSnssai": {"sst": 2, "sd": "000002"}, "nsiInformationList": [{"nsiId": "nsi-002", "nrfId": "https://nrf2.5gc.mnc000.mcc460.3gppnetwork.org"}]}
],
"accessType": "3GPP_ACCESS"
}
],
"targetAmfSet": "amf-set-2",
"nrfAmfSet": "https://nrf-set2.5gc.mnc000.mcc460.3gppnetwork.org/nnrf-disc/v1",
"rejectedNssaiInTa": [{"sst": 3}],
"nsiInformation": [
{"nsiId": "nsi-001", "nrfId": "https://nrf1.5gc.mnc000.mcc460.3gppnetwork.org"},
{"nsiId": "nsi-002", "nrfId": "https://nrf2.5gc.mnc000.mcc460.3gppnetwork.org"}
]
}
flowchart TD
A[AMF收到NSSF响应] --> B{targetAmfSet存在?}
B -->|否| C[AMF继续服务UE<br/>确定Allowed NSSAI]
B -->|是| D{targetAmfSet == 自身?}
D -->|是| C
D -->|否| E{AMF有Namf_Communication<br/>到目标AMF的路径?}
E -->|是| F[路径7A: 直接转发<br/>Namf_Communication<br/>UEContextTransfer]
E -->|否| G[路径7B: 经RAN重路由<br/>N2 AMF Reroute<br/>携带Target AMF Set]
F --> H[Target AMF继续<br/>注册流程]
G --> H
style A fill:#e1f5fe
style C fill:#c8e6c9
style H fill:#c8e6c9
style F fill:#fff3e0
style G fill:#fff3e0
路径7A——直接转发(TS 23.502 §4.2.2.2.2 Step 7A): - 初始AMF通过NRF发现目标AMF Set中的候选AMF - 调用Namf_Communication_UEContextTransfer将UE上下文转发到目标AMF - 调用Namf_Communication_RegStatusTransfer通知注册状态转移 - 目标AMF继续执行注册流程的剩余步骤
路径7B——经RAN重路由(TS 23.502 §4.2.2.2.2 Step 7B): - 初始AMF向(R)AN发送N2 AMF Reroute消息,携带Target AMF Set信息和原始Registration Request - (R)AN根据Target AMF Set选择目标AMF,重新发送N2 Initial UE Message - 目标AMF从头开始处理注册请求(可能需要重新查询UDM和NSSF)
工程实践提示:路径7A效率更高,避免了重复的UDM/NSSF查询;路径7B更通用,适用于AMF间无直接SBI连接的场景。运营商应根据网络拓扑选择合适策略。
在PDU会话建立过程中,AMF需要为UE请求的S-NSSAI选择合适的SMF。如果AMF无法根据本地配置确定SMF,则需要再次查询NSSF——但这次使用的是SliceInfoForPDUSession请求类型(TS 23.502 §4.3.2.2.3)。
sequenceDiagram
participant UE
participant AMF
participant NSSF
participant NRF
participant SMF
UE->>AMF: NAS PDU Session Establishment Request<br/>(DNN + S-NSSAI)
Note over AMF: AMF检查本地SMF选择配置
alt AMF无法确定SMF
AMF->>NSSF: Nnssf_NSSelection_Get<br/>(SliceInfoForPDUSession<br/>sNssai + roamingIndication)
NSSF-->>AMF: AuthorizedNetworkSliceInfo<br/>(nsiInformation含NRF)
AMF->>NRF: Nnrf_NFDiscovery<br/>(nf-type=SMF, sNssai, nsiId)
NRF-->>AMF: SMF候选列表
end
AMF->>SMF: Nsmf_PDUSession_CreateSMContext
SMF-->>AMF: SM Context Created
非漫游/LBO场景(TS 23.502 §4.3.2.2.3.2): - AMF直接向NSSF查询目标S-NSSAI对应的NSI Information - NSSF返回该NSI对应的NRF地址 - AMF通过该NRF发现服务该切片的SMF
归属路由漫游场景(TS 23.502 §4.3.2.2.3.3): - V-AMF向V-NSSF查询 - V-NSSF与H-NSSF交互完成跨PLMN的切片映射 - H-NSSF返回归属侧的S-NSSAI映射和H-SMF选择信息 - V-NSSF综合返回V-SMF和H-SMF的候选信息
TS 23.501 §5.3.4.3.3定义了Target NSSAI机制:当NSSF在响应中包含targetNssai字段时,表示某些Allowed S-NSSAI只能在特定的频率或TA中使用。AMF在Registration Accept中将Target NSSAI信息传递给UE,触发UE执行以下操作之一:
- 移动到Target NSSAI指示的频率
- 移动到Target NSSAI指示的TA
- 在新频率/TA下发起移动性注册更新以获取完整切片服务
NSSAA(Network Slice-Specific Authentication and Authorization)定义于TS 23.501 §5.15.10,允许运营商对特定切片执行独立的AAA认证。流程如下:
NSAC(Network Slice Admission Control)定义于TS 23.501 §5.15.11,对每个切片的注册UE数和PDU会话数设置上限。NSACF与NSSF协同工作:
NSSRG(Network Slice Simultaneous Registration Group)限制UE可以同时注册的切片组合。当UE签约的S-NSSAI跨越多个NSSRG时,UE在同一时刻只能注册属于同一NSSRG的切片子集。NSSF在确定Allowed NSSAI时执行NSSRG约束检查(TS 29.531 §6.1.6.2.10的ueSupNssrgInd参数用于指示UE是否支持此机制)。
除了核心的切片选择服务,NSSF还提供Nnssf_NSSAIAvailability服务(TS 29.531 §6.2),允许AMF订阅和通知切片可用性变化:
| 操作 | HTTP方法 | 用途 |
|---|---|---|
| NSSAIAvailability_Subscribe | POST | AMF订阅某个TAI下切片可用性变化通知 |
| NSSAIAvailability_Unsubscribe | DELETE | 取消订阅 |
| NSSAIAvailability_Notify | POST(回调) | NSSF向AMF通知切片可用性变化 |
| NSSAI Availability Get | GET | AMF查询某个TAI下可用的S-NSSAI |
当运营商修改切片配置(如新增S-NSSAI、调整TAI覆盖范围)时,NSSF通过Notify通知已订阅的AMF,AMF可在不重新查询NSSF的情况下更新本地配置。
| IE名称 | 所属消息/响应 | 类型 | 取值范围/说明 |
|---|---|---|---|
| sst | Snssai | integer(0..255) | 标准值1-6,0保留 |
| sd | Snssai | string(3字节hex) | 可选,如"000001" |
| allowedSnssai | AllowedSnssai | Snssai + nsiInformationList | 含NSI关联信息 |
| targetAmfSet | AuthorizedNetworkSliceInfo | string | AMF Set标识符 |
| nsiId | NsiInformation | string | 网络切片实例ID |
| nrfId | NsiInformation | Uri | 对应NRF的完整URI |
| rejectedNssaiInPlmn | AuthorizedNetworkSliceInfo | array(Snssai) | PLMN级别被拒切片 |
| rejectedNssaiInTa | AuthorizedNetworkSliceInfo | array(Snssai) | TA级别被拒切片 |
| targetNssai | AuthorizedNetworkSliceInfo | array(Snssai) | 需切换频率/TA的切片 |
| defaultIndication | SubscribedSnssai | boolean | 是否为默认签约切片 |
| roamingIndication | SliceInfoForPDUSession | enum | NON_ROAMING / LOCAL_BREAKOUT / HOME_ROUTED_ROAMING |
| accessType | AllowedNssai | enum | 3GPP_ACCESS / NON_3GPP_ACCESS |
现象:UE Registration Accept中Allowed NSSAI为空或不包含Requested NSSAI中的切片。
排查路径:
Nudm_SDM_Get确认Subscribed S-NSSAIs是否包含UE请求的切片。如果签约数据中没有对应S-NSSAI,需要联系运营商运维人员更新签约rejectedNssaiInPlmn:整个PLMN不可用——检查运营商切片部署策略
- rejectedNssaiInTa:当前TA不可用——检查TAI配置和切片覆盖范围现象:UE注册请求在多个AMF之间反复转发,无法完成注册。
排查路径:
targetAmfSet是否正确——NSSF的切片-AMF Set映射配置错误可能导致循环现象:UE注册成功但无法建立PDU会话,AMF日志显示SMF discovery失败。
排查路径:
Q1:AMF何时自行确定Allowed NSSAI、何时必须查询NSSF?
A:当AMF已配置当前TAI下所有可用S-NSSAI的信息(包括NSI ID、AMF Set等),且UE Requested NSSAI中的切片均在AMF服务范围内时,AMF可自行确定Allowed NSSAI(路径A)。当AMF缺少某些切片的配置信息,或需要确定目标AMF Set时,必须查询NSSF(路径B)。
Q2:漫游场景下NSSF如何处理跨PLMN切片映射?
A:VPLMN的V-NSSF收到V-AMF查询后,将VPLMN的S-NSSAI映射为HPLMN的S-NSSAI(通过MappingOfNssai),然后与H-NSSF交互获取归属侧的切片授权信息。H-NSSF返回的Authorized NSSAI再由V-NSSF映射回VPLMN的S-NSSAI返回给V-AMF。
Q3:一个UE最多可以同时使用多少个切片?
A:Allowed NSSAI最多包含8个S-NSSAI(TS 23.501 §5.15.2.1),这是UE在同一时刻可同时使用的切片上限。但签约的S-NSSAI可达16个,通过Configuration Update Command可以动态调整Allowed NSSAI的成员。
Q4:NSSF是无状态的吗?
A:NSSF本身不存储UE上下文,每次查询基于请求参数和运营商配置进行无状态决策。但NSSF维护全局的切片-AMF Set映射、TAI可用性等配置数据。NSSAIAvailability订阅机制是NSSF为数不多的有状态交互。
Q5:NSSAA和主认证的关系是什么?
A:NSSAA是补充认证,在5G-AKA/EAP-AKA'主认证完成后执行。NSSAA针对特定切片的第三方AAA认证(如企业专网的证书认证),不替代主认证。主认证建立的是PLMN级别的信任,NSSAA建立的是切片级别的授权。
Q6:Target NSSAI和Allowed NSSAI有何区别?
A:Allowed NSSAI是UE当前可直接使用的切片集合;Target NSSAI是NSSF指示UE需要移动到特定频率/TA后才能使用的切片。Target NSSAI机制用于运营商将不同切片部署在不同频段/区域的场景。
| 编号 | 来源 | 内容 |
|---|---|---|
| [1] | 3GPP TS 23.501 V18.9.0 §5.15 | Network Slicing架构定义、S-NSSAI数据模型、NSSAI生命周期 |
| [2] | 3GPP TS 23.502 V18.7.0 §4.2.2.2.2 | Registration with AMF Re-allocation流程、NSSF交互步骤 |
| [3] | 3GPP TS 23.502 V18.7.0 §4.3.2.2.3 | PDU Session中SMF选择的NSSF辅助流程 |
| [4] | 3GPP TS 29.531 V18.5.0 §6.1 | Nnssf_NSSelection服务API、AuthorizedNetworkSliceInfo数据类型 |
| [5] | 3GPP TS 29.531 V18.5.0 §6.2 | Nnssf_NSSAIAvailability订阅通知服务 |
| [6] | free5GC NSSF实现 | github.com/free5gc/nssf — 开源5GC中NSSF的参考实现 |
| [7] | 5G6G Academy | NSSF Network Slice Selection Function技术详解 |
| [8] | 3glteinfo | 5G Network Slicing Architecture and NSSF Operations |
关于作者:本文基于3GPP Release 18规范自动生成,聚焦NSSF切片选择与S-NSSAI协商信令的深度技术拆解。所有规范引用均标注具体章节号,便于读者溯源查证。
订阅获取每日3GPP技术深度解析 | Powered by 5G信令拆解实验室
[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。
