首页 › slicing-mec › NSSF切片选择与AMF重选信令拆解

NSSF切片选择与AMF重选信令拆解

1. 引言:为什么需要NSSF介入的AMF重选

在5G网络切片架构中,一个核心挑战是:UE首次附着时,RAN如何知道该将Registration Request路由到哪个AMF? 答案是——RAN通常不知道。RAN基于5G-S-TMSI或默认路由选择一个初始AMF(Initial AMF),但该AMF未必能服务于UE所请求的网络切片。此时,NSSF(Network Slice Selection Function) 被引入,负责确定UE应接入的切片实例(NSI)以及对应的AMF Set/AMF。

本文聚焦 TS 23.502 Section 4.2.2.2 "Registration with AMF re-allocation and network slice selection" 流程,逐步拆解从UE发起注册到最终完成切片选择和AMF重选的完整信令链路,涵盖Nnssf_NSSelection服务调用、S-NSSAI映射、NGAP RerouteNASRequest重路由三个关键博弈点。

2. 核心概念:NSSAI分类体系与S-NSSAI结构

2.1 S-NSSAI结构

每个S-NSSAI由两个字段组成(TS 23.501 Section 5.15.2):

字段 长度 必选/可选 说明
SST(Slice/Service Type) 8 bits 必选 标识切片类型。标准化值:1=eMBB, 2=URLLC, 3=MIoT, 4=V2X
SD(Slice Differentiator) 24 bits 可选 在同一SST下区分不同切片实例
graph LR
    subgraph S-NSSAI
        SST["SST<br/>8-bit<br/>切片服务类型"]
        SD["SD<br/>24-bit<br/>切片区分符<br/>(可选)"]
    end
    SST -->|标准值| E["1=eMBB<br/>2=URLLC<br/>3=MIoT<br/>4=V2X"]
    SD -->|运营商自定义| F["同一SST下<br/>区分多实例"]

2.2 NSSAI五类分类

在注册流程中,NSSAI在UE、AMF、NSSF、UDM之间以五种形态流转(TS 23.501 Section 5.15.5):

NSSAI类型 生成方 携带位置 说明
Subscribed S-NSSAIs UDM/UDR Nudm_SDM_Get响应 用户签约的所有切片,含默认切片指示
Configured NSSAI AMF/NSSF Registration Accept 针对当前PLMN为UE配置的可用S-NSSAI
Requested NSSAI UE Registration Request UE在注册请求中携带的希望接入的切片
Allowed NSSAI NSSF/AMF Registration Accept 当前注册区域内UE被授权使用的S-NSSAI
Rejected NSSAI NSSF Nnssf响应 在当前PLMN或TA被拒绝的S-NSSAI

2.3 NSSAI状态机

stateDiagram-v2
    [*] --> Configured: UE开机/PLMN变更
    Configured --> Requested: UE发起注册<br/>携带Requested NSSAI
    Requested --> Allowed: NSSF验证通过
    Requested --> Rejected: S-NSSAI不在签约数据中<br/>或TA不支持
    Allowed --> Requested: 移动性注册更新<br/>或新切片请求
    Rejected --> Requested: UE更换切片请求
    Allowed --> Configured: 注销/PLMN变更

3. 完整信令流程拆解

3.1 注册+AMF重选+切片选择时序图

以下流程基于 TS 23.502 Section 4.2.2.2 Figure 4.2.2.2.2-1,这是5G系统中涉及网元最多的注册流程之一:

