跳到主要内容

OmniPGW 操作指南

OmniPGW - 数据包网关控制平面 (PGW-C)

由 Omnitouch 网络服务提供


目录

  1. 概述
  2. 架构
  3. 网络接口
  4. 关键概念
  5. 入门
  6. 配置
  7. 实时操作监控 (OAM API)
  8. 监控与指标
  9. 详细文档
  10. 其他资源

概述

OmniPGW 是一个高性能的数据包网关控制平面 (PGW-C) 实现,适用于 3GPP LTE 演进包核心 (EPC) 网络,由 Omnitouch 网络服务开发。它管理数据会话的控制平面功能,包括:

  • 会话管理 - 创建、修改和终止 UE (用户设备) 数据会话
  • IP 地址分配 - 从配置的池中为移动设备分配 IP 地址
  • 策略与计费控制 - 与 PCRF 接口进行策略执行和计费
  • 用户平面协调 - 控制 PGW-U (用户平面) 进行数据包转发

PGW-C 的功能

  • 接受来自 SGW-C 的会话请求 通过 S5/S8 接口 (GTP-C)
  • 从配置的子网池中分配 UE IP 地址
  • 通过 Gx 接口 (Diameter) 向 PCRF 请求策略决策
  • 通过 Sxb 接口 (PFCP) 在 PGW-U 中编程转发规则
  • 通过承载上下文和 QoS 规则管理 QoS 执行
  • 跟踪计费信息 供计费系统使用

架构

组件概述

过程架构

PGW-C 基于 Elixir/OTP 构建,并使用监督的过程架构:

  • 应用监督者 - 顶层监督者,管理所有组件
  • 协议代理 - 处理进出协议消息
  • 会话进程 - 每个活动 PDN 连接一个 GenServer
  • 注册表 - 跟踪分配的资源 (IP、TEID、SEID 等)
  • PFCP 节点管理器 - 维护与 PGW-U 对等体的 PFCP 关联

每个组件都受到监督,并将在故障时自动重启,以确保系统的可靠性。


网络接口

PGW-C 实现了三个主要的 3GPP 接口:

S5/S8 接口 (GTP-C v2)

目的: SGW-C 和 PGW-C 之间的控制平面信令

协议: 基于 UDP 的 GTP-C 版本 2

关键消息:

  • 创建会话请求/响应
  • 删除会话请求/响应
  • 创建承载请求/响应
  • 删除承载请求/响应

配置: 请参见 S5/S8 配置

Sxb 接口 (PFCP)

目的: PGW-C 和 PGW-U 之间的控制平面信令

协议: 基于 UDP 的 PFCP (数据包转发控制协议)

关键消息:

  • 关联设置请求/响应
  • 会话建立请求/响应
  • 会话修改请求/响应
  • 会话删除请求/响应
  • 心跳请求/响应

配置: 请参见 PFCP/Sxb 接口文档

Gx 接口 (Diameter)

目的: 策略与计费规则功能 (PCRF) 接口

协议: Diameter (IETF RFC 6733)

关键消息:

  • 信用控制初始请求/应答 (CCR-I/CCA-I)
  • 信用控制终止请求/应答 (CCR-T/CCA-T)

配置: 请参见 Diameter Gx 接口文档


关键概念

PDN 会话

PDN (数据包数据网络) 会话表示 UE 与外部网络 (如互联网) 的数据连接。每个会话具有:

  • UE IP 地址 - 从配置的子网池中分配
  • APN (接入点名称) - 标识外部网络
  • 承载上下文 - 包含 QoS 参数和隧道信息
  • 计费 ID - 用于计费的唯一标识符
  • TEID (隧道端点 ID) - S5/S8 接口隧道标识符
  • SEID (会话端点 ID) - Sxb 接口会话标识符

承载上下文

承载表示具有特定 QoS 特性的流量流:

  • 默认承载 - 每个 PDN 会话创建
  • 专用承载 - 针对特定 QoS 需求的额外承载
  • EBI (EPS 承载 ID) - 每个承载的唯一标识符
  • QoS 参数 - QCI、ARP、比特率 (MBR、GBR)

