OmniSGW 操作指南
OmniSGW - 服务网关 (SGW)
由 Omnitouch 网络服务提供
目录
概述
OmniSGW 是一个高性能的服务网关 (SGW) 实现,适用于 3GPP LTE 演进分组核心 (EPC) 网络,由 Omnitouch 网络服务开发。 它管理用户设备 (UE) 的移动性和承载管理功能,包括:
- 会话管理 - 创建、修改和终止 UE (用户设备) 数据会话
- 移动协调 - 处理 eNodeB 之间的切换及数据转发
- 承载管理 - 为不同的 QoS 需求创建和修改专用承载
- 计费信息 - 跟踪会话事件以进行离线计费
- 用户面协调 - 控制 SGW-U (用户面) 进行数据包转发
SGW-C 的功能
- 接受来自 MME 的会话请求 通过 S11 接口 (GTP-C)
- 与 PGW-C 协调 通过 S5/S8 接口 (GTP-C) 进行 PDN 连接
- 管理承载生命周期 包括创建、修改和删除
- 在 SGW-U 中编程转发规则 通过 Sxa 接口 (PFCP)
- 通过管理 eNodeB 之间的切换来处理 UE 移动性
- 为挂起会话提供下行数据分页
- 跟踪计费信息 以供离线计费系统使用
架构
组件概述
进程架构
SGW-C 基于 Elixir/OTP ��建,并使用监督进程架构:
- 应用监督者 - 管理所有组件的顶层监督者
- 协议代理 - 处理进出协议消息 (S11, S5/S8, Sxa)
- 会话进程 - 每个活动 UE 会话一个 GenServer
- 注册表 - 跟踪分配的资源 (TEID、SEID、计费 ID 等)
- PFCP 节点管理器 - 维护与 SGW-U 对等体的 PFCP 关联
每个组件都受到监督,并将在故障时自动重启,以确保系统的可靠性。
可以通过 Web UI 应用页面监控实时系统健康指标:

