在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重路由三个关键博弈点。
每个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/>区分多实例"]
在注册流程中,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 |
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变更
以下流程基于 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
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,让核心网来做最终的切片仲裁。这是一种"粗粒度请求+精细化仲裁"的设计模式。
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映射
这是整个流程的核心交互。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 | 网络切片实例唯一标识 |
NSSF执行切片选择时遵循以下逻辑(TS 23.501 Section 5.15.3, TS 23.502 Section 4.2.2.2.1):
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
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
当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。
| 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。
在漫游场景中,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间可能有不同含义,因此需要映射表来维护一致性。这确保了漫游场景下切片标识的可互操作性。
| 接口 | 过滤器 | 关键字段 |
|---|---|---|
| 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 |
| 故障现象 | 可能原因 | 排错方法 |
|---|---|---|
| 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)提供了两个核心服务操作:
关键代码路径:free5GC/NSSF/ 目录下,nssf_context.go 管理切片配置,nssf_api_individual_nssai_availability_store.go 处理SBI请求。
| 维度 | 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重选 |
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有效)
当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下发
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切片
当Target AMF与Initial AMF属于同一AMF Set时: - Initial AMF通过NRF发现同一Set内的目标AMF - 使用Namf_Communication_N1MessageNotify转发NAS消息 - 无需RAN参与,N2连接由Initial AMF保持到转发完成
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。
本文由「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 等场景全覆盖。