PFCP 规则

PGW-C 向 PGW-U 编程数据包处理规则:

  • PDR (数据包检测规则) - 匹配数据包 (上行/下行)
  • FAR (转发动作规则) - 指定转发行为
  • QER (QoS 执行规则) - 执行比特率限制
  • BAR (缓冲动作规则) - 控制数据包缓冲

有关详细信息,请参见 PFCP 接口文档

IP 地址分配

UE IP 地址从配置的子网池中分配:

  • 基于 APN 的选择 - 不同的 APN 可以使用不同的子网
  • 动态分配 - 从可用范围中随机选择 IP
  • 静态分配 - 支持 UE 请求的 IP 地址
  • 冲突检测 - 确保唯一的 IP 分配

有关配置,请参见 UE IP 池分配,以及 IPv6 / 双栈 以获取 IPv6 和 IPv4v6 PDN 操作。


入门

先决条件

  • Elixir ~1.16
  • Erlang/OTP 26+
  • 与 SGW-C、PGW-U 和 PCRF 的网络连接
  • 理解 LTE EPC 架构

启动 OmniPGW

  1. config/runtime.exs 中配置运行时设置
  2. 编译应用程序:
    mix deps.get
    mix compile
  3. 启动应用程序:
    mix run --no-halt

验证操作

检查日志以确认成功启动:

[info] 启动 OmniPGW...
[info] 在 127.0.0.42:42069 启动指标导出器
[info] 在 127.0.0.10 启动 S5/S8 代理
[info] 在 127.0.0.20 启动 Sxb 代理
[info] 启动 Gx 代理
[info] 启动 PFCP 节点管理器
[info] OmniPGW 成功启动

访问指标在 http://127.0.0.42:42069/metrics (配置地址)。


配置

所有运行时配置都在 config/runtime.exs 中定义。配置结构分为几个部分:

配置概述

快速配置参考

部分目的文档
metricsPrometheus 指标导出器监控指南
diameterGx 接口到 PCRFDiameter Gx 配置
s5s8GTP-C 接口到 SGW-CS5/S8 配置
sxbPFCP 接口到 PGW-UPFCP 配置
ueUE IP 地址池IP 池配置
pco协议配置选项PCO 配置
CDR离线计费与使用报告CDR 格式

请参阅 完整配置指南 以获取详细信息。


实时操作监控 (OAM API)

OmniPGW 提供一个 OAM REST API 用于实时监控和操作,提供系统状态的即时可见性。根据需要查询这些读取端点 (或在轮询间隔/从脚本中) 以获取实时操作视图 - 无需命令行访问主机或原始指标查询。

访问 OAM API

API 通过 HTTPS/TLS 提供。所有路由都在 /api 前缀下提供。

https://<omnipgw-ip>:8443/

交互式 API 文档 (Swagger UI) 可在以下地址访问:

https://<omnipgw-ip>:8443/api/docs

示例健康检查 (使用 -k 进行自签名实验室证书):

curl -k https://localhost:8443/api/status
{"result":"ok"}

可用端点:

目的端点替代 (旧页面)
深入了解特定订阅者 (IMSI/MSISDN/IP)POST /api/ue_searchUE 搜索
列出/搜索活动 PDN 会话GET /api/sessions[?search=<imsi|msisdn|ip>]PGW 会话
按 IMSI 获取一个会话GET /api/sessions/<imsi>PGW 会话 (详细)
会话历史/审计事件GET /api/session_history[?type=&search=&page=&page_size=]会话历史
网络拓扑概述GET /api/topology网络拓扑
UE IP 地址池利用率GET /api/ip_pools, GET /api/ip_pools/<name>IP 池
UPF / PFCP 对等体状态GET /api/upf, GET /api/upf/<ip>PFCP 会话 / UPF 状态
UPF 选择规则、健康、PCO 配置GET /api/upf_selectionUPF 选择
Diameter (Gx/Gy) 对等体连接性GET /api/diameter[?status=connected|disconnected], GET /api/diameter/<origin-host>Diameter 对等体
每个会话的在线计费 (Gy) 状态GET /api/charging[?search=<imsi>], GET /api/charging/<imsi>Gy 状态
P-CSCF DNS 发现状态GET /api/pcscf_monitorP-CSCF 监控
健康检查GET /api/status-

