Guia de Operações do OmniPGW
OmniPGW - Plano de Controle do Gateway de Pacote (PGW-C)
por Omnitouch Network Services
Índice
- Visão Geral
- Arquitetura
- Interfaces de Rede
- Conceitos Chave
- Começando
- Configuração
- Monitoramento de Operações em Tempo Real (API OAM)
- Monitoramento & Métricas
- Documentação Detalhada
- Recursos Adicionais
Visão Geral
OmniPGW é uma implementação de alto desempenho do Plano de Controle do Gateway de Pacote (PGW-C) para redes 3GPP LTE Evolved Packet Core (EPC), desenvolvida pela Omnitouch Network Services. Ele gerencia as funções do plano de controle para sessões de dados, incluindo:
- Gerenciamento de Sessão - Criar, modificar e encerrar sessões de dados do UE (Equipamento do Usuário)
- Alocação de Endereço IP - Atribuição de endereços IP a dispositivos móveis a partir de pools configurados
- Controle de Políticas e Cobrança - Interface com PCRF para aplicação de políticas e cobrança
- Coordenação do Plano do Usuário - Controle do PGW-U (Plano do Usuário) para encaminhamento de pacotes
O que o PGW-C Faz
- Aceita solicitações de sessão do SGW-C via interface S5/S8 (GTP-C)
- Aloca endereços IP do UE a partir de pools de sub-rede configurados
- Solicita decisões de políticas do PCRF via interface Gx (Diameter)
- Programa regras de encaminhamento no PGW-U via interface Sxb (PFCP)
- Gerencia a aplicação de QoS através de contextos de portadora e regras de QoS
- Rastreia informações de cobrança para sistemas de faturamento
Arquitetura
Visão Geral dos Componentes
Arquitetura do Processo
O PGW-C é construído sobre Elixir/OTP e utiliza uma arquitetura de processo supervisionada:
- Supervisor de Aplicação - Supervisor de nível superior que gerencia todos os componentes
- Corretores de Protocolo - Manipulam mensagens de protocolo de entrada/saída
- Processos de Sessão - Um GenServer por conexão PDN ativa
- Registros - Rastreiam recursos alocados (IPs, TEIDs, SEIDs, etc.)
- Gerenciador de Nó PFCP - Mantém associações PFCP com peers PGW-U
Cada componente é supervisionado e será reiniciado automaticamente em caso de falha, garantindo a confiabilidade do sistema.
Interfaces de Rede
O PGW-C implementa três interfaces principais do 3GPP:
Interface S5/S8 (GTP-C v2)
Propósito: Sinalização do plano de controle entre SGW-C e PGW-C
Protocolo: GTP-C Versão 2 sobre UDP
Mensagens Chave:
- Solicitação/Resposta de Criação de Sessão
- Solicitação/Resposta de Exclusão de Sessão
- Solicitação/Resposta de Criação de Portadora
- Solicitação/Resposta de Exclusão de Portadora
Configuração: Veja Configuração S5/S8
Interface Sxb (PFCP)
Propósito: Sinalização do plano de controle entre PGW-C e PGW-U
Protocolo: PFCP (Protocolo de Controle de Encaminhamento de Pacotes) sobre UDP
Mensagens Chave:
- Solicitação/Resposta de Configuração de Associação
- Solicitação/Resposta de Estabelecimento de Sessão
- Solicitação/Resposta de Modificação de Sessão
- Solicitação/Resposta de Exclusão de Sessão
- Solicitação/Resposta de Heartbeat
Configuração: Veja Documentação da Interface PFCP/Sxb
Interface Gx (Diameter)
Propósito: Interface da Função de Regras de Políticas e Cobrança (PCRF)
Protocolo: Diameter (IETF RFC 6733)
Mensagens Chave:
- Solicitação/Resposta de Controle de Crédito Inicial (CCR-I/CCA-I)
- Solicitação/Resposta de Controle de Crédito de Término (CCR-T/CCA-T)
Configuração: Veja Documentação da Interface Diameter Gx
Conceitos Chave
Sessão PDN
Uma Sessão PDN (Rede de Dados de Pacote) representa a conexão de dados de um UE a uma rede externa (como a Internet). Cada sessão possui:
- Endereço IP do UE - Alocado a partir de um pool de sub-rede configurado
- APN (Nome do Ponto de Acesso) - Identifica a rede externa
- Contexto de Portadora - Contém parâmetros de QoS e informações de túnel
- ID de Cobrança - Identificador único para faturamento
- TEID (ID de Ponto de Extremidade do Túnel) - Identificador de túnel da interface S5/S8
- SEID (ID de Ponto de Extremidade da Sessão) - Identificador de sessão da interface Sxb
Contexto de Portadora
Uma portadora representa um fluxo de tráfego com características específicas de QoS:
- Portadora Padrão - Criada com cada sessão PDN
- Portadoras Dedicadas - Portadoras adicionais para necessidades específicas de QoS
- EBI (ID de Portadora EPS) - Identificador único para cada portadora
- Parâmetros de QoS - QCI, ARP, taxas de bits (MBR, GBR)
Regras PFCP
O PGW-C programa o PGW-U com regras de processamento de pacotes:
- PDR (Regra de Detecção de Pacotes) - Combina pacotes (uplink/downlink)
- FAR (Regra de Ação de Encaminhamento) - Especifica o comportamento de encaminhamento
- QER (Regra de Aplicação de QoS) - Aplica limites de taxa de bits
- BAR (Regra de Ação de Bufferização) - Controla a bufferização de pacotes
Veja Documentação da Interface PFCP para detalhes.
Alocação de Endereço IP
Os endereços IP do UE são alocados a partir de pools de sub-rede configurados:
- Seleção baseada em APN - Diferentes APNs podem usar sub-redes diferentes
- Alocação dinâmica - Seleção aleatória de IP do intervalo disponível
- Alocação estática - Suporte para endereços IP solicitados pelo UE
- Detecção de colisão - Garante a atribuição única de IP
Veja Alocação de Pool de IP do UE para configuração, e IPv6 / Dual-Stack para operação PDN IPv6 e IPv4v6.
Começando
Pré-requisitos
- Elixir ~1.16
- Erlang/OTP 26+
- Conectividade de rede com SGW-C, PGW-U e PCRF
- Compreensão da arquitetura EPC LTE
Iniciando o OmniPGW
- Configure as configurações de tempo de execução em
config/runtime.exs - Compile a aplicação:
mix deps.get
mix compile - Inicie a aplicação:
mix run --no-halt
Verificando a Operação
Verifique os logs para um início bem-sucedido:
[info] Iniciando OmniPGW...
[info] Iniciando Exportador de Métricas em 127.0.0.42:42069
[info] Iniciando Corretor S5/S8 em 127.0.0.10
[info] Iniciando Corretor Sxb em 127.0.0.20
[info] Iniciando Corretor Gx
[info] Iniciando Gerenciador de Nó PFCP
[info] OmniPGW iniciado com sucesso
Acesse as métricas em http://127.0.0.42:42069/metrics (endereço configurado).
Configuração
Toda a configuração de tempo de execução é definida em config/runtime.exs. A configuração é estruturada em várias seções:
Visão Geral da Configuração
Referência Rápida de Configuração
| Seção | Propósito | Documentação |
|---|---|---|
| metrics | Exportador de métricas Prometheus | Guia de Monitoramento |
| diameter | Interface Gx para PCRF | Config Diameter Gx |
| s5s8 | Interface GTP-C para SGW-C | Config S5/S8 |
| sxb | Interface PFCP para PGW-U | Config PFCP |
| ue | Pools de endereços IP do UE | Config de Pool de IP |
| pco | Opções de Configuração de Protocolo | Config PCO |
| CDR | Cobrança offline & relatórios de uso | Formato CDR |
Veja o Guia Completo de Configuração para informações detalhadas.
Monitoramento de Operações em Tempo Real (API OAM)
O OmniPGW expõe uma API OAM REST para monitoramento e operações em tempo real, fornecendo visibilidade instantânea sobre o status do sistema. Consulte esses endpoints de leitura sob demanda (ou em um intervalo de polling / a partir de um script) para uma visão operacional ao vivo - sem necessidade de acesso à linha de comando do host ou consultas de métricas brutas.
Acessando a API OAM
A API é servida sobre HTTPS/TLS. Todas as rotas são servidas sob o prefixo /api.
https://<omnipgw-ip>:8443/
A documentação interativa da API (Swagger UI) está disponível em:
https://<omnipgw-ip>:8443/api/docs
Exemplo de verificação de saúde (use -k para um certificado de laboratório autoassinado):
curl -k https://localhost:8443/api/status
{"result":"ok"}
Endpoints Disponíveis:
| Propósito | Endpoint | Substitui (página antiga) |
|---|---|---|
| Mergulho profundo em um assinante específico (IMSI/MSISDN/IP) | POST /api/ue_search | Pesquisa de UE |
| Listar / pesquisar sessões PDN ativas | GET /api/sessions[?search=<imsi|msisdn|ip>] | Sessões PGW |
| Uma sessão por IMSI | GET /api/sessions/<imsi> | Sessões PGW (detalhe) |
| Histórico de sessões / eventos de auditoria | GET /api/session_history[?type=&search=&page=&page_size=] | Histórico de Sessão |
| Visão geral da topologia da rede | GET /api/topology | Topologia da Rede |
| Utilização do pool de endereços IP do UE | GET /api/ip_pools, GET /api/ip_pools/<name> | Pools de IP |
| Status de peers UPF / PFCP | GET /api/upf, GET /api/upf/<ip> | Sessões PFCP / Status UPF |
| Regras de seleção UPF, saúde, configuração PCO | GET /api/upf_selection | Seleção UPF |
| Conectividade de peers Diameter (Gx/Gy) | GET /api/diameter[?status=connected|disconnected], GET /api/diameter/<origin-host> | Peers Diameter |
| Status de cobrança online (Gy) por sessão | GET /api/charging[?search=<imsi>], GET /api/charging/<imsi> | Status Gy |
| Status de descoberta DNS P-CSCF | GET /api/pcscf_monitor | Monitor P-CSCF |
| Verificação de saúde | GET /api/status | - |
Para uma visão estilo dashboard ao vivo, consulte os endpoints de coleção em um intervalo, por exemplo:
watch -n 2 'curl -sk https://localhost:8443/api/sessions'
watch -n 1 'curl -sk https://localhost:8443/api/diameter?status=disconnected'
Nota: a antiga página Logs (streaming de logs ao vivo) e a página Gy Simulator não têm equivalente na API OAM. Transmita logs do host / seu agregador de logs, e use
GET /api/chargingpara inspecionar o estado ao vivo de Gy/cobrança online.
Principais Recursos
Dados Sob Demanda e Pollados:
- Cada endpoint retorna o estado atual ao vivo dos processos do OmniPGW
- Poll em um intervalo com
watch/cron/um script para uma visão autoatualizável - Campos de status (por exemplo, peer
connected/associated) são retornados explicitamente no JSON
Pesquisa & Filtro:
- Pesquise sessões por IMSI, IP, MSISDN ou APN via
GET /api/sessions?search=... - Filtre peers Diameter por
?status=connected|disconnected - Filtre estado de cobrança por
?search=<imsi>
Registros de Detalhes Completos:
- Endpoints por entidade (
/api/sessions/<imsi>,/api/upf/<ip>,/api/diameter/<origin-host>,/api/charging/<imsi>) retornam estado completo como JSON - Inspecione sessão completa, configuração de peers e capacidades
Controle de Acesso:
- Servido sobre HTTPS/TLS na porta 8443
- Vincule apenas ao IP de gerenciamento e use seus controles de acesso
- Destinado à equipe de NOC/operações e uso de automação
Fluxos de Trabalho Operacionais
Solução de Problemas de Sessão (Mergulho Profundo):
1. Usuário relata problema de conexão
2. POST /api/ue_search com um corpo JSON contendo o IMSI, MSISDN ou IP
3. Revise os detalhes abrangentes da sessão na resposta:
a) Sessões Ativas - Verifique se a sessão existe com os parâmetros corretos
b) Localização Atual - Verifique TAC, ID da Célula, rede servidora
c) Informações da Portadora - Verifique portadoras padrão e dedicadas
- QCI, MBR/GBR, Nomes de Regras de Cobrança
- Limites APN-AMBR
d) Informações de Cobrança - ID da sessão Gy, status de cota (também GET /api/charging/<imsi>)
e) Informações de Políticas - Sessão Gx, regras PCC instaladas
f) Eventos Recentes - GET /api/session_history?search=<imsi>
4. Se a sessão não for encontrada → GET /api/diameter?status=disconnected para conectividade PCRF
Pesquisa Rápida de Sessão:
1. Usuário relata problema
2. GET /api/sessions?search=<imsi|msisdn> (ou GET /api/sessions/<imsi>)
3. Verifique se a sessão existe com detalhes básicos:
- Endereço IP do UE alocado
- Parâmetros de QoS
- Pontos de extremidade do túnel estabelecidos
4. Para análise detalhada → POST /api/ue_search
Verificação de Saúde do Sistema:
1. GET /api/upf → Verifique se todos os peers PGW-U estão "Associados"
2. GET /api/diameter?status=connected → Verifique se todos os peers PCRF estão "Conectados"
3. GET /api/sessions → Verifique a contagem de sessões ativas em relação à capacidade
4. GET /api/status → Verificação geral de saúde ({"result":"ok"})
Monitoramento de Capacidade:
- Conte as entradas retornadas por
GET /api/sessions - Compare com a capacidade licenciada/esperada
- Identifique os horários de pico de uso
- Monitore a distribuição entre APNs; use
GET /api/ip_poolspara utilização por pool
API vs. Métricas
Use a API OAM para:
- Solução de problemas de assinantes em profundidade (
POST /api/ue_search) - Detalhes e inspeção de estado de sessões individuais (
GET /api/sessions/<imsi>) - Status de peers em tempo real (
GET /api/upf,GET /api/diameter) - Verificações rápidas de saúde em todas as interfaces (
GET /api/status) - Solução de problemas de usuários específicos por IMSI/MSISDN/IP
- Análise de QoS de portadora (MBR, GBR, QCI)
- Inspeção de regras de políticas e cobrança (
GET /api/charging) - Histórico de sessões e trilhas de auditoria (
GET /api/session_history) - Monitoramento de capacidade de pools de IP (
GET /api/ip_pools) - Verificação de configuração e regras (
GET /api/upf_selection)
Use Métricas Prometheus para:
- Tendências históricas
- Alertas e notificações
- Gráficos de planejamento de capacidade
- Análise de desempenho
- Monitoramento a longo prazo
Melhor Prática: Use ambos juntos - a API OAM para operações imediatas, Prometheus para tendências e alertas.
Monitoramento & Métricas
Além da API OAM, o OmniPGW expõe métricas compatíveis com Prometheus para monitoramento:
Métricas Disponíveis
-
Métricas de Sessão
teid_registry_count- Sessões S5/S8 ativasseid_registry_count- Sessões PFCP ativassession_id_registry_count- Sessões Gx ativasaddress_registry_count- Endereços IP do UE alocadoscharging_id_registry_count- IDs de cobrança ativas
-
Métricas de Mensagens
s5s8_inbound_messages_total- Mensagens GTP-C recebidassxb_inbound_messages_total- Mensagens PFCP recebidasgx_inbound_messages_total- Mensagens Diameter recebidas- Distribuições de duração de manipulação de mensagens
-
Métricas de Erro
s5s8_inbound_errors_total- Erros de protocolo S5/S8sxb_inbound_errors_total- Erros de protocolo PFCPgx_inbound_errors_total- Erros de Diameter
-
Métricas do Ciclo de Vida da Sessão
pgw_session_create_total{result,cause,pdn_type,rat_type}- Tentativas de criação de sessão PDN, divididas por resultado (success/failure), causa GTP retornada, tipo de PDN (ipv4/ipv6/ipv4v6) e tipo RATpgw_session_delete_total{pdn_type}- Exclusões de sessão PDN por tipo de PDNpgw_session_modify_total- Solicitações de Modificação de Portadora tratadas
-
Métricas de Pool de IP do UE
ue_pool_addresses_allocated{pool,ip_version}- Endereços do UE alocados por pool (padrão APN) e versão IPue_pool_addresses_total{pool,ip_version}- Capacidade total do poolue_pool_addresses_utilization_ratio{pool,ip_version}- Fração alocada (0.0-1.0); útil para alertas de exaustão de pool. Note que pools que compartilham um intervalo de endereços contam cada alocação compartilhadaue_ip_allocation_failures_total{ip_version,reason}- Falhas de alocação (pool_exhausted,already_registered)
-
Métricas por Peer UPF / PFCP
upf_peer_associated{peer_ip}- Estado de associação PFCP 1/0 por peerupf_peer_healthy{peer_ip}- Saúde 1/0 por peerupf_peer_missed_heartbeats{peer_ip}- Batimentos cardíacos perdidos consecutivos por peerupf_heartbeat_rtt- Distribuição do tempo de ida e volta do batimento cardíaco PFCP, porpeer_ip
-
Métricas de Portadora & QoS
pgw_bearer_create_total{type,qci}- Portadoras criadas por tipo (default/dedicated) e QCIpgw_bearer_delete_total{type}- Portadoras excluídas por tipo
-
Métricas de Peers Diameter
diameter_peers_connected{application}- Peers Diameter conectados por aplicação (gx/gy/all)
Acessando Métricas
As métricas são expostas via HTTP no endpoint configurado:
curl http://127.0.0.42:42069/metrics
Veja Guia de Monitoramento & Métricas para configuração de dashboard e alertas.
Documentação Detalhada
Esta seção fornece uma visão abrangente de toda a documentação do OmniPGW. Os documentos estão organizados por tópico e caso de uso.
Estrutura da Documentação
Documentação OmniPGW
├── OPERATIONS.md (Este Guia)
│
└── docs/
├── Configuração & Configuração
│ ├── configuration.md Referência completa do runtime.exs
│ ├── ue-ip-allocation.md Configuração de pool de IP
│ └── pco-configuration.md Configurações de DNS, P-CSCF, MTU
│
├── Interfaces de Rede
│ ├── pfcp-interface.md Sxb/PFCP (comunicação PGW-U)
│ ├── diameter-gx.md Gx (comunicação PCRF)
│ ├── diameter-gy.md Gy/Ro (comunicação OCS)
│ └── s5s8-interface.md S5/S8 (comunicação SGW-C)
│
└── Operações
├── session-management.md Ciclo de vida da sessão PDN
└── monitoring.md Métricas Prometheus & alertas
Documentação por Tópico
🚀 Começando
| Documento | Descrição | Propósito |
|---|---|---|
| OPERATIONS.md | Guia principal de operações (este documento) | Visão geral e início rápido |
⚙️ Configuração
| Documento | Descrição | Linhas |
|---|---|---|
| configuration.md | Referência completa do runtime.exs | 1,600+ |
| ue-ip-allocation.md | Gerenciamento e alocação de pool de IP do UE | 943 |
| ipv6-dual-stack.md | Operação PDN IPv6 / IPv4v6 entre PGW-C e UPF | - |
| pco-configuration.md | Opções de Configuração de Protocolo (DNS, P-CSCF, MTU) | 344 |
🔌 Interfaces de Rede
| Documento | Descrição | Linhas |
|---|---|---|
| pfcp-interface.md | Interface PFCP/Sxb para PGW-U | 1,355 |
| diameter-gx.md | Interface Diameter Gx para PCRF (Controle de Políticas) | 941 |
| diameter-gy.md | Interface Diameter Gy/Ro para OCS (Cobrança Online) | 1,100+ |
| s5s8-interface.md | Interface GTP-C S5/S8 para SGW-C | 456 |
📊 Operações & Monitoramento
| Documento | Descrição | Linhas |
|---|---|---|
| session-management.md | Ciclo de vida e operações da sessão PDN | 435 |
| monitoring.md | Métricas Prometheus, dashboards Grafana, alertas | 807 |
| data-cdr-format.md | Formato de arquivo CDR, configuração URR, cobrança offline | 847 |
| qos-bearers.md | Gerenciamento de QoS & portadoras, controle de políticas | 448 |
| troubleshooting.md | Procedimentos de solução de problemas e problemas comuns | 687 |
🔧 Recursos Avançados
| Documento | Descrição | Linhas |
|---|---|---|
| pcscf-monitoring.md | Descoberta e monitoramento de saúde do P-CSCF | 894 |
Recursos da Documentação
📈 Diagramas Mermaid
Todos os documentos incluem gráficos Mermaid para compreensão visual:
- Diagramas de arquitetura
- Diagramas de sequência (fluxos de mensagens)
- Máquinas de estado
- Topologia da rede
💡 Exemplos Práticos
Cada documento inclui:
- Exemplos de configuração do mundo real
- Configurações prontas para copiar e colar
- Casos de uso comuns
🔍 Solução de Problemas
Cada documento de interface inclui:
- Problemas comuns e soluções
- Comandos de depuração
- Métricas para diagnóstico
🔗 Referências Cruzadas
Os documentos estão extensivamente interligados para fácil navegação.
Caminhos de Leitura
Para Operadores de Rede
- OPERATIONS.md - Visão geral (este documento)
- configuration.md - Configuração
- monitoring.md - Monitoramento
- session-management.md - Operações diárias
Para Engenheiros de Rede
- OPERATIONS.md - Visão geral da arquitetura (este documento)
- pfcp-interface.md - Controle do plano do usuário
- diameter-gx.md - Controle de políticas
- diameter-gy.md - Cobrança online
- s5s8-interface.md - Gerenciamento de sessões
- ue-ip-allocation.md - Gerenciamento de IP
Para Configuração & Implantação
- configuration.md - Referência completa
- ue-ip-allocation.md - Pools de IP
- pco-configuration.md - Parâmetros de rede
- monitoring.md - Configurar monitoramento
Estatísticas do Documento
- Total de Documentos: 14
- Total de Linhas: ~10,900+
- Tamanho Total: ~265 KB
- Diagramas Mermaid: 75+
- Exemplos de Código: 150+
Conceitos Chave Cobertos
Arquitetura
- ✅ Separação do plano de controle/plano do usuário
- ✅ Arquitetura OTP/Elixir
- ✅ Supervisão de processos
- ✅ Sessões baseadas em GenServer
Protocolos
- ✅ PFCP (Protocolo de Controle de Encaminhamento de Pacotes)
- ✅ GTP-C v2 (Protocolo de Tunelamento GPRS)
- ✅ Diameter (RFC 6733)
Interfaces 3GPP
- ✅ Sxb (PGW-C ↔ PGW-U)
- ✅ Gx (PGW-C ↔ PCRF)
- ✅ Gy/Ro (PGW-C ↔ OCS)
- ✅ S5/S8 (SGW-C ↔ PGW-C)
Operações
- ✅ Gerenciamento de sessões
- ✅ Estratégias de alocação de IP
- ✅ Aplicação de QoS
- ✅ Integração de cobrança
- ✅ Monitoramento & alertas
Recursos Adicionais
Especificações 3GPP
| Especificação | Título |
|---|---|
| TS 29.274 | GTP-C v2 (interface S5/S8) |
| TS 29.244 | PFCP (interface Sxb) |
| TS 29.212 | Interface Diameter Gx (Controle de Políticas) |
| TS 32.299 | Aplicações de Cobrança Diameter (Gy/Ro) |
| TS 32.251 | Cobrança do domínio de Pacotes |
| TS 23.401 | Arquitetura EPC |
Documentação Relacionada
- Arquivo de configuração: config/runtime.exs