5G核心网学习平台
NSSF 实践篇 #06

5GC实践篇之NSSF篇第1篇:NSSF注册

《5G核心网原理与实践》实践篇 · NSSF 网元功能

5GC实践篇之NSSF篇第1篇:NSSF注册

作者:爱卫生


一、测试背景与用例简介

网络切片是5G核心网最重要的特性之一,而NSSF(Network Slice Selection Function,网络切片选择功能)是实现网络切片选择的关键网元。在5GC服务化架构(SBA)中,所有网络功能(NF)都必须向NRF(Network Repository Function)进行服务注册,才能被其他NF发现和调用。NSSF也不例外——它在部署完成后,需要自动向NRF发起服务注册,将自身的NF Profile、支持的服务列表等信息注册到NRF中。

本文将详细讲解NSSF向NRF发起服务注册的完整流程,包括NSSF的部署、注册请求的发送、NRF的处理与响应等环节。通过本文的学习,读者将深入理解5GC中NF服务注册机制的实现细节。

相关3GPP规范

  • TS 29.510:NF Service Framework(NF服务框架),定义了Nnrf_NFManagement服务接口

  • TS 23.501:5G系统架构,定义了NSSF等NF的功能与接口

  • TS 29.531:NSSF服务接口规范

关键SBI接口

  • Nnrf_NFManagement_NFRegister:NF注册服务操作

二、流程图


flowchart TD

    A[切片管理平台发起切片实例化] --> B[部署NSSF网络功能实例]

    B --> C[检查NSSF实例状态]

    C --> D{所有Pod状态正常}

    D -- 否 --> E[等待Pod就绪或排查故障]

    E --> C

    D -- 是 --> F[NSSF自动触发向NRF注册]

    F --> G[NSSF发送Nnrf_NFManagement_NFRegister PUT请求]

    G --> H[NRF生成并保存NF实例信息]

    H --> I[NRF返回201 Created响应]

    I --> J[注册完成,NSSF可被其他NF发现]


三、测试目的

验证NSSF在部署完成后,能够自动向NRF发起服务注册,完成NF实例信息的登记。具体验证点包括:

  1. NSSF实例部署完成后状态正常,所有Pod运行正常;

  2. NSSF自动向NRF发送Registration Request消息,消息中包含完整的NF Profile信息;

  3. NRF接收并保存NSSF的NF实例信息(NF Type、NF Address、NF Profile等);

  4. NRF通过Registration Response消息确认注册完成,返回心跳时长等信息;

  5. 通过操作维护命令或界面可查询到NSSF的注册信息。


四、前置条件

序号 前置条件
1 5GC核心网基础环境已部署完成,包括NRF等基础网元
2 切片管理平台可用,能够发起切片实例化操作
3 NSSF镜像/软件包已准备就绪
4 NRF服务运行正常,可接受NF注册请求
5 网络连通性正常,NSSF与NRF之间的SBI接口可达
6 已建立各接口信令跟踪和用户跟踪

五、测试步骤

步骤1:通过切片管理平台发起切片实例化

在切片管理平台上,选择对应的切片模板,发起切片实例化操作。系统将根据切片模板自动部署NSSF网络功能实例,包括创建相关的Kubernetes Pod、ConfigMap、Service等资源。

操作说明

  • 登录切片管理平台(OSS/MANO)

  • 选择目标切片模板

  • 配置NSSF NF实例参数(如NF Instance ID、SBI地址、支持的切片信息等)

  • 点击"实例化"按钮,触发自动化部署流程

配置NSSF NF的关键参数


{

  "nfInstanceId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",

  "nfType": "NSSF",

  "nfStatus": "REGISTERED",

  "sbi": {

    "scheme": "https",

    "addresses": [

      {

        "ipv4Address": "10.XX.XX.XX",

        "port": 8443

      }

    ]

  },

  "nsiList": [

    {

      "snssai": {

        "sst": 1,

        "sd": "010203"

      },

      "nsiId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"

    }

  ]

}

步骤2:检查NSSF实例化进展情况

在切片管理平台上监控NSSF实例化进度,确认所有组件部署完成。

检查项目

  • 所有Pod状态为Running或Completed

  • ConfigMap和Secret已正确注入

  • Service已创建并分配Cluster IP

  • 健康检查探针(Liveness/Readiness Probe)通过

Kubernetes检查命令示例


# 查看NSSF相关Pod状态

kubectl get pods -n 5gc | grep nssf

# 预期输出示例

# nssf-deployment-xxxxx-xxxxx   1/1     Running   0          2m

步骤3:检查NSSF自动向NRF发起服务注册

NSSF实例部署完成并运行正常后,NSSF将自动触发向NRF的服务注册流程。在NRF上查看NF注册状态,确认NSSF已成功注册。

NRF上的查询结果示例


NF Instance ID: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX

NF Type: NSSF

NF Status: REGISTERED