要获取实时仪表板样式视图,请在间隔内轮询集合端点,例如:

watch -n 2 'curl -sk https://localhost:8443/api/sessions'
watch -n 1 'curl -sk https://localhost:8443/api/diameter?status=disconnected'

注意:以前的 日志 页面 (实时日志流) 和 Gy 模拟器 页面没有 OAM API 等效项。从主机/您的日志聚合器流式传输日志,并使用 GET /api/charging 检查实时 Gy/在线计费状态。

主要功能

按需和轮询数据:

  • 每个端点返回 OmniPGW 进程的当前实时状态
  • 使用 watch/cron/脚本按间隔轮询以获取自动刷新的视图
  • 状态字段 (例如对等体 connected/associated) 在 JSON 中明确返��

搜索与过滤:

  • 通过 IMSI、IP、MSISDN 或 APN 通过 GET /api/sessions?search=... 搜索会话
  • 通过 ?status=connected|disconnected 过滤 Diameter 对等体
  • 通过 ?search=<imsi> 过滤计费状态

完整详细记录:

  • 每个实体端点 (/api/sessions/<imsi>/api/upf/<ip>/api/diameter/<origin-host>/api/charging/<imsi>) 返回完整状态作为 JSON
  • 检查完整会话、对等体配置和能力

访问控制:

  • 通过 HTTPS/TLS 在 8443 端口提供
  • 仅绑定到管理 IP,并前置您的访问控制
  • 旨在用于 NOC/运营团队和自动化使用

操作工作流

会话故障排除 (深入了解):

1. 用户报告连接问题
2. POST /api/ue_search,JSON 主体包含 IMSI、MSISDN 或 IP
3. 查看响应中的综合会话详细信息:
a) 活动会话 - 验证会话存在且参数正确
b) 当前位置信息 - 检查 TAC、单元 ID、服务网络
c) 承载信息 - 验证默认和专用承载
- QCI、MBR/GBR、计费规则名称
- APN-AMBR 限制
d) 计费信息 - Gy 会话 ID、配额状态 (也可使用 GET /api/charging/<imsi>)
e) 策略信息 - Gx 会话、已安装的 PCC 规则
f) 最近事件 - GET /api/session_history?search=<imsi>
4. 如果未找到会话 → GET /api/diameter?status=disconnected 检查 PCRF 连接性

快速会话查找:

1. 用户报告问题
2. GET /api/sessions?search=<imsi|msisdn> (或 GET /api/sessions/<imsi>)
3. 验证会话存在且基本详细信息:
- 分配的 UE IP 地址
- QoS 参数
- 已建立的隧道端点
4. 要进行详细分析 → POST /api/ue_search

系统健康检查:

1. GET /api/upf              → 验证所有 PGW-U 对等体 "已关联"
2. GET /api/diameter?status=connected → 验证所有 PCRF 对等体 "已连接"
3. GET /api/sessions → 检查活动会话数量与容量
4. GET /api/status → 整体健康检查 ({"result":"ok"})

容量监控:

  • 计算 GET /api/sessions 返回的条目
  • 与许可/预期容量进行比较
  • 确定峰值使用时间
  • 监控 APN 之间的分布;使用 GET /api/ip_pools 获取每个池的利用率

API 与指标

使用 OAM API 进行:

  • 深入分析订阅者故障排除 (POST /api/ue_search)
  • 单个会话详细信息和状态检查 (GET /api/sessions/<imsi>)
  • 实时对等体状态 (GET /api/upfGET /api/diameter)
  • 跨所有接口的快速健康检查 (GET /api/status)
  • 按 IMSI/MSISDN/IP 故障排除特定用户
  • 承载 QoS 分析 (MBR、GBR、QCI)
  • 策略和计费规则检查 (GET /api/charging)
  • 会话历史和��计记录 (GET /api/session_history)
  • IP 池容量监控 (GET /api/ip_pools)
  • 验证配置和规则 (GET /api/upf_selection)

