Pular para o conteúdo principal

Guia de Operações do OmniPGW

OmniPGW - Plano de Controle do Gateway de Pacote (PGW-C)

por Omnitouch Network Services


Índice

  1. Visão Geral
  2. Arquitetura
  3. Interfaces de Rede
  4. Conceitos Chave
  5. Começando
  6. Configuração
  7. Monitoramento de Operações em Tempo Real (API OAM)
  8. Monitoramento & Métricas
  9. Documentação Detalhada
  10. 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

  1. Configure as configurações de tempo de execução em config/runtime.exs
  2. Compile a aplicação:
    mix deps.get
    mix compile
  3. 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çãoPropósitoDocumentação
metricsExportador de métricas PrometheusGuia de Monitoramento
diameterInterface Gx para PCRFConfig Diameter Gx
s5s8Interface GTP-C para SGW-CConfig S5/S8
sxbInterface PFCP para PGW-UConfig PFCP
uePools de endereços IP do UEConfig de Pool de IP
pcoOpções de Configuração de ProtocoloConfig PCO
CDRCobrança offline & relatórios de usoFormato 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ósitoEndpointSubstitui (página antiga)
Mergulho profundo em um assinante específico (IMSI/MSISDN/IP)POST /api/ue_searchPesquisa de UE
Listar / pesquisar sessões PDN ativasGET /api/sessions[?search=<imsi|msisdn|ip>]Sessões PGW
Uma sessão por IMSIGET /api/sessions/<imsi>Sessões PGW (detalhe)
Histórico de sessões / eventos de auditoriaGET /api/session_history[?type=&search=&page=&page_size=]Histórico de Sessão
Visão geral da topologia da redeGET /api/topologyTopologia da Rede
Utilização do pool de endereços IP do UEGET /api/ip_pools, GET /api/ip_pools/<name>Pools de IP
Status de peers UPF / PFCPGET /api/upf, GET /api/upf/<ip>Sessões PFCP / Status UPF
Regras de seleção UPF, saúde, configuração PCOGET /api/upf_selectionSeleçã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ãoGET /api/charging[?search=<imsi>], GET /api/charging/<imsi>Status Gy
Status de descoberta DNS P-CSCFGET /api/pcscf_monitorMonitor P-CSCF
Verificação de saúdeGET /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/charging para 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_pools para 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 ativas
    • seid_registry_count - Sessões PFCP ativas
    • session_id_registry_count - Sessões Gx ativas
    • address_registry_count - Endereços IP do UE alocados
    • charging_id_registry_count - IDs de cobrança ativas
  • Métricas de Mensagens

    • s5s8_inbound_messages_total - Mensagens GTP-C recebidas
    • sxb_inbound_messages_total - Mensagens PFCP recebidas
    • gx_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/S8
    • sxb_inbound_errors_total - Erros de protocolo PFCP
    • gx_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 RAT
    • pgw_session_delete_total{pdn_type} - Exclusões de sessão PDN por tipo de PDN
    • pgw_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 IP
    • ue_pool_addresses_total{pool,ip_version} - Capacidade total do pool
    • ue_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 compartilhada
    • ue_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 peer
    • upf_peer_healthy{peer_ip} - Saúde 1/0 por peer
    • upf_peer_missed_heartbeats{peer_ip} - Batimentos cardíacos perdidos consecutivos por peer
    • upf_heartbeat_rtt - Distribuição do tempo de ida e volta do batimento cardíaco PFCP, por peer_ip
  • Métricas de Portadora & QoS

    • pgw_bearer_create_total{type,qci} - Portadoras criadas por tipo (default/dedicated) e QCI
    • pgw_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

DocumentoDescriçãoPropósito
OPERATIONS.mdGuia principal de operações (este documento)Visão geral e início rápido

⚙️ Configuração

DocumentoDescriçãoLinhas
configuration.mdReferência completa do runtime.exs1,600+
ue-ip-allocation.mdGerenciamento e alocação de pool de IP do UE943
ipv6-dual-stack.mdOperação PDN IPv6 / IPv4v6 entre PGW-C e UPF-
pco-configuration.mdOpções de Configuração de Protocolo (DNS, P-CSCF, MTU)344

🔌 Interfaces de Rede

DocumentoDescriçãoLinhas
pfcp-interface.mdInterface PFCP/Sxb para PGW-U1,355
diameter-gx.mdInterface Diameter Gx para PCRF (Controle de Políticas)941
diameter-gy.mdInterface Diameter Gy/Ro para OCS (Cobrança Online)1,100+
s5s8-interface.mdInterface GTP-C S5/S8 para SGW-C456

📊 Operações & Monitoramento

DocumentoDescriçãoLinhas
session-management.mdCiclo de vida e operações da sessão PDN435
monitoring.mdMétricas Prometheus, dashboards Grafana, alertas807
data-cdr-format.mdFormato de arquivo CDR, configuração URR, cobrança offline847
qos-bearers.mdGerenciamento de QoS & portadoras, controle de políticas448
troubleshooting.mdProcedimentos de solução de problemas e problemas comuns687

🔧 Recursos Avançados

DocumentoDescriçãoLinhas
pcscf-monitoring.mdDescoberta e monitoramento de saúde do P-CSCF894

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

  1. OPERATIONS.md - Visão geral (este documento)
  2. configuration.md - Configuração
  3. monitoring.md - Monitoramento
  4. session-management.md - Operações diárias

Para Engenheiros de Rede

  1. OPERATIONS.md - Visão geral da arquitetura (este documento)
  2. pfcp-interface.md - Controle do plano do usuário
  3. diameter-gx.md - Controle de políticas
  4. diameter-gy.md - Cobrança online
  5. s5s8-interface.md - Gerenciamento de sessões
  6. ue-ip-allocation.md - Gerenciamento de IP

Para Configuração & Implantação

  1. configuration.md - Referência completa
  2. ue-ip-allocation.md - Pools de IP
  3. pco-configuration.md - Parâmetros de rede
  4. 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çãoTítulo
TS 29.274GTP-C v2 (interface S5/S8)
TS 29.244PFCP (interface Sxb)
TS 29.212Interface Diameter Gx (Controle de Políticas)
TS 32.299Aplicações de Cobrança Diameter (Gy/Ro)
TS 32.251Cobrança do domínio de Pacotes
TS 23.401Arquitetura EPC

Documentação Relacionada