SBI Address: https://10.XX.XX.XX:8443

Heartbeat Timer: 30s

Register Time: 2026-04-17T10:00:00Z


六、预期结果

结果a:NSSF实例部署完成

NSSF实例部署完成,在切片管理界面查看NSSF状态正常,所有Pod均处于Running状态。

结果b:NSSF自动发送Registration Request

NSSF实例正常运行后,作为服务请求者自动向NRF发送Registration Request消息,请求执行NSSF服务注册。请求消息中包括对应的网络功能实例的完整信息:

Nnrf_NFManagement_NFRegister请求消息示例


PUT /nnrf-nfm/v1/nf-instances/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX HTTP/1.1

Host: 10.XX.XX.XX:8443

Content-Type: application/json

请求Body(NF Profile)


{

  "nfInstanceId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",

  "nfType": "NSSF",

  "nfStatus": "REGISTERED",

  "heartBeatTimer": 30,

  "sbi": {

    "scheme": "https",

    "registeredDomain": "5gc.mncXX.mcc460.3gppnetwork.org",

    "addresses": [

      {

        "ipv4Address": "10.XX.XX.XX",

        "port": 8443,

        "apiPrefix": "/nssf/v1"

      }

    ]

  },

  "nfServices": [

    {

      "serviceInstanceId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",

      "serviceName": "nnssf-nssselection",

      "versions": [

        {

          "apiVersionInUri": "v1",

          "apiFullVersion": "1.0.0"

        }

      ],

      "scheme": "https",

      "nfServiceStatus": "REGISTERED",

      "ipEndPoints": [

        {

          "ipv4Address": "10.XX.XX.XX",

          "port": 8443

        }

      ]

    },

    {

      "serviceInstanceId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",

      "serviceName": "nnssf-nsavailability",

      "versions": [

        {

          "apiVersionInUri": "v1",

          "apiFullVersion": "1.0.0"

        }

      ],

      "scheme": "https",

      "nfServiceStatus": "REGISTERED",

      "ipEndPoints": [

        {

          "ipv4Address": "10.XX.XX.XX",

          "port": 8443

        }

      ]

    }

  ],

  "plmnList": [

    {

      "mcc": "460",

      "mnc": "XX"

    }

  ],

  "nsiList": [

    {

      "snssai": {

        "sst": 1,

        "sd": "010203"

      }

    }

  ]

}

Frame 1:NSSF -> NRF,Nnrf_NFManagement_NFRegister PUT请求,携带完整NF Profile

结果c:NRF生成并保存NF实例信息

NRF收到NSSF的注册请求后,生成并保存部署的网络功能实例的完整信息,包括:

信息字段 说明
NF Type NSSF
NF Instance ID XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
NF Address 10.XX.XX.XX:8443
NF Profile 包含支持的服务、切片信息、PLMN列表等
Heartbeat Timer 30秒

可通过操作维护命令或界面查询网络功能注册信息,确认NSSF已成功注册。

结果d:NRF返回Registration Response

NRF处理完NSSF的注册请求后,通过Registration Response消息通知NSSF服务注册已完成。

Nnrf_NFManagement_NFRegister响应消息示例


HTTP/1.1 201 Created

Location: /nnrf-nfm/v1/nf-instances/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX

Content-Type: application/json

响应Body


{

  "nfInstanceId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",

  "nfType": "NSSF",

  "heartBeatTimer": 30,

  "nfStatus": "REGISTERED",

  "validityTime": "2026-04-18T10:00:00Z"

}

Frame 2:NRF -> NSSF,Nnrf_NFManagement_NFRegister 201 Created响应,确认注册完成

响应消息中包含:

  • 心跳时长(heartBeatTimer):NSSF需要定期发送心跳以维持注册状态,默认30秒

  • NF Profile:NRF确认保存的NF实例信息

  • 有效期(validityTime):注册的有效截止时间


七、信令深度解析

7.1 Nnrf_NFManagement_NFRegister接口概述

根据3GPP TS 29.510规范,Nnrf_NFManagement_NFRegister服务操作用于NF向NRF注册自身的实例信息。该操作使用HTTP PUT方法,URI格式为:


PUT /nnrf-nfm/v1/nf-instances/{nfInstanceId}

其中{nfInstanceId}为NF实例的唯一标识,采用UUID格式。

7.2 NF Profile关键字段解析

NSSF注册时发送的NF Profile包含以下关键信息:

1) nfInstanceId(NF实例标识)

  • 类型:UUID

  • 用途:唯一标识一个NF实例

  • 示例:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX

2) nfType(NF类型)

  • 类型:枚举

  • 用途:标识NF的功能类型

  • 对于NSSF,该值为"NSSF"

3) nfServices(NF服务列表)

  • NSSF注册时需要声明其支持的服务,主要包括:

  • nnssf-nsselection:网络切片选择服务(Nnssf_NSSelection)

  • nnssf-nsavailability:网络切片可用性服务(Nnssf_NSAvailability)