使用 Prometheus 指标进行:

  • 历史趋势
  • 报警和通知
  • 容量规划图
  • 性能分析
  • 长期监控

最佳实践: 同时使用两者 - OAM API 用于即时操作,Prometheus 用于趋势和警报。


监控与指标

除了 OAM API,OmniPGW 还提供与 Prometheus 兼容的指标进行监控:

可用指标

  • 会话指标

    • teid_registry_count - 活动 S5/S8 会话
    • seid_registry_count - 活动 PFCP 会话
    • session_id_registry_count - 活动 Gx 会话
    • address_registry_count - 分配的 UE IP 地址
    • charging_id_registry_count - 活动计费 ID
  • 消息指标

    • s5s8_inbound_messages_total - 接收的 GTP-C 消息
    • sxb_inbound_messages_total - 接收的 PFCP 消息
    • gx_inbound_messages_total - 接收的 Diameter 消息
    • 消息处理持续时间分布
  • 错误指标

    • s5s8_inbound_errors_total - S5/S8 协议错误
    • sxb_inbound_errors_total - PFCP 协议错误
    • gx_inbound_errors_total - Diameter 错误
  • 会话生命周期指标

    • pgw_session_create_total{result,cause,pdn_type,rat_type} - PDN 会话 创建尝试,按结果 (success/failure)、返回�� GTP 原因、PDN 类型 (ipv4/ipv6/ipv4v6) 和 RAT 类型进行细分
    • pgw_session_delete_total{pdn_type} - 按 PDN 类型删除 PDN 会话
    • pgw_session_modify_total - 处理的修改承载请求
  • UE IP 池指标

    • ue_pool_addresses_allocated{pool,ip_version} - 每个池 (APN 模式) 和 IP 版本分配的 UE 地址
    • ue_pool_addresses_total{pool,ip_version} - 总池容量
    • ue_pool_addresses_utilization_ratio{pool,ip_version} - 分配的比例 (0.0-1.0);用于池耗尽警报。注意共享地址范围的池每个都计算共享分配
    • ue_ip_allocation_failures_total{ip_version,reason} - 分配失败 (pool_exhausted, already_registered)
  • 每个对等体 UPF / PFCP 指标

    • upf_peer_associated{peer_ip} - 每个对等体的 PFCP 关联状态 1/0
    • upf_peer_healthy{peer_ip} - 每个对等体的健康状态 1/0
    • upf_peer_missed_heartbeats{peer_ip} - 每个对等体连续错过的心跳
    • upf_heartbeat_rtt - PFCP 心跳往返时间分布,按 peer_ip
  • 承载与 QoS 指标

    • pgw_bearer_create_total{type,qci} - 按类型创建的承载 (default/dedicated) 和 QCI
    • pgw_bearer_delete_total{type} - 按类型删除的承载
  • Diameter 对等体指标

    • diameter_peers_connected{application} - 按应用程序连接的 Diameter 对等体 (gx/gy/all)

访问指标

指标通过 HTTP 在配置的端点上公开:

curl http://127.0.0.42:42069/metrics

请参阅 监控与指标指南 以获取仪表板设置和警报。


详细文档

本节提供 OmniPGW 文档的全面概述。文档按主题和用例组织。

文档结构

OmniPGW 文档
├── OPERATIONS.md (本指南)

└── docs/
├── 配置与设置
│ ├── configuration.md 完整的 runtime.exs 参考
│ ├── ue-ip-allocation.md IP 池配置
│ └── pco-configuration.md DNS、P-CSCF、MTU 设置

├── 网络接口
│ ├── pfcp-interface.md Sxb/PFCP (PGW-U 通信)
│ ├── diameter-gx.md Gx (PCRF 通信)
│ ├── diameter-gy.md Gy/Ro (OCS 通信)
│ └── s5s8-interface.md S5/S8 (SGW-C 通信)