sequenceDiagram
    participant UE
    participant RAN as (R)AN<br/>gNB
    participant IAMF as Initial AMF
    participant NSSF as NSSF
    participant UDM
    participant NRF
    participant TAMF as Target AMF

    Note over UE,TAMF: 阶段一:初始注册与切片查询

    UE->>RAN: 1. AN Message<br/>AN Parameters: Requested NSSAI, SUPI/5G-GUTI<br/>NAS: Registration Request<br/>(Registration type, Requested NSSAI, 5G-GUTI)

    RAN->>IAMF: 2. NGAP Initial UE Message<br/>Routing ID从5G-S-TMSI解析<br/>携带完整NAS容器

    Note over IAMF: Step 3: Initial AMF判断<br/>检查Requested NSSAI<br/>本AMF是否支持?

    IAMF->>UDM: 4. Nudm_SDM_Get (Supi)<br/>获取Subscription Data<br/>含Subscribed S-NSSAIs

    UDM-->>IAMF: 4a. Subscribed S-NSSAIs<br/>Default S-NSSAI指示

    Note over IAMF: Step 5: Initial AMF发现<br/>自身不支持UE请求的切片<br/>触发NSSF查询

    IAMF->>NSSF: 6. Nnssf_NSSelection_Get<br/>(home-plmn-id, target-plmn-id,<br/>s-nssai-list=Requested NSSAI,<br/>tai=当前TA, nf-type=AMF,<br/>slice-info-request-for-registration)

    Note over NSSF: Step 7: NSSF执行切片选择<br/>a) 匹配Subscribed S-NSSAI<br/>b) 确定Allowed NSSAI<br/>c) 选择NSI Instance<br/>d) 确定Target AMF Set

    NSSF-->>IAMF: 8. NssaiSelectionInfo<br/>{Allowed NSSAI,<br/>Configured NSSAI mapping,<br/>Target AMF Set ID,<br/>NSI Information List,<br/>Rejected NSSAI in PLMN/TA}

    Note over UE,TAMF: 阶段二:AMF重选与重路由

    alt Target AMF在不同AMF Set
        IAMF->>RAN: 9. NGAP Reroute NAS Request<br/>携带: 原始NAS Registration Request,<br/>Target AMF Set ID,<br/>Allowed NSSAI

        RAN->>TAMF: 10. NGAP Initial UE Message<br/>路由到Target AMF Set中的AMF
    else Target AMF在同一AMF Set
        IAMF->>NRF: 9a. Nnrf_NFDiscovery_Request<br/>(target-amf-set-id, s-nssai)
        NRF-->>IAMF: Candidate AMF List
        IAMF->>TAMF: 9b. Namf_Communication<br/>_N1MessageNotify<br/>转发NAS Registration Request
    end

    Note over UE,TAMF: 阶段三:Target AMF完成注册

    TAMF->>UE: 11. Authentication/Security<br/>标准认证流程
    UE-->>TAMF: 认证响应

    TAMF->>UDM: 12. Nudm_UECM_Registration<br/>注册UE上下文
    TAMF->>UDM: 13. Nudm_SDM_Get<br/>获取完整签约数据

    TAMF-->>UE: 14. Registration Accept<br/>Allowed NSSAI<br/>Configured NSSAI (如需更新)<br/>5G-GUTI

3.2 逐步信令解析

Step 1-2:UE到初始AMF的注册请求

UE在AN Parameters中携带 Requested NSSAI,RAN根据5G-S-TMSI中的AMF Pointer选择Initial AMF。关键IE如下:

IE名称 所在消息 长度 说明
Requested NSSAI NAS Registration Request 可变(每S-NSSAI 1-4字节) UE希望接入的切片列表,最多8个S-NSSAI
5G-GUTI NAS Registration Request 40 bits 含AMF Set ID + AMF Pointer
Registration Type NAS Registration Request 4 bits 初始注册=001,移动性更新=010
Mapping Of Requested NSSAI NAS Registration Request 可变 HPLMN S-NSSAI到VPLMN S-NSSAI的映射(漫游场景)

设计意图:UE不在AN层携带全部NSSAI信息(受限于RRC信令长度),只携带Requested NSSAI,让核心网来做最终的切片仲裁。这是一种"粗粒度请求+精细化仲裁"的设计模式。

Step 3-5:Initial AMF的决策逻辑

Initial AMF收到Registration Request后,执行以下决策树:

flowchart TD
    A[收到Registration Request] --> B{AMF本地支持<br/>Requested NSSAI中<br/>的所有S-NSSAI?}
    B -->|是| C[直接处理注册<br/>无需NSSF]
    B -->|否| D{Requested NSSAI<br/>是否为空?}
    D -->|空| E{UE是否有<br/>Default S-NSSAI?}
    E -->|是| F[使用Default S-NSSAI<br/>作为Allowed NSSAI]
    E -->|否| G[查询NSSF获取<br/>Configured NSSAI]
    D -->|非空| H[查询NSSF执行<br/>切片选择]
    H --> I{NSSF返回<br/>Target AMF Set?}
    I -->|是,与本AMF同Set| J[无需重路由<br/>本地处理]
    I -->|是,与本AMF不同Set| K[触发NGAP<br/>RerouteNASRequest]
    I -->|否| L[按NSSF返回的<br/>Allowed NSSAI处理]
    G --> M[NSSF返回<br/>Configured NSSAI]
    M --> N[UE Configuration Update<br/>下发Configured NSSAI]

关键判断点:AMF是否需要调用NSSF,取决于以下条件(TS 23.502 Section 4.2.2.2.1): 1. UE提供了Requested NSSAI,但AMF不能确定Allowed NSSAI 2. AMF需要确定Target AMF或AMF Set 3. 漫游场景下需要HPLMN到VPLMN的S-NSSAI映射

