OmniPGW Operations Guide
OmniPGW - Packet Gateway Control Plane (PGW-C)
by Omnitouch Network Services
Table of Contents
- Overview
- Architecture
- Network Interfaces
- Key Concepts
- Getting Started
- Configuration
- Web UI - Real-Time Operations Dashboard
- Monitoring & Metrics
- Detailed Documentation
- Additional Resources
- Contributing
- Support
Overview
OmniPGW is a high-performance Packet Gateway Control Plane (PGW-C) implementation for 3GPP LTE Evolved Packet Core (EPC) networks, developed by Omnitouch Network Services. It manages the control plane functions for data sessions, including:
- Session Management - Creating, modifying, and terminating UE (User Equipment) data sessions
- IP Address Allocation - Assigning IP addresses to mobile devices from configured pools
- Policy & Charging Control - Interfacing with PCRF for policy enforcement and charging
- User Plane Coordination - Controlling the PGW-U (User Plane) for packet forwarding
What PGW-C Does
- Accepts session requests from SGW-C via S5/S8 interface (GTP-C)
- Allocates UE IP addresses from configured subnet pools
- Requests policy decisions from PCRF via Gx interface (Diameter)
- Programs forwarding rules in PGW-U via Sxb interface (PFCP)
- Manages QoS enforcement through bearer contexts and QoS rules
- Tracks charging information for billing systems
Architecture
Component Overview
Process Architecture
PGW-C is built on Elixir/OTP and uses a supervised process architecture:
- Application Supervisor - Top-level supervisor managing all components
- Protocol Brokers - Handle incoming/outgoing protocol messages
- Session Processes - One GenServer per active PDN connection
- Registries - Track allocated resources (IPs, TEIDs, SEIDs, etc.)
- PFCP Node Manager - Maintains PFCP associations with PGW-U peers
Each component is supervised and will automatically restart on failure, ensuring system reliability.
Network Interfaces
PGW-C implements three primary 3GPP interfaces:
S5/S8 Interface (GTP-C v2)
Purpose: Control plane signaling between SGW-C and PGW-C
Protocol: GTP-C Version 2 over UDP
Key Messages:
- Create Session Request/Response
- Delete Session Request/Response
- Create Bearer Request/Response
- Delete Bearer Request/Response
Configuration: See S5/S8 Configuration
Sxb Interface (PFCP)
Purpose: Control plane signaling between PGW-C and PGW-U
Protocol: PFCP (Packet Forwarding Control Protocol) over UDP
Key Messages:
- Association Setup Request/Response
- Session Establishment Request/Response
- Session Modification Request/Response
- Session Deletion Request/Response
- Heartbeat Request/Response
Configuration: See PFCP/Sxb Interface Documentation
Gx Interface (Diameter)
Purpose: Policy and Charging Rules Function (PCRF) interface
Protocol: Diameter (IETF RFC 6733)
Key Messages:
- Credit Control Initial Request/Answer (CCR-I/CCA-I)
- Credit Control Termination Request/Answer (CCR-T/CCA-T)
Configuration: See Diameter Gx Interface Documentation
Key Concepts
PDN Session
A PDN (Packet Data Network) Session represents a UE's data connection to an external network (like the Internet). Each session has:
- UE IP Address - Allocated from a configured subnet pool
- APN (Access Point Name) - Identifies the external network
- Bearer Context - Contains QoS parameters and tunnel information
- Charging ID - Unique identifier for billing
- TEID (Tunnel Endpoint ID) - S5/S8 interface tunnel identifier
- SEID (Session Endpoint ID) - Sxb interface session identifier
Bearer Context
A bearer represents a traffic flow with specific QoS characteristics:
- Default Bearer - Created with every PDN session
- Dedicated Bearers - Additional bearers for specific QoS needs
- EBI (EPS Bearer ID) - Unique identifier for each bearer
- QoS Parameters - QCI, ARP, bitrates (MBR, GBR)
PFCP Rules
The PGW-C programs the PGW-U with packet processing rules:
- PDR (Packet Detection Rule) - Matches packets (uplink/downlink)
- FAR (Forwarding Action Rule) - Specifies forwarding behavior
- QER (QoS Enforcement Rule) - Enforces bitrate limits
- BAR (Buffering Action Rule) - Controls packet buffering
See PFCP Interface Documentation for details.
IP Address Allocation
UE IP addresses are allocated from configured subnet pools:
- APN-based selection - Different APNs can use different subnets
- Dynamic allocation - Random IP selection from available range
- Static allocation - Support for UE-requested IP addresses
- Collision detection - Ensures unique IP assignment
See UE IP Pool Allocation for configuration.
Getting Started
Prerequisites
- Elixir ~1.16
- Erlang/OTP 26+
- Network connectivity to SGW-C, PGW-U, and PCRF
- Understanding of LTE EPC architecture
Starting OmniPGW
- Configure runtime settings in
config/runtime.exs - Compile the application:
mix deps.get
mix compile - Start the application:
mix run --no-halt
Verifying Operation
Check the logs for successful startup:
[info] Starting OmniPGW...
[info] Starting Metrics Exporter on 127.0.0.42:42069
[info] Starting S5/S8 Broker on 127.0.0.10
[info] Starting Sxb Broker on 127.0.0.20
[info] Starting Gx Broker
[info] Starting PFCP Node Manager
[info] OmniPGW successfully started
Access metrics at http://127.0.0.42:42069/metrics (configured address).
Configuration
All runtime configuration is defined in config/runtime.exs. The configuration is structured into several sections:
Configuration Overview
Quick Configuration Reference
| Section | Purpose | Documentation |
|---|---|---|
| metrics | Prometheus metrics exporter | Monitoring Guide |
| diameter | Gx interface to PCRF | Diameter Gx Config |
| s5s8 | GTP-C interface to SGW-C | S5/S8 Config |
| sxb | PFCP interface to PGW-U | PFCP Config |
| ue | UE IP address pools | IP Pool Config |
| pco | Protocol Configuration Options | PCO Config |
See the Complete Configuration Guide for detailed information.
Web UI - Real-Time Operations Dashboard
OmniPGW includes a built-in Web UI for real-time monitoring and operations, providing instant visibility into system status without needing command-line tools or metrics queries.
Accessing the Web UI
http://<omnipgw-ip>:<web-port>/
Available Pages:
| Page | URL | Purpose | Refresh Rate |
|---|---|---|---|
| PGW Sessions | /pgw_sessions | View all active PDN sessions | 2 seconds |
| PFCP Sessions | /pfcp_sessions | View PFCP sessions with PGW-U | 2 seconds |
| UPF Status | /upf_status | Monitor PFCP peer associations | 2 seconds |
| Diameter Peers | /diameter | Monitor PCRF connectivity | 1 second |
| Logs | /logs | Real-time log streaming | Live |
Key Features
Real-Time Updates:
- All pages auto-refresh (no manual reload needed)
- Live data streaming from OmniPGW processes
- Color-coded status indicators (green/red)
Search & Filter:
- Search sessions by IMSI, IP, MSISDN, or APN
- Instant filtering without page reload
Expandable Details:
- Click any row to see complete details
- Inspect full session state
- View peer configuration and capabilities
No Authentication Required (Internal Use):
- Direct access from management network
- Designed for NOC/operations team use
- Bind to management IP only for security
Operational Workflows
Session Troubleshooting:
1. User reports connection issue
2. Open PGW Sessions page
3. Search by IMSI or phone number
4. Verify session exists and has correct:
- UE IP address allocated
- QoS parameters from PCRF
- Tunnel endpoints established
5. If no session found → Check Diameter page for PCRF connectivity
System Health Check:
1. Open UPF Status page → Verify all PGW-U peers "Associated"
2. Open Diameter page → Verify all PCRF peers "Connected"
3. Open PGW Sessions → Check active session count vs. capacity
Capacity Monitoring:
- Glance at PGW Sessions count
- Compare to licensed/expected capacity
- Identify peak usage times
- Monitor distribution across APNs
Web UI vs. Metrics
Use Web UI for:
- Individual session details
- Real-time peer status
- Quick health checks
- Troubleshooting specific users
- Verifying configuration
Use Prometheus Metrics for:
- Historical trends
- Alerting and notifications
- Capacity planning graphs
- Performance analysis
- Long-term monitoring
Best Practice: Use both together - Web UI for immediate operations, Prometheus for trends and alerts.
Monitoring & Metrics
In addition to the Web UI, OmniPGW exposes Prometheus-compatible metrics for monitoring:
Available Metrics
-
Session Metrics
teid_registry_count- Active S5/S8 sessionsseid_registry_count- Active PFCP sessionssession_id_registry_count- Active Gx sessionsaddress_registry_count- Allocated UE IP addressescharging_id_registry_count- Active charging IDs
-
Message Metrics
s5s8_inbound_messages_total- GTP-C messages receivedsxb_inbound_messages_total- PFCP messages receivedgx_inbound_messages_total- Diameter messages received- Message handling duration distributions
-
Error Metrics
s5s8_inbound_errors_total- S5/S8 protocol errorssxb_inbound_errors_total- PFCP protocol errorsgx_inbound_errors_total- Diameter errors
Accessing Metrics
Metrics are exposed via HTTP at the configured endpoint:
curl http://127.0.0.42:42069/metrics
See Monitoring & Metrics Guide for dashboard setup and alerting.
Detailed Documentation
This section provides a comprehensive overview of all OmniPGW documentation. Documents are organized by topic and use case.
Documentation Structure
OmniPGW Documentation
├── OPERATIONS.md (This Guide)
│
└── docs/
├── Configuration & Setup
│ ├── configuration.md Complete runtime.exs reference
│ ├── ue-ip-allocation.md IP pool configuration
│ └── pco-configuration.md DNS, P-CSCF, MTU settings
│
├── Network Interfaces
│ ├── pfcp-interface.md Sxb/PFCP (PGW-U communication)
│ ├── diameter-gx.md Gx (PCRF communication)
│ ├── diameter-gy.md Gy/Ro (OCS communication)
│ └── s5s8-interface.md S5/S8 (SGW-C communication)
│
└── Operations
├── session-management.md PDN session lifecycle
└── monitoring.md Prometheus metrics & alerting
Documentation by Topic
🚀 Getting Started
| Document | Description | Purpose |
|---|---|---|
| OPERATIONS.md | Main operations guide (this document) | Overview and quick start |
⚙️ Configuration
| Document | Description | Lines |
|---|---|---|
| configuration.md | Complete runtime.exs configuration reference | 1,600+ |
| ue-ip-allocation.md | UE IP pool management and allocation | 943 |
| pco-configuration.md | Protocol Configuration Options (DNS, P-CSCF, MTU) | 344 |
🔌 Network Interfaces
| Document | Description | Lines |
|---|---|---|
| pfcp-interface.md | PFCP/Sxb interface to PGW-U | 1,355 |
| diameter-gx.md | Diameter Gx interface to PCRF (Policy Control) | 941 |
| diameter-gy.md | Diameter Gy/Ro interface to OCS (Online Charging) | 1,100+ |
| s5s8-interface.md | GTP-C S5/S8 interface to SGW-C | 456 |
📊 Operations & Monitoring
| Document | Description | Lines |
|---|---|---|
| session-management.md | PDN session lifecycle and operations | 435 |
| monitoring.md | Prometheus metrics, Grafana dashboards, alerting | 807 |
Documentation Features
📈 Mermaid Diagrams
All documents include Mermaid charts for visual understanding:
- Architecture diagrams
- Sequence diagrams (message flows)
- State machines
- Network topology
💡 Practical Examples
Every document includes:
- Real-world configuration examples
- Copy-paste ready configs
- Common use cases
🔍 Troubleshooting
Each interface document includes:
- Common issues and solutions
- Debug commands
- Metrics for diagnosis
🔗 Cross-References
Documents are extensively cross-linked for easy navigation.
Reading Paths
For Network Operators
- OPERATIONS.md - Overview (this document)
- configuration.md - Setup
- monitoring.md - Monitoring
- session-management.md - Day-to-day operations
For Network Engineers
- OPERATIONS.md - Architecture overview (this document)
- pfcp-interface.md - User plane control
- diameter-gx.md - Policy control
- diameter-gy.md - Online charging
- s5s8-interface.md - Session management
- ue-ip-allocation.md - IP management
For Configuration & Deployment
- configuration.md - Complete reference
- ue-ip-allocation.md - IP pools
- pco-configuration.md - Network parameters
- monitoring.md - Set up monitoring
Document Statistics
- Total Documents: 10
- Total Lines: ~7,300+
- Total Size: ~180 KB
- Mermaid Diagrams: 65+
- Code Examples: 120+
Key Concepts Covered
Architecture
- ✅ Control/User plane separation
- ✅ OTP/Elixir architecture
- ✅ Process supervision
- ✅ GenServer-based sessions
Protocols
- ✅ PFCP (Packet Forwarding Control Protocol)
- ✅ GTP-C v2 (GPRS Tunnelling Protocol)
- ✅ Diameter (RFC 6733)
3GPP Interfaces
- ✅ Sxb (PGW-C ↔ PGW-U)
- ✅ Gx (PGW-C ↔ PCRF)
- ✅ Gy/Ro (PGW-C ↔ OCS)
- ✅ S5/S8 (SGW-C ↔ PGW-C)
Operations
- ✅ Session management
- ✅ IP allocation strategies
- ✅ QoS enforcement
- ✅ Charging integration
- ✅ Monitoring & alerting
Additional Resources
3GPP Specifications
| Spec | Title |
|---|---|
| TS 29.274 | GTP-C v2 (S5/S8 interface) |
| TS 29.244 | PFCP (Sxb interface) |
| TS 29.212 | Diameter Gx interface (Policy Control) |
| TS 32.299 | Diameter Charging Applications (Gy/Ro) |
| TS 32.251 | Packet Switched domain charging |
| TS 23.401 | EPC architecture |
Related Documentation
- Project README: README.md
- Configuration file: config/runtime.exs
Contributing
To update documentation:
- Edit Markdown files in
docs/ - Include Mermaid diagrams for visual concepts
- Add practical examples
- Cross-reference related docs
- Update OPERATIONS.md if adding new documents
Quick Links
Support
For questions or issues with OmniPGW:
- Review documentation in this guide
- Check configuration examples
- Consult troubleshooting sections in interface docs
- Refer to the project repository for contributions
OmniPGW - Carrier-grade LTE Packet Gateway Control Plane
Developed by Omnitouch Network Services
Documentation Version: 1.0 Last Updated: 2025-10-29