└── 操作
├── session-management.md PDN 会话生命周期
└── monitoring.md Prometheus 指标与警报

按主题分类的文档

🚀 入门

文档描述目的
OPERATIONS.md主��操作指南 (本文件)概述和快速入门

⚙️ 配置

文档描述行数
configuration.md完整的 runtime.exs 配置参考1,600+
ue-ip-allocation.mdUE IP 池管理与分配943
ipv6-dual-stack.md跨 PGW-C 和 UPF 的 IPv6 / IPv4v6 PDN 操作-
pco-configuration.md协议配置选项 (DNS、P-CSCF、MTU)344

🔌 网络接口

文档描述行数
pfcp-interface.mdPFCP/Sxb 接口到 PGW-U1,355
diameter-gx.mdDiameter Gx 接口到 PCRF (策略控制)941
diameter-gy.mdDiameter Gy/Ro 接口到 OCS (在线计费)1,100+
s5s8-interface.mdGTP-C S5/S8 接口到 SGW-C456

📊 操作与监控

文档描述行数
session-management.mdPDN 会话生命周期与操作435
monitoring.mdPrometheus 指标、Grafana 仪表板、警报807
data-cdr-format.mdCDR 文件格式、URR 配置、离线计费847
qos-bearers.mdQoS 与承载管理、策略控制448
troubleshooting.md故障排除程序和常见问题687

🔧 高级功能

文档描述行数
pcscf-monitoring.mdP-CSCF 发现与健康监控894

文档特点

📈 Mermaid 图表

所有文档都包含 Mermaid 图表 以便于理解:

  • 架构图
  • 序列图 (消息流)
  • 状态机
  • 网络拓扑

💡 实用示例

每个文档都包含:

  • 真实的配置示例
  • 可复制粘贴的配置
  • 常见用例

🔍 故障排除

每个接口文档都包含:

  • 常见问题和解决方案
  • 调试命令
  • 诊断指标

🔗 交叉引用

文档之间广泛交叉链接,便于导航。

阅读路径

对于网络操作员

  1. OPERATIONS.md - 概述 (本文件)
  2. configuration.md - 设置
  3. monitoring.md - 监控
  4. session-management.md - 日常操作

对于网络工程师

  1. OPERATIONS.md - 架构概述 (本文件)
  2. pfcp-interface.md - 用户平面控���
  3. diameter-gx.md - 策略控制
  4. diameter-gy.md - 在线计费
  5. s5s8-interface.md - 会话管理
  6. ue-ip-allocation.md - IP 管理

对于配置与部署

  1. configuration.md - 完整参考
  2. ue-ip-allocation.md - IP 池
  3. pco-configuration.md - 网络参数
  4. monitoring.md - 设置监控

文档统计

  • 文档总数: 14
  • 总行数: ~10,900+
  • 总大小: ~265 KB
  • Mermaid 图表: 75+
  • 代码示例: 150+

涉及的关键概念

架构

  • ✅ 控制/用户平面分离
  • ✅ OTP/Elixir 架构
  • ✅ 过程监督
  • ✅ 基于 GenServer 的会话

协议

  • ✅ PFCP (数据包转发控制协议)
  • ✅ GTP-C v2 (GPRS 隧道协议)
  • ✅ Diameter (RFC 6733)

3GPP 接口

  • ✅ Sxb (PGW-C ↔ PGW-U)
  • ✅ Gx (PGW-C ↔ PCRF)
  • ✅ Gy/Ro (PGW-C ↔ OCS)
  • ✅ S5/S8 (SGW-C ↔ PGW-C)

操作

  • ✅ 会话管理
  • ✅ IP 分配策略
  • ✅ QoS 执行
  • ✅ 计费集成
  • ✅ 监控与警报

其他资源

3GPP 规范

规范标题
TS 29.274GTP-C v2 (S5/S8 接口)
TS 29.244PFCP (Sxb 接口)
TS 29.212Diameter Gx 接口 (策略控制)
TS 32.299Diameter 计费应用 (Gy/Ro)
TS 32.251分组交换域计费
TS 23.401EPC 架构

相关文档