跳到主要内容

OmniHSS 架构概述

← 返回操作指南


目录​


系统概述​

OmniHSS 基于 Elixir 和 Erlang/OTP 平台构建,提供一个高度并发、容错的系统,旨在处理电信工作负载。该架构遵循分层方法,具有明确的关注点分离。


组件架构​

核心组件​

Diameter 应用处理器​

每个 Diameter 应用(S6a, Cx, Sh, S13, Gx, Rx)都实现为一个 DiameterEx 处理器模块,具有以下功能:

  1. 向 DiameterEx 注册 - 订阅特定的 Diameter 应用 ID
  2. 验证请求 - 提取 AVP,验证订阅者状态
  3. 处理业务逻辑 - 调用适当的业务逻辑模块
  4. 构建响应 - 使用 AVP 构建 Diameter 答复消息
  5. 处理错误 - 返回适当的 Diameter 结果代码

Diameter 栈​

Diameter 服务配置​

OmniHSS 配置一个单一的 Diameter 服���,支持多个应用:

对等连接管理​

Diameter 消息流​


应用层​

S6a 接口 (LTE/EPC)​

处理 LTE 网络的身份验证和移动管理。

Cx 接口 (IMS)​

处理 IMS 注册和身份��证。

Sh 接口 (IMS 配置数据)​

为 IMS 应用服务器提供访问订阅者配置数据的能力。

Gx 接口 (策略控制)​

管理数据会话的策略和计费控制。有关详细信息,请参见 PCRF 文档。

Rx 接口 (IMS 媒体)​

控制 IMS 媒体策略和 VoLTE 的专用承载。有关详细信息,请参见 PCRF 文档。

S13 接口 (EIR)​

根据设备身份规则验证设备 IMEI。有关详细信息,请参见 EIR 文档。


数据层​

数据库后端​

OmniHSS 使用 PostgreSQL 作为其数据库后端,并使用 Ecto 作为其数据库抽象层。所有表使用 UUID 主键,以便在各个站点之间进行全球唯一标识。

对于多站点部署,OmniHSS 使用 PostgreSQL 的双向逻辑复制。每个站点作为独立的读/写主数据库运行,站点之间使用异步 WAL 基于的复制。

有关多站点复制配置和操作,请参见 数据库复制。

数据库架构概述​

Ecto 仓库模式​

优化查询策略​

每个 Diameter 过程使用优化查询,仅预加载必要的关联:


外部接口​

API 架构​

控制面板架构​


部署架构​

单节点部署​

多站点高可用部署(逻辑复制)​

对于跨地理站点的高可用部署,OmniHSS 使用 PostgreSQL 双向逻辑复制。每个站点都有一个独立的读/写数据库。

关键特性:

  • 两个站点均可读/写:本地写入即时,永不被远程站点阻塞
  • 异步复制:更改通过 WAL 流式传输。复制不会增加写延迟惩罚
  • 分区容忍:如果站点间链接断开,两个站点继续运行。WAL 本地排队并在恢复时赶上
  • 无法 quorum:不需要最小节点计数。一个站点或多个站点均可正常工作
  • UUID 主键:全球唯一 ID 消除站点之间的冲突

有关详细配置和操作,请参见 数据库复制。


流程示例:身份验证​

此示例显示身份验证请求的完整流程:


关键架构原则​

1. 容错性​

  • Erlang/OTP 监控树自动重启失败的进程
  • 隔离的 Diameter 处理器防止级联故障
  • 数据库连接池具有自动重连功能

2. 并发性​

  • 每个 Diameter 请求在其自己的进程中处理
  • 请求处理器之间没有共享状态
  • 数据库连接池用于并行查询

3. 模块化​

  • 每个 Diameter 应用在单独的模块中
  • 接口、业务逻辑和数据层之间有明确的分离
  • 可插拔的认证算法

4. 性能​

  • 优化的数据库查询,选择性预加载
  • 每种过程类型的最小数据传输
  • 连接池和保持活动

5. 可观察性​

  • 通过控制面���进行实时监控
  • 应用程序中结构化日志记录
  • Diameter 对等体状态跟踪
  • 带时间戳的订阅者状态跟踪

← 返回操作指南 | 下一步:配置 →