4) sbi(基于服务的接口信息)

  • 包含NSSF的SBI访问地址、端口、协议等信息

  • scheme:通常为"https"

  • addresses:IP地址和端口列表

5) nsiList(网络切片实例列表)

  • 包含NSSF所支持的网络切片实例信息

  • 每个条目包含S-NSSAI(切片标识)和NSI ID(切片实例标识)

6) plmnList(PLMN列表)

  • NSSF所服务的PLMN信息

  • 包含MCC和MNC

7.3 注册流程的时序分析


时间轴          消息方向           消息名称

---------------------------------------------------------

T0            切片管理平台         发起切片实例化

T1            K8s集群             部署NSSF Pod

T2            NSSF Pod            启动,初始化配置

T3            NSSF              --> NRF   PUT /nnrf-nfm/v1/nf-instances/{id}

                                        [NF Profile JSON]

T4            NRF               --> NSSF   201 Created

                                        [Registration Response JSON]

T5            NRF                保存NF实例信息到数据库

T6            NSSF              启动心跳定时器(30s)

7.4 心跳维持机制

NSSF注册成功后,需要定期向NRF发送心跳请求以维持注册状态。心跳机制如下:

  • 心跳间隔:由NRF在注册响应中的heartBeatTimer字段指定,通常为30秒

  • 心跳方式:NSSF发送Nnrf_NFManagement_NFUpdate(HTTP PATCH)请求

  • 心跳超时:如果NRF在3倍心跳时间内未收到心跳,则认为NSSF不可用,将其从NF Repository中移除

  • 心跳内容:PATCH请求中携带nfStatus为"REGISTERED"

7.5 NRF的NF Profile存储机制

NRF收到NSSF的注册请求后,会进行以下处理:

  1. 验证NF Profile:检查NF Profile的完整性和合法性

  2. 生成NF记录:在NRF数据库中创建NF实例记录

  3. 建立服务索引:根据nfServices建立服务名到NF实例的索引

  4. 设置过期时间:根据heartBeatTimer计算注册有效期

  5. 返回注册结果:通过201 Created响应确认注册成功

7.6 HTTP状态码说明

状态码 含义 场景
201 Created 注册成功 新NF实例首次注册
200 OK 更新成功 已注册的NF实例更新Profile
400 Bad Request 请求格式错误 NF Profile格式不合法
403 Forbidden 权限不足 NF无权注册到该NRF
500 Internal Server Error 服务器内部错误 NRF处理异常

八、常见问题与排查

8.1 NSSF注册失败

现象:NSSF部署完成后,在NRF上查询不到NSSF的注册信息。

可能原因及排查步骤

  1. 网络连通性问题

  2. 检查NSSF与NRF之间的网络是否可达

  3. 使用curl命令测试:curl -k https://10.XX.XX.XX:8443/nnrf-nfm/v1/nf-instances

  4. NF Profile格式错误

  5. 检查NSSF的配置文件中NF Profile的JSON格式是否正确

  6. 查看NRF日志中是否有解析错误

  7. NRF服务异常

  8. 检查NRF Pod状态是否正常

  9. 查看NRF日志中是否有异常信息

8.2 NSSF注册后心跳超时

现象:NSSF注册成功后,很快从NRF中消失。

可能原因

  • NSSF负载过高,无法及时发送心跳

  • 网络抖动导致心跳包丢失

  • 心跳定时器配置不合理


九、测试结论

本测试用例验证了NSSF向NRF发起服务注册的完整流程。测试结果表明:

  1. NSSF能够通过切片管理平台成功部署,所有Pod正常运行;

  2. NSSF部署完成后自动向NRF发送Nnrf_NFManagement_NFRegister请求,请求消息中包含完整的NF Profile信息(NF类型、SBI地址、服务列表、切片信息等);

  3. NRF成功接收并保存NSSF的NF实例信息,可通过操作维护命令或界面查询;

  4. NRF通过201 Created响应消息确认注册完成,响应中包含心跳时长和NF Profile等信息;

  5. NSSF注册成功后,其他NF(如AMF)可以通过NRF发现并调用NSSF的切片选择服务。

该测试用例验证了3GPP TS 29.510中定义的NF注册机制在NSSF上的正确实现,是网络切片功能正常运行的基础前提。


数据脱敏声明:本文中所有SUPI、IP地址、NF Instance ID等敏感信息均已做脱敏处理(如SUPI显示为"imsi-460XX00000XXXX",IP显示为"10.XX.XX.XX",Instance ID显示为"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"),不影响技术原理的理解与分析。


关于作者:爱卫生,从事通信教学18年,出版过《5G核心网原理与实践》等4本专业书籍。学5G核心网、IMS,来51学通信就对了!知识星球:200+小时视频、3000+精华文章、1年答疑群。公众号/知识星球:51学通信,微信:gprshome201101

← 返回 NSSF 实践篇