网络接口
SGW-C 实现了三个主要的 3GPP 接口:
S11 接口 (GTP-C v2)
目的: MME 与 SGW-C 之间的控制面信令
协议: 基于 UDP 的 GTP-C 版本 2
关键消息:
- 创建会话请求/响应
- 删除会话请求/响应
- 修改承载请求/响应
- 创建承载请求/响应
- 删除承载请求/响应
- 下行数据通知/确认
配置: 请参见 S11 接口文档
Sxa 接口 (PFCP)
目的: SGW-C 与 SGW-U 之间的控制面信令
协议: 基于 UDP 的 PFCP (数据包转发控制协议)
关键消息:
- 关联设置请求/响应
- 会话建立请求/响应
- 会话修改请求/响应
- 会话删除请求/响应
- 会话报告请求/响应
- 心跳请求/响应
配置: 请参见 PFCP/Sxa 接口文档
S5/S8 接口 (GTP-C v2)
目的: SGW-C 与 PGW-C 之间的控制面信令,用于 PDN 连接
协议: 基于 UDP 的 GTP-C 版本 2
关键消息:
- 创建会话请求/响应
- 删除会话请求/响应
- 修改承载请求/响应
- 创建承载请求/响应
- 删除承载请求/响应
配置: 请参见 S5/S8 接口文档
关键概念
UE 会话
UE 会话表示与网络连接的活动移动设备。每个会话管理:
- IMSI (国际移动用户身份) - 唯一的用户标识符
- GUTI (全球唯一临时标识符) - 来自 MME 的临时 UE 标识符
- MSISDN - 手机号码
- TAI (跟踪区域标识符) - 当前位置区域
- 会话 TEID - S11 和 S5/S8 的隧道端点标识符
- 活动承载 - 关联数据承载的列表
PDN 连接
PDN (数据包数据网络) 连接表示 UE 通过特定 PGW-C 的数据连接。每个会话具有:
- APN (接入点名称) - 标识外部网络
- 计费 ID - 用于 SGW 和 PGW 之间计费的唯一标识符
- TEID (隧道端点 ID) - S5/S8 接口隧道标识符
- SEID (会话端点 ID) - Sxa 接口会话标识符
- 默认承载 - 每个 PDN 连接时创建
- 专用承载 - 满足特定 QoS 需求的额外承载
承载上下文
承载表示具有特定 QoS 特征的流量流:
- 默认承载 - 每个 PDN 连接时创建,用于尽力而为的流量
- 专用承载 - 满足特定服务需求的额外承载(语音、视频等)
- EBI (EPS 承载 ID) - 每个会话内���个承载的唯一标识符
- QoS 参数 - QCI (QoS 类标识符)、ARP (分配与保留优先级)、比特率 (MBR, GBR)
PFCP 规则
SGW-C 为 SGW-U 编程数据包处理规则:
- PDR (数据包检测规则) - 匹配数据包 (上行/下行)
- FAR (转发动作规则) - 指定转发行为
- QER (QoS 执行规则) - 强制比特率限制
- BAR (缓冲动作规则) - 控制切换期间的数据包缓冲
有关详细信息,请参见 Sxa 接口文档。
移动性与切换
SGW-C 支持 UE 在 eNodeB 之间的移动性:
- 同 MME 切换 - 在同一 MME 内的切换(无 SGW 更改)
- 跨 MME 切换 - 在 MMEs 之间的切换,伴随 SGW 迁移
- 数据转发 - 在切换期间缓冲和转发数据
- 跟踪区域更新 - UE 在区域之间移动时重新注册
入门
先决条件
- Elixir ~1.16
- Erlang/OTP 26+
- 与 MME、SGW-U 和 PGW-C 的网络连接
- 理解 LTE EPC 架构
验证操作
检查日志以确认成功启动:
[info] 启动 OmniSGW...
[info] 在 127.0.0.40:42068 启动指标导出器
[info] 在 127.0.0.10 启动 S11 代理
[info] 在 127.0.0.15 启动 S5/S8 代理
[info] 在 127.0.0.20 启动 Sxa 代理
[info] 启动 PFCP 节点管理器
[info] OmniSGW 成功启动
访问指标在 http://127.0.0.40:42068/metrics (配置地址)。
配置
所有运行时配置都在 config/runtime.exs 中定义。配置结构分为几个部分:
配置概述
快速配置参考
| 部分 | 目的 | 文档 |
|---|---|---|
| metrics | Prometheus 指标导出器 | 监控指南 |
| s11 | GTP-C 接口到 MME | S11 配置 |
| s5s8 | GTP-C 接口到 PGW-C | S5/S8 配置 |
| sxa | PFCP 接口到 SGW-U | Sxa 配置 |
请参见 完整配置指南 以获取详细信息。
Web UI - 实时操作仪表板
OmniSGW 包含一个内置的 Web UI 用于实时监控和操作,提供系统状态的即时可见性,无需命令行工具或指标查询。
访问 Web UI
http://<omnisgw-ip>:<web-port>/
可用页面:
| 页面 | URL | 目的 | 刷新率 |
|---|---|---|---|
| UE 会话 | /ue_sessions | 查看所有活动 UE 会话和承载 | 2 秒 |
| PFCP 会话 | /pfcp_sessions | 查看与 SGW-U 的 PFCP 会话 | 2 秒 |
| SGW-U 状态 | /sgwu_status | 监控 PFCP 对等体关联 | 2 秒 |
| 日志 | /logs | 实时日志流 | 实时 |
关键特性
实时更新:
- 所有页面自动刷新(无需手动重新加载)
- 来自 OmniSGW 进程的实时数据流
- 颜色编码状态指示器(绿色/红色)
搜索与过滤:
- 按 IMSI、GUTI、电话号码搜索会话
- 无需页面重新加载即可即时过滤
可扩展细节:
- 点击任意行查看完整会话细节
- 检查所有活动承载和 QoS 参数
- 查看对等体配置和能力
无需身份验证(内部使用):
- 从管理网络直接访问
- 设计用于 NOC/运营团队使用
- 仅绑定到管理 IP 以确保安全
操作工作流程
会话故障排除:
1. 用户报告连接问题
2. 打开 UE 会话页面
3. 按 IMSI 或电话号码搜索
4. 验证会话是否��在并具有正确的:
- 跟踪区域
- 活动承载及其 QoS
- 隧道端点已建立
- 正确的 PGW-C 关联
5. 如果未找到会话 → 检查日志以获取拒绝原因
系统健康检查:
1. 打开 SGW-U 状态页面 → 验证所有 SGW-U 对等体 "关联"
2. 打开 UE 会话 → 检查活动会话数量与容量
3. 监控 APN 之间的承载分布
容量监控:
- 浏览 UE 会话数量
- 与许可/预期容量进行比较
- 确定峰值使用时间
- 监控按服务类型的分布
Web UI 与指标
使用 Web UI 进行:
- 单个会话和承载细节
- 实时对等体状态
- 快速健康检查
- 故障排除特定用户
- 验证配置
使用 Prometheus 指标进行:
- 历史趋势
- 报警和通知
- 容量规划图
- 性能分析
- 长期监控
最佳实践: 同时使用两者 - Web UI 用于即时操作,Prometheus 用于趋势和警报。
监控与指标
除了 Web UI,OmniSGW 还暴露了与 Prometheus 兼容的指标以供监控:
可用指标
-
会话指标
teid_registry_count- 活动 S11/S5S8 TEIDseid_registry_count- 活动 PFCP 会话charging_id_registry_count- 活动计费 IDactive_ue_sessions- 总活动 UE 会话active_bearers- 所有会话中的总活动承载
-
消息指标
s11_inbound_messages_total- 在 S11 上接收到的 GTP-C 消息s5s8_inbound_messages_total- 在 S5/S8 上接收到的 GTP-C 消息sxa_inbound_messages_total- 接收到的 PFCP 消息- 消息处理持续时间分布
-
错误指标
s11_inbound_errors_total- S11 协议错误s5s8_inbound_errors_total- S5/S8 协议错误sxa_inbound_errors_total- Sxa 协议错误
访问指标
指标通过 HTTP 在配置的端点暴露:
curl http://127.0.0.40:42068/metrics
请参见 监控与指标指南 以获取仪表板设置和警报信息。
详细文档
本节提供 OmniSGW 文档的全面概述。文档按主题和用例组织。
文档结构
OmniSGW 文档
├── OPERATIONS.md (本指南)
│
└── docs/
├── 配置与设置
│ ├── configuration.md 完整的 runtime.exs 参考
│
├── 网络接口
│ ├── sxa-interface.md Sxa/PFCP (SGW-U 通信)
│ ├── s11-interface.md S11 (MME 通信)
│ └── s5s8-interface.md S5/S8 (PGW-C 通信)
│
└── 操作
├── session-management.md UE 会话生命周期
├── bearer-management.md 承载操作
├── cdr-format.md 离线计费记录
└── monitoring.md Prometheus 指标与警报
按主题分类的文档
🚀 入门
| 文档 | 描述 | 目的 |
|---|---|---|
| OPERATIONS.md | 主要操作指南(本文件) | 概述和快速入门 |
⚙️ 配置
| 文档 | 描述 |
|---|---|
| configuration.md | 完整的 runtime.exs 配置参考 |
🔌 网络接口
| 文档 | 描述 |
|---|---|
| sxa-interface.md | PFCP/Sxa 接口到 SGW-U |
| s11-interface.md | GTP-C S11 接口到 MME |
| s5s8-interface.md | GTP-C S5/S8 接口到 PGW-C |
📊 操作与监控
| 文档 | 描述 |
|---|---|
| session-management.md | UE 会话生命周期和操作 |
| bearer-management.md | 承载创建、修改、删除 |
| cdr-format.md | 离线计费数据记录格式 |
| monitoring.md | Prometheus 指标、Grafana 仪表板、警报 |
阅读路径
对于网络运营商
- OPERATIONS.md - 概述(本文件)
- configuration.md - 设置
- monitoring.md - 监控
- session-management.md - 日常操作
对于网络工程师
- OPERATIONS.md - 架构概述(本文件)
- sxa-interface.md - 用户面控制
- s11-interface.md - 移动管理
- s5s8-interface.md - PDN 连接
- session-management.md - 会话生命周期
- bearer-management.md - 承载操作
对于配置与部署
- configuration.md - 完整参考
- monitoring.md - 设置监控
其他资源
3GPP 规范
| 规范 | 标题 |
|---|---|
| TS 29.274 | GTP-C v2 (S11 和 S5/S8 接口) |
| TS 29.244 | PFCP (Sxa 接口) |
| TS 32.251 | 分组交换域计费 |
| TS 32.298 | CDR 编码 |
| TS 23.401 | EPC 架构 |