Step 6-8:Nnssf_NSSelection_Get服务调用

这是整个流程的核心交互。AMF通过SBI调用NSSF,请求参数和响应如下:

请求参数(TS 29.531 Section 6.1.3.3.1):

参数 类型 必选 说明
home-plmn-id PlmnId 条件必选 HPLMN标识,漫游时必选
target-plmn-id PlmnId 条件必选 目标PLMN标识
s-nssai-list array(Snssai) 否 Requested NSSAI列表
tai Tai 是 当前跟踪区标识
nf-type NFType 否 请求方NF类型(AMF)
nf-id string 否 请求方NF实例ID
slice-info-request-for-registration SliceInfoForRegistration 条件必选 注册场景专用参数
roaming-indication RoamingIndication 否 漫游指示
mapped-snssai-list array(Snssai) 否 HPLMN映射的S-NSSAI列表

响应参数(200 OK,NssaiSelectionInfo):

参数 类型 说明
allowedNssai array(Snssai) 允许的S-NSSAI列表
configuredNssai array(Snssai) 针对当前PLMN配置的NSSAI
targetAmfSet string 目标AMF Set标识
targetAmfServiceSet string 目标AMF Service Set
candidateAmfList array(AmfInfo) 候选AMF列表
nsiInformationList array(NsiInformation) 网络切片实例信息
rejectedNssaiInPlmn array(Snssai) PLMN级别拒绝的S-NSSAI
rejectedNssaiInTa array(Snssai) TA级别拒绝的S-NSSAI
nsiSelectionInfo map NSI选择信息

NsiInformation子结构:

字段 类型 说明
nrfId Uri 服务于该NSI的NRF地址
nsiId string 网络切片实例唯一标识

Step 7:NSSF内部切片选择算法

NSSF执行切片选择时遵循以下逻辑(TS 23.501 Section 5.15.3, TS 23.502 Section 4.2.2.2.1):

  1. S-NSSAI匹配:将Requested NSSAI中的每个S-NSSAI与Subscribed S-NSSAIs比对
  2. TA可用性检查:验证匹配到的S-NSSAI在当前TA中是否可用(基于OAM配置)
  3. NSI实例选择:为每个Allowed S-NSSAI选择具体的NSI Instance
  4. AMF Set确定:根据NSI Instance确定能服务该切片的AMF Set
  5. S-NSSAI映射(漫游):HPLMN S-NSSAI ↔ VPLMN S-NSSAI双向映射
flowchart LR
    subgraph NSSF内部决策
        A[Requested NSSAI] --> B[S-NSSAI匹配<br/>vs Subscribed S-NSSAIs]
        B --> C[TA可用性验证]
        C --> D[NSI Instance选择]
        D --> E[AMF Set确定]
        E --> F[生成NssaiSelectionInfo]
    end

3.3 NSSF切片选择IE结构图

graph TD
    subgraph Nnssf_NSSelection_Get Response
        A[NssaiSelectionInfo] --> B[Allowed NSSAI]
        A --> C[Configured NSSAI]
        A --> D[Target AMF Set]
        A --> E[NSI Information List]
        A --> F[Rejected NSSAI]

        B --> B1["S-NSSAI #1: SST=1, SD=0x010203"]
        B --> B2["S-NSSAI #2: SST=2, SD=null"]

        E --> E1["NSI Info #1"]
        E1 --> E1a["nsiId: NSI-001"]
        E1 --> E1b["nrfId: https://nrf1..."]

        E --> E2["NSI Info #2"]
        E2 --> E2a["nsiId: NSI-002"]
        E2 --> E2b["nrfId: https://nrf2..."]

        F --> F1["Rejected in PLMN: SST=3"]
        F --> F2["Rejected in TA: SST=4"]
    end

3.4 AMF重选:两条路径的博弈

当NSSF返回Target AMF Set后,Initial AMF面临两种重选路径:

对比维度 路径A:NGAP RerouteNASRequest 路径B:Namf_Communication转发
适用条件 Target AMF在不同AMF Set Target AMF在同一AMF Set
路由方式 通过RAN重路由 AMF间直接SBI通信
信令开销 需RAN中转,增加N2接口消息 纯核心网内通信,无N2开销
延迟 较高(RAN中转一次) 较低(直连)
NGAP消息 Reroute NAS Request(Step 9) 不需要
TS参考 TS 38.413 Section 8.3 TS 29.518 Namf_Communication
安全上下文 不传递,Target AMF重新建立 可传递已有安全上下文

