OmniNSSF
OmniNSSF 实现了 网络切片选择功能 (NSSF) 的 5G 核心。NSSF 是网络切片决策的权威:它告诉 AMF 哪些切片 UE 被允许使用,切片特定的 NF 发现应指向哪里(网络切片实例的目标 NRF),以及哪个 AMF 集可以服务于给定的切片。它还收集并授权 AMF 报告的每个跟踪区域切片可用性。
OmniNSSF 暴露了两个 5G 基于服务的接口 (SBI) 服务 - Nnssf_NSSelection (nnssf-nsselection/v2),由 AMF 在 UE 注册和 PDU 会话建立时查询,以将请求的 / 订阅的 S-NSSAI 解析为允许的 NSSAI、NSI 信息(目标 NRF)、目标 AMF 集,以及(对于漫游 UE)配置的 NSSAI 映射;和 Nnssf_NSSAIAvailability (nnssf-nssaiavailability/v1),接收 AMF 推送的每个跟踪区域标识 (TAI) S-NSSAI 可用性更新,并管理可用性变化的订阅/通知。切片拓扑和每个 AMF 的可用性存储在内存中,这些存储在重启后从配置��实时 AMF 报告中重建。
文档
- 操作指南 - 3GPP 角色、SBI 端点,以及关键的切片选择和 NSSAI 可用性程序及其序列图。
- 配置参考 - 完整的运行时配置参考、切片拓扑参数表、管理/OAM API 和日志记录。
- 指标 - 用于切片选择、可用性更新、NRF 注册和 BEAM VM 健康的 Prometheus 指标,以及示例 PromQL。
- 故障排除 - 常见问题及其解决方案。
架构概述
功能概述
- 注册和 PDU 会话的切片选择 - 将请求的 / 订阅的 S-NSSAI 解析为 NSI 信息、允许的 NSSAI、目标 AMF 集和配置的 NSSAI。
- NSI 到 NRF 映射 - 将切片特定的 NF 发现指向每个切片的正确 NRF。
- 每个 PLMN 的允许 NSSAI,具有主 PLMN 回退。
- TAI 感知的可用性过滤 - 允许的 NSSAI 和切片选择尊重 AMF 报告的每个 TAI 可用性;当没有可用性数据时为宽松。
- NSSAI 可用性管理 - PUT/PATCH/DELETE 每个 AMF 的可用性,支持 JSON Patch (RFC 6902)。
- 可用性订阅和通知 - POST/PATCH/DELETE 订阅,变化通知在请求路径之外交付,并有限重试。
- 可选的动态 NRF 发现 - 启用时,NSSF 在运行时通过 Nnrf_NFDiscovery 从根 NRF 解析切片服务的 NRF,当发现没有结果时回退到静态配置的
nsi_list。默认情况下禁用(仅静态nsi_list)。 - 支持特性协商 - 广告 NssaiAvailability 特性位并返回协商的交集。
- NRF 注册和心跳 - 启动时自动注册并定期发送心跳;同时广告
nnssf-nsselection(v2) 和nnssf-nssaiavailability(v1)。 - 运行时 OAM - 检查和调整切片拓扑、NRF URI、容量/优先级和日志级别,无需重启。
- 结构化 JSON 日志记录 和 Prometheus 指标。
快速开始
OmniNSSF 通过在启动时读取的操作系统环境变量进行配置。主要的运行时配置是:
config :omnissf,
sbi_scheme: System.get_env("SBI_SCHEME", "http"),
sbi_addr: System.get_env("SBI_ADDR", "127.0.0.14"),
sbi_port: String.to_integer(System.get_env("SBI_PORT", "7777")),
nrf_uri: System.get_env("NRF_URI", "http://127.0.0.1:7777"),
mcc: System.get_env("MCC", "999"),
mnc: System.get_env("MNC", "70"),
prometheus_metrics_port: String.to_integer(System.get_env("PROMETHEUS_PORT", "9568")),
heartbeat_interval: String.to_integer(System.get_env("HEARTBEAT_INTERVAL", "10000"))
切片拓扑(NSI 列表、允许的 NSSAI、AMF 集映射、配置的 NSSAI)通过结构化应用程序配置提供。完整的参数参考,包括切片拓扑表和管理/OAM API,详见 配置参考。