OmniHSS 架构概述
目录
系统概述
OmniHSS 基于 Elixir 和 Erlang/OTP 平台构建,提供一个高度并发、容错的系统,旨在处理电信工作负载。该架构遵循分层方法,具有明确的关注点分离。
组件架构
核心组件
Diameter 应用处理器
每个 Diameter 应用(S6a、Cx、Sh、S13、Gx、Rx)作为一个 DiameterEx 处理器模块实现,具有以下功能:
- 向 DiameterEx 注册 - 订阅特定的 Diameter 应用 ID
- 验证请求 - 提取 AVP,验证订阅者状态
- 处理业务逻辑 - 调用适当的业务逻辑模块
- 构建响应 - 使用 AVP 构建 Diameter 答复消息
- 处理错误 - 返回适当的 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 架构
控制面板架构
部署架构
单节点部署
多站点 HA 部署(逻辑复制)
对于跨地理站点的高可用性部署,OmniHSS 使用 PostgreSQL 双向逻辑复制。每个站点都有独立的读/写数据库。
主要特征:
- 两个站点均可读/写:本地写入是即时的,永远不会被远程站点阻塞
- 异步复制:更改通过 WAL 流式传输 — 复制不会导致写延迟惩罚
- 分区容忍:如果站点间链接中断,两个站点均继续运行。WAL 在本地排队,并在恢复时赶上
- 无法决策:不需要最低节点数。无论一个站点还是多个站点,工作方式相同
- UUID 主键:全球唯一 ID 消除站点之间的冲突
有关详细配置和操作,请参见 数据库复制。
流程示例:身份验证
此示例显示身份验证请求的完整流程:
关键架构原则
1. 容错性
- Erlang/OTP 监督树自动重启失败的进程
- 隔离的 Diameter 处理器防止级联故障
- 数据库连接池具有自动重连功能
2. 并发性
- 每个 Diameter 请求在其自己的进程中处理
- 请求处理器之间没有共享状态
- 数据库连接池用于并行查询
3. 模块化
- 每个 Diameter 应用在单独的模块中
- 接口、业务逻辑和数据层之间有明确的分离
- 可插拔的身份验证算法
4. 性能
- 优化的数据库查询,选择性预加载
- 每种过程类型的最小数据传输
- 连接池和保持活动
5. 可观察性
- 通过控���面板进行实时监控
- 应用程序中的结构化日志记录
- Diameter 对等体状态跟踪
- 带时间戳的订阅者状态跟踪