设计意图:两种路径的选择反映了5G架构中 "AMF Set"概念的核心价值——同一Set内的AMF共享GUAMI池和上下文,可以低延迟互转跨Set则必须通过RAN重新路由,确保RAN的NGAP连接正确指向最终服务AMF。

NGAP RerouteNASRequest消息结构

IE 类型 说明
AMF UNGAP ID Integer Initial AMF分配的UE NGAP标识
Reroute NAS Request Transfer OCTET STRING 核心容器,含以下子IE
→ Target AMF Set ID BIT STRING(10 bits) 目标AMF Set
→ → Allowed NSSAI OCTET STRING NSSF确定的Allowed NSSAI
→ → NGAP Cause ENUM 重路由原因值
→ → Reroute NAS Request OCTET STRING 原始NAS Registration Request

RAN收到RerouteNASRequest后,根据Target AMF Set ID选择Set内的一个AMF,通过新的NGAP Initial UE Message将原始NAS消息转发到Target AMF。

4. NSSAI映射:HPLMN与VPLMN的双向博弈

在漫游场景中,S-NSSAI映射是NSSF的一项关键功能。TS 23.501 Section 5.15.8 定义了映射规则:

场景 映射方向 执行方
LBO(Local Breakout) HPLMN S-NSSAI → VPLMN S-NSSAI VPLMN NSSF
HR-Home Routing 无需映射,使用HPLMN S-NSSAI HPLMN NSSF
HR-Local Breakout 双向映射 两端NSSF协作

映射规则在 Mapping Of NSSAI IE中携带,其结构为:

Mapping Of NSSAI ::= SEQUENCE {
    servingPlmnSnssai  Snssai,   -- 当前服务PLMN的S-NSSAI
    homePlmnSnssai     Snssai    -- 对应的HPLMN S-NSSAI
}

设计意图:SST的标准化值(1-4)是全局统一的,不需要映射。但运营商自定义的SST值(128-255范围)和SD值在不同PLMN间可能有不同含义,因此需要映射表来维护一致性。这确保了漫游场景下切片标识的可互操作性。

5. 实战连接:抓包识别与故障排查

5.1 Wireshark抓包识别

接口 过滤器 关键字段
N1(NAS) nas-5gs.reg.message_type == 0x41 Registration Request中的Requested NSSAI
N2(NGAP) ngap.procedureCode == 93 Reroute NAS Request
SBI(Nnssf) http.request.uri contains "nnssf-nsselection" Nnssf_NSSelection_Get请求
SBI(Nudm) http.request.uri contains "nudm-sdm" 获取Subscribed S-NSSAIs

5.2 常见故障点与排错

故障现象 可能原因 排错方法
UE收到空Allowed NSSAI NSSF未配置该TA的切片支持信息 检查NSSF的TA-Slice映射表(OAM配置)
Registration Reject(#62) UE请求的S-NSSAI均不在Subscribed列表中 对比UDM中Subscription Data的Subscribed S-NSSAIs
AMF重选循环 Initial AMF和Target AMF反复触发Reroute 检查AMF Set配置是否交叉重叠
NSSAI长度超过UE支持 UE仅支持最多8个S-NSSAI 检查Configured NSSAI条目数
漫游映射失败 HPLMN和VPLMN间无S-NSSAI映射关系 检查NSSF的S-NSSAI映射表配置
### 5.4 free5GC开源实现参考

free5GC的NSSF实现(基于TS 29.531)提供了两个核心服务操作:

  1. NSSelectionGet:处理AMF的切片查询请求
  2. NSSelectionAvailabilityForRegistration:专门处理注册场景的切片可用性查询

关键代码路径:free5GC/NSSF/ 目录下,nssf_context.go 管理切片配置,nssf_api_individual_nssai_availability_store.go 处理SBI请求。

6. NSSF切片选择与4G APN选择对比

维度 4G APN选择 5G NSSF切片选择
选择粒度 按APN(数据网络) 按S-NSSAI(切片)+NSI(实例)
选择节点 MME本地决策 NSSF专用网元决策
映射层级 无(APN全局唯一) HPLMN↔VPLMN双向映射
NF发现耦合 无(MME直连S/P-GW) NSI→NRF→NF实例(级联发现)
动态性 静态(签约数据决定) 动态(可基于策略、负载、位置调整)
AMF/MME影响 无MME重选 可能触发AMF重选

7. NSSAI在整个注册流程中的状态流转

sequenceDiagram
    participant UE
    participant AMF as AMF/Initial AMF
    participant NSSF
    participant UDM

    Note over UE: 本地存储:<br/>Configured NSSAI (PLMN-specific)

    UE->>AMF: Registration Request<br/>携带: Requested NSSAI<br/>(从Configured NSSAI中选取)

    AMF->>UDM: Nudm_SDM_Get<br/>获取Subscribed S-NSSAIs

    UDM-->>AMF: Subscribed S-NSSAIs<br/>含Default S-NSSAI指示

    AMF->>NSSF: Nnssf_NSSelection_Get<br/>Requested NSSAI + TA + Subscribed

    Note over NSSF: 交集运算:<br/>Requested ∩ Subscribed ∩ TA-Supported

    NSSF-->>AMF: Allowed NSSAI<br/>+ Rejected NSSAI<br/>+ Target AMF Set

    AMF-->>UE: Registration Accept<br/>Allowed NSSAI<br/>Configured NSSAI (更新)

    Note over UE: 更新本地存储:<br/>Allowed NSSAI (当前RA有效)<br/>Configured NSSAI (PLMN有效)

8. 特殊场景处理

8.1 Requested NSSAI为空

当UE首次附着或Configured NSSAI尚未建立时,UE可能不携带Requested NSSAI。此时: - AMF检查UE的Subscribed S-NSSAIs中的Default S-NSSAI - 如果存在Default S-NSSAI,AMF将其作为Allowed NSSAI - 如果不存在,AMF查询NSSF获取Configured NSSAI,再通过UE Configuration Update下发

8.2 Default Configured NSSAI

TS 23.501 Section 5.15.5.1定义了Default Configured NSSAI概念: - 当UE在HPLMN中没有任何Configured NSSAI时,网络使用预定义的标准SST值(1=eMBB)作为默认配置 - UE在Registration Request中携带 Default Configured NSSAI Indication 标志 - AMF识别此标志后,为UE分配基本的eMBB切片

8.3 AMF Set内重选

当Target AMF与Initial AMF属于同一AMF Set时: - Initial AMF通过NRF发现同一Set内的目标AMF - 使用Namf_Communication_N1MessageNotify转发NAS消息 - 无需RAN参与,N2连接由Initial AMF保持到转发完成

9. 常见问题

Q1: NSSF在什么条件下被跳过?

A: 当AMF本地就能确定Allowed NSSAI时(即Requested NSSAI中的所有S-NSSAI都在AMF支持列表内且AMF无需重选),AMF可以跳过NSSF查询,直接确定Allowed NSSAI。这通常发生在单切片部署或AMF配置了全局切片信息的场景。具体条件见TS 23.502 Section 4.2.2.2.1 Step 4a。

Q2: NGAP RerouteNASRequest和Namf_Communication转发能否混用?

A: 不能。选择标准严格取决于Target AMF是否与Initial AMF属于同一AMF Set。跨Set必须走NGAP Reroute,因为RAN的NGAP连接必须指向最终服务AMF;同Set内走SBI直转即可,因为同Set AMF共享GUAMI,RAN侧连接无需变更。

Q3: 一个UE最多能同时接入多少个切片?

A: TS 23.501规定Allowed NSSAI最多包含8个S-NSSAI。但实际部署中,运营商通常限制在3-4个,因为每个切片对应独立的PDU Session,过多的并发切片会增加SMF负载和信令开销。

Q4: NSSF如何处理S-NSSAI冲突(HPLMN和VPLMN的SST值含义不同)?

A: NSSF维护HPLMN↔VPLMN的S-NSSAI映射表(TS 23.501 Section 5.15.8.2)。标准SST值(1-4)全局统一无需映射;运营商自定义值(SST 128-255 + SD)通过映射表转换。映射关系在NSSF的OAM配置中预置,漫游时由VPLMN NSSF执行转换。

Q5: AMF Set的划分原则是什么?

A: AMF Set是一组共享GUAMI范围和切片支持能力的AMF实例(TS 23.501 Section 5.15.5.6)。划分原则包括:地理位置(同一TAI List)、切片支持能力(同一Set内的AMF支持相同的S-NSSAI集合)、容量规划(Set内AMF数量根据用户密度调整)。AMF Set ID为10-bit字段,取值范围0-1023。

10. 参考来源

  1. 3GPP TS 23.502 V18.10.0 — Section 4.2.2.2 Registration with AMF re-allocation and network slice selection
  2. 3GPP TS 23.501 V18.9.0 — Section 5.15 Network slicing, Section 5.15.5 NSSAI handling
  3. 3GPP TS 29.531 V18.9.0 — Nnssf_NSSelection Service API
  4. free5GC NSSF Introduction — 开源5GC中NSSF功能的实现分析
  5. 3GPP TS 38.413 V18.6.0 — Section 8.3 NGAP Reroute NAS Request

本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护,聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。

[!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 等场景全覆盖。

51学通信知识星球海报-扫码加入