Descoberta e Monitoramento do P-CSCF
Descoberta Dinâmica do Servidor P-CSCF com Monitoramento em Tempo Real
OmniPGW da Omnitouch Network Services
Visão Geral
Descoberta e Monitoramento do P-CSCF (Função de Controle de Sessão de Chamada Proxy) fornece descoberta dinâmica de servidores IMS P-CSCF usando consultas DNS SRV com verificação de saúde SIP OPTIONS em tempo real. Este recurso permite:
- Descoberta do P-CSCF por Regra: Diferentes servidores P-CSCF para diferentes tipos de tráfego
- Monitoramento Automático: Processo em segundo plano monitora continuamente a resolução DNS (a cada 60 segundos)
- Verificações de Saúde SIP OPTIONS: Verifica se os servidores P-CSCF estão ativos via pings SIP OPTIONS
- TCP Primeiro: Tenta SIP OPTIONS via TCP (preferido pela confiabilidade)
- Fallback UDP: Retorna para UDP se o TCP falhar
- Rastreamento de Status: Marca cada servidor como :up ou :down com base na resposta
- Rastreamento de Saúde em Tempo Real: A interface da Web exibe o status de resolução, IPs descobertos e status de saúde
- Fallback Elegante: Estratégia de fallback em três camadas para máxima confiabilidade
- Métricas Prometheus: Total observabilidade via métricas Prometheus
Índice
- Introdução Rápida
- Configuração
- Como Funciona
- Monitoramento da Interface da Web
- Métricas e Observabilidade
- Estratégia de Fallback
- Configuração DNS
- Solução de Problemas
- Melhores Práticas
Introdução Rápida
Configuração Básica
# config/runtime.exs
# Configuração global do PCO (servidor DNS para descoberta do P-CSCF)
config :pgw_c,
pco: %{
p_cscf_discovery_dns_server: "10.179.2.177",
p_cscf_discovery_enabled: true,
p_cscf_discovery_timeout_ms: 5000
},
upf_selection: %{
rules: [
# Tráfego IMS - Descoberta dinâmica do P-CSCF
%{
name: "Tráfego IMS",
priority: 20,
match_field: :apn,
match_regex: "^ims",
upf_pool: [
%{remote_ip_address: "10.100.2.21", remote_port: 8805, weight: 80}
],
# FQDN de Descoberta do P-CSCF (veja o Guia de Configuração para mais regras de seleção do UPF)
p_cscf_discovery_fqdn: "pcscf.mnc380.mcc313.3gppnetwork.org",
# Fallback estático (veja o Guia de Configuração do PCO)
pco: %{
p_cscf_ipv4_address_list: ["10.101.2.100", "10.101.2.101"]
}
}
]
}
Veja o Guia de Configuração para a configuração completa da regra de seleção do UPF e Configuração do PCO para opções de fallback estático do P-CSCF.
Monitoramento de Acesso
- Inicie o OmniPGW
- Navegue até Interface da Web → Monitor do P-CSCF (
https://localhost:8086/pcscf_monitor) - Veja o status de resolução em tempo real e os IPs descobertos
Configuração
Configurações Globais de Descoberta do P-CSCF
Configure o servidor DNS usado para a descoberta do P-CSCF na seção PCO:
pco: %{
# Servidor DNS para descoberta do P-CSCF (separado do DNS fornecido ao UE)
p_cscf_discovery_dns_server: "10.179.2.177",
# Habilitar recurso de descoberta DNS do P-CSCF
p_cscf_discovery_enabled: true,
# Tempo limite para consultas DNS SRV (milissegundos)
p_cscf_discovery_timeout_ms: 5000,
# Endereços P-CSCF estáticos (fallback global)
p_cscf_ipv4_address_list: ["10.101.2.146"]
}
FQDNs do P-CSCF por Regra
Cada regra de seleção do UPF pode especificar seu próprio FQDN de descoberta do P-CSCF:
upf_selection: %{
rules: [
# Tráfego IMS - P-CSCF específico do IMS
%{
name: "Tráfego IMS",
match_field: :apn,
match_regex: "^ims",
upf_pool: [...],
p_cscf_discovery_fqdn: "pcscf.ims.mnc380.mcc313.3gppnetwork.org",
pco: %{
p_cscf_ipv4_address_list: ["10.101.2.100"] # Fallback
}
},
# Empresa - P-CSCF específico da empresa
%{
name: "Tráfego Empresarial",
match_field: :apn,
match_regex: "^enterprise",
upf_pool: [...],
p_cscf_discovery_fqdn: "pcscf.enterprise.example.com",
pco: %{
p_cscf_ipv4_address_list: ["192.168.1.50"] # Fallback
}
},
# Internet - Sem descoberta do P-CSCF (usa configuração global)
%{
name: "Tráfego da Internet",
match_field: :apn,
match_regex: "^internet",
upf_pool: [...]
# Sem p_cscf_discovery_fqdn - usa configuração global do PCO
}
]
}
Como Funciona
Processo de Inicialização
-
Aplicação Inicia
- O GenServer do Monitor do P-CSCF é inicializado
- O analisador de configuração extrai todos os FQDNs únicos do P-CSCF das regras de seleção do UPF
-
Registro de FQDN
- Cada FQDN único é registrado no monitor
- O monitor realiza a consulta inicial de DNS SRV para cada FQDN
- Verificação de Saúde SIP OPTIONS (em paralelo para todos os servidores descobertos):
- Tente TCP primeiro (
SIP/2.0/TCPna porta 5060) - Se o TCP falhar, retorne para UDP (
SIP/2.0/UDPna porta 5060) - Marque cada servidor como
:up(responde) ou:down(sem resposta/tempo esgotado)
- Tente TCP primeiro (
- Resultados (IPs, status de saúde ou erros) são armazenados em cache com timestamps
-
Monitoramento Periódico (A cada 60 segundos)
- O monitor atualiza todos os FQDNs
- Consultas DNS são executadas em segundo plano sem bloquear
- Para cada servidor descoberto:
- Envie SIP OPTIONS via TCP (tempo limite: 5 segundos)
- Se o TCP falhar, tente UDP (tempo limite: 5 segundos)
- Atualize o status de saúde com base na resposta
- O cache é atualizado com os últimos resultados DNS e status de saúde
Fluxo de Criação de Sessão
Processo de Consulta DNS
O monitor usa registros DNS SRV para descoberta direta do P-CSCF:
- Consulta SRV: Consulta registros SRV em
_sip._tcp.{fqdn} - Ordenação por Prioridade: Ordena por prioridade e peso
- Extração de Alvo: Extrai nomes de host dos registros SRV
- Resolução de Nome de Host: Resolve nomes de host de destino para endereços IP (registros A/AAAA)
- Cache: Armazena IPs resolvidos com status e timestamp
Precedência de Seleção de Endereço do P-CSCF
Quando tanto FQDN quanto PCO estático estão configurados em uma regra, o FQDN tem precedência:
%{
name: "Tráfego IMS",
p_cscf_discovery_fqdn: "pcscf.mnc380.mcc313.3gppnetwork.org", # ← Tentado PRIMEIRO
pco: %{
p_cscf_ipv4_address_list: ["10.101.2.100", "10.101.2.101"] # ← Fallback
}
}
Lógica de Seleção:
| Condição | Fonte do P-CSCF | IPs Usados | Mensagem de Log |
|---|---|---|---|
| FQDN resolve com sucesso | Descoberta DNS (Monitor) | IPs descobertos do DNS | "Usando endereços do P-CSCF do FQDN pcscf.example.com" |
| FQDN falha ao resolver | Sobrescrita do PCO da Regra | IPs estáticos de pco.p_cscf_ipv4_address_list | "Falha ao obter IPs do P-CSCF do FQDN..., retornando para configuração estática" |
| FQDN retorna lista vazia | Sobrescrita do PCO da Regra | IPs estáticos de pco.p_cscf_ipv4_address_list | Fallback acionado |
| Monitor indisponível | Sobrescrita do PCO da Regra | IPs estáticos de pco.p_cscf_ipv4_address_list | Erro aciona fallback |
| Nenhum FQDN configurado | Sobrescrita do PCO da Regra ou Global | IPs estáticos da regra ou configuração global | Usa configuração estática diretamente |
Fluxo de Exemplo:
Criação de Sessão para a Regra de Tráfego IMS:
┌─────────────────────────────────────┐
│ 1. Verifique se o FQDN está configurado? │
│ ✓ Sim: "pcscf.mnc380.mcc313..." │
└──────────────┬──────────────────────┘
│
▼
┌─────────────────────────────────────┐
│ 2. Consulta o Monitor para IPs em cache │
│ Monitor.get_ips(fqdn) │
└──────────────┬──────────────────────┘
│
┌───────┴────────┐
▼ ▼
┌─────────────┐ ┌──────────────────┐
│ SUCESSO │ │ FALHOU/VAZIO │
│ {:ok, ips} │ │ {:error, reason} │
└──────┬──────┘ └────────┬─────────┘
│ │
▼ ▼
┌─────────────┐ ┌──────────────────┐
│ Usar IPs do DNS │ │ Usar PCO Estático │
│ [do DNS] │ │ [da configuração] │
└─────────────┘ └──────────────────┘
│ │
└────────┬─────────┘
▼
┌──────────────────┐
│ Enviar para UE em │
│ mensagem PCO │
└──────────────────┘
Cenários do Mundo Real:
Cenário 1: Descoberta DNS Funciona ✅
Config:
p_cscf_discovery_fqdn: "pcscf.ims.example.com"
pco.p_cscf_ipv4_address_list: ["10.101.2.100"]
Resultado DNS: [10.101.2.150, 10.101.2.151]
UE Recebe: [10.101.2.150, 10.101.2.151] ← Do DNS
Nota: O PCO estático é ignorado quando o DNS tem sucesso
Cenário 2: DNS Falha, Fallback Elegante ⚠️
Config:
p_cscf_discovery_fqdn: "pcscf.ims.example.com"
pco.p_cscf_ipv4_address_list: ["10.101.2.100"]
Resultado DNS: ERRO :no_naptr_records
UE Recebe: [10.101.2.100] ← Do PCO estático
Nota: A sessão tem sucesso apesar da falha do DNS
Cenário 3: Nenhum FQDN Configurado
Config:
# Nenhum p_cscf_discovery_fqdn
pco.p_cscf_ipv4_address_list: ["192.168.1.50"]
UE Recebe: [192.168.1.50] ← Do PCO estático
Nota: Descoberta DNS não foi tentada
Por que este design?
- Preferir Dinâmico: O DNS fornece flexibilidade, balanceamento de carga e roteamento ciente da localização
- Garantir Confiabilidade: O fallback estático garante que as sessões nunca falhem devido a problemas de DNS
- Zero Intervenção Manual: Failover automático sem envolvimento do operador
- Seguro para Produção: O melhor dos dois mundos - agilidade com estabilidade
Recomendação: Sempre configure tanto o FQDN quanto o PCO estático para implantações em produção:
# ✓ RECOMENDADO: Dinâmico com fallback
%{
p_cscf_discovery_fqdn: "pcscf.ims.example.com", # Preferido
pco: %{
p_cscf_ipv4_address_list: ["10.101.2.100"] # Rede de segurança
}
}
# ⚠️ ARRISCADO: Apenas dinâmico (retorna para o PCO global)
%{
p_cscf_discovery_fqdn: "pcscf.ims.example.com"
# Sem fallback específico da regra!
}
# ✓ VÁLIDO: Apenas estático (sem sobrecarga de DNS)
%{
pco: %{
p_cscf_ipv4_address_list: ["192.168.1.50"]
}
}
Monitoramento da Interface da Web
Página do Monitor do P-CSCF
Acesse a interface de monitoramento em: https://localhost:8086/pcscf_monitor

Recursos:
-
Estatísticas Gerais
- Total de FQDNs monitorados
- FQDNs resolvidos com sucesso
- Resoluções falhadas
- Total de IPs do P-CSCF descobertos
-
Tabela de FQDN
- FQDN sendo monitorado
- Status de resolução (✓ Resolvido / ✗ Falhou / ⏳ Pendente)
- Número de IPs descobertos
- Lista de endereços IP resolvidos (com detalhes do servidor expansíveis)
- Timestamp da última atualização
- Botão de atualização manual por FQDN
- Status de Saúde: Cada servidor descoberto mostra:
- Endereço IP e porta
- Nome do host (do alvo DNS SRV)
- Indicador de saúde em tempo real (✓ Ativo / ✗ Inativo)
-
Controles de Atualização
- Botão Atualizar Tudo: Aciona reconsulta imediata de todos os FQDNs
- Atualização por FQDN: Atualiza FQDNs individuais sob demanda
- Atualização automática: Página atualiza a cada 5 segundos
-
Painel de Métricas de Monitoramento
- Total de FQDNs: Número de FQDNs únicos registrados para monitoramento
- Resolvidos com Sucesso: FQDNs que foram resolvidos com sucesso via DNS
- Resoluções DNS Falhadas: FQDNs que falharam ao resolver
- Total de Servidores P-CSCF: Total de servidores descobertos em todos os FQDNs
- ✓ Saudáveis (SIP OPTIONS ATIVOS): Servidores respondendo a verificações de saúde SIP OPTIONS
- ✗ Não Saudáveis (SIP OPTIONS INATIVOS): Servidores não respondendo a SIP OPTIONS
- Taxa de Sucesso do DNS: Porcentagem de resoluções DNS bem-sucedidas
- Intervalo de Verificação de Saúde: Frequência das verificações de saúde SIP OPTIONS (60s, 5s de tempo limite)

O painel de métricas fornece visibilidade em tempo real sobre a saúde da resolução DNS e a disponibilidade do servidor P-CSCF via SIP OPTIONS.
Integração da Página de Seleção do UPF
A página de Seleção do UPF (/upf_selection) exibe o status de descoberta do P-CSCF para cada regra:
📌 Tráfego IMS (Prioridade 20)
Correspondência: APN correspondente a ^ims
Pool: UPF-IMS-Primário (10.100.2.21:8805)
🔍 Descoberta do P-CSCF
FQDN: pcscf.mnc380.mcc313.3gppnetwork.org
Status: ✓ Resolvido (2 IPs)
IPs Resolvidos: 10.101.2.100, 10.101.2.101
⚙️ Sobrescritas do PCO
DNS Primário: 10.103.2.195
P-CSCF (fallback estático): 10.101.2.100, 10.101.2.101
Métricas e Observabilidade
Métricas Prometheus
O sistema de monitoramento do P-CSCF expõe métricas via Prometheus (porta 42069 por padrão):
Métricas de Gauge
# Métricas a nível de FQDN
pcscf_fqdns_total # Total de FQDNs monitorados
pcscf_fqdns_resolved # FQDNs resolvidos com sucesso (DNS teve sucesso)
pcscf_fqdns_failed # Resoluções de FQDN falhadas (DNS falhou)
# Métricas a nível de servidor (agregado)
pcscf_servers_total # Total de servidores P-CSCF descobertos via DNS SRV
pcscf_servers_healthy # Servidores respondendo a SIP OPTIONS (agregado)
pcscf_servers_unhealthy # Servidores não respondendo a SIP OPTIONS (agregado)
# Métricas a nível de servidor (por FQDN com rótulo)
pcscf_servers_healthy{fqdn="..."} # Servidores saudáveis para FQDN específico
pcscf_servers_unhealthy{fqdn="..."} # Servidores não saudáveis para FQDN específico
Detalhes da Verificação de Saúde:
healthy: Servidor respondeu ao ping SIP OPTIONS (TCP ou UDP)unhealthy: Servidor não respondeu ao SIP OPTIONS (tempo limite de 5s por transporte)
Exemplos de Métricas
Métricas de Resolução DNS:
# Consultar FQDNs resolvidos com sucesso
pcscf_fqdns_resolved
# Calcular taxa de sucesso do DNS
(pcscf_fqdns_resolved / pcscf_fqdns_total) * 100
# Total de servidores descobertos
pcscf_servers_total
Métricas de Saúde SIP OPTIONS:
# Total de servidores saudáveis em todos os FQDNs
pcscf_servers_healthy
# Total de servidores não saudáveis
pcscf_servers_unhealthy
# Calcular taxa de sucesso da verificação de saúde
(pcscf_servers_healthy / pcscf_servers_total) * 100
# Servidores saudáveis para um FQDN específico
pcscf_servers_healthy{fqdn="pcscf.mnc380.mcc313.3gppnetwork.org"}
# Alerta quando todos os servidores estão inativos
pcscf_servers_healthy == 0 AND pcscf_servers_total > 0
Exemplos de Alertas Prometheus:
# Alerta quando todos os servidores P-CSCF estão inativos
- alert: AllPCSCFServersDown
expr: pcscf_servers_healthy == 0 AND pcscf_servers_total > 0
for: 5m
labels:
severity: critical
annotations:
summary: "Todos os servidores P-CSCF estão não saudáveis"
description: "{{ $value }} servidores saudáveis (0) - todos falharam nas verificações SIP OPTIONS"
# Alerta quando mais de 50% dos servidores estão inativos
- alert: MajorityPCSCFServersDown
expr: (pcscf_servers_healthy / pcscf_servers_total) < 0.5
for: 5m
labels:
severity: warning
annotations:
summary: "Maioria dos servidores P-CSCF estão não saudáveis"
description: "Apenas {{ $value }}% dos servidores estão respondendo a SIP OPTIONS"
# Alerta sobre falhas de resolução DNS
- alert: PCSCFDNSResolutionFailed
expr: pcscf_fqdns_failed > 0
for: 5m
labels:
severity: warning
annotations:
summary: "Falhas de resolução DNS do P-CSCF"
description: "{{ $value }} FQDN(s) falhando ao resolver"
Registro
O monitor registra eventos-chave:
[info] Monitor do P-CSCF iniciado
[info] Registrando 2 FQDNs únicos do P-CSCF para monitoramento: ["pcscf.ims.example.com", "pcscf.enterprise.example.com"]
[info] Monitor do P-CSCF: Registrando FQDN pcscf.ims.example.com
[debug] Monitor do P-CSCF: Resolvido com sucesso pcscf.ims.example.com para 2 IPs
[warning] Monitor do P-CSCF: Falha ao resolver pcscf.enterprise.example.com: :nxdomain
[debug] Usando endereços do P-CSCF do FQDN pcscf.ims.example.com: [{10, 101, 2, 100}, {10, 101, 2, 101}]
Estratégia de Fallback
O sistema utiliza uma estratégia de fallback em três camadas para máxima confiabilidade:
Camada 1: Descoberta DNS (Preferida)
p_cscf_discovery_fqdn: "pcscf.ims.example.com"
- O monitor consulta o DNS e armazena os IPs resolvidos em cache
- A sessão usa IPs em cache se disponíveis
- Vantagem: Dinâmico, balanceado por carga, ciente da localização
Camada 2: PCO Estático Específico da Regra (Fallback)
pco: %{
p_cscf_ipv4_address_list: ["10.101.2.100", "10.101.2.101"]
}
- Usado se a descoberta DNS falhar ou não retornar IPs
- Configuração estática específica da regra
- Vantagem: Fallback específico da regra, previsível
Camada 3: Configuração Global do PCO (Último Recurso)
# Configuração global do pco
pco: %{
p_cscf_ipv4_address_list: ["10.101.2.146"]
}
- Usado se não houver configuração específica da regra e o DNS falhar
- Endereços P-CSCF padrão global
- Vantagem: Sempre disponível, previne falha de sessão
Exemplo de Lógica de Fallback
A sessão corresponde à regra "Tráfego IMS":
1. Tente a descoberta DNS para "pcscf.ims.example.com"
├─ Sucesso → Usar [10.101.2.100, 10.101.2.101] ✓
└─ Falha → Tente a próxima camada
2. Tente a sobrescrita do PCO da regra
├��� Configurado → Usar [10.101.2.100, 10.101.2.101] ✓
└─ Não configurado → Tente a próxima camada
3. Use a configuração global do PCO
└─ Usar [10.101.2.146] ✓ (Sempre tem sucesso)
Configuração DNS
Configuração do Servidor DNS
Configure o servidor DNS com registros SRV e A/AAAA para descoberta do P-CSCF:
; Registros SRV para P-CSCF (_sip._tcp prefix é consultado automaticamente)
_sip._tcp.pcscf.mnc380.mcc313.3gppnetwork.org. IN SRV 10 50 5060 pcscf1.example.com.
_sip._tcp.pcscf.mnc380.mcc313.3gppnetwork.org. IN SRV 20 50 5060 pcscf2.example.com.
; Registros A
pcscf1.example.com. IN A 10.101.2.100
pcscf2.example.com. IN A 10.101.2.101
Importante: O OmniPGW automaticamente adiciona _sip._tcp. ao FQDN configurado. Se você configurar p_cscf_discovery_fqdn: "pcscf.mnc380.mcc313.3gppnetwork.org", o sistema consultará _sip._tcp.pcscf.mnc380.mcc313.3gppnetwork.org.
Formato do Registro SRV
Os registros SRV seguem este formato:
_serviço._proto.domínio. IN SRV prioridade peso porta alvo.
- Prioridade: Valores mais baixos têm maior prioridade (10 antes de 20)
- Peso: Para balanceamento de carga entre a mesma prioridade (maior = mais tráfego)
- Porta: Porta SIP (tipicamente 5060 para TCP, 5060 para UDP)
- Alvo: Nome do host a ser resolvido para o endereço IP
Testando a Configuração DNS
# Consultar registros SRV (observe o prefixo _sip._tcp)
dig SRV _sip._tcp.pcscf.mnc380.mcc313.3gppnetwork.org @10.179.2.177
# Saída esperada:
# _sip._tcp.pcscf.mnc380.mcc313.3gppnetwork.org. 300 IN SRV 10 50 5060 pcscf1.example.com.
# Resolver nome do P-CSCF para IP
dig A pcscf1.example.com @10.179.2.177
# Saída esperada:
# pcscf1.example.com. 300 IN A 10.101.2.100
Solução de Problemas
Problema: FQDN Mostra Status "Falhou"
Sintomas:
- A interface da Web mostra status ✗ Falhou
- Erro:
:nxdomain,:timeoutou:no_naptr_records
Possíveis Causas:
- Servidor DNS não acessível
- FQDN não existe no DNS
- Nenhum registro NAPTR configurado
- Tempo limite do servidor DNS
Resolução:
# 1. Testar conectividade do servidor DNS
ping 10.179.2.177
# 2. Testar consulta NAPTR manualmente
dig NAPTR pcscf.mnc380.mcc313.3gppnetwork.org @10.179.2.177
# 3. Verificar logs do OmniPGW
grep "P-CSCF" /var/log/pgw_c.log
# 4. Verificar configuração
grep "p_cscf_discovery_dns_server" config/runtime.exs
# 5. Atualização manual na interface da web
# Clique no botão "Atualizar" ao lado do FQDN falhado
Problema: Nenhum IP Retornado
Sintomas:
- A interface da Web mostra "0 IPs"
- O status pode ser ✓ Resolvido ou ✗ Falhou
Possíveis Causas:
- Registros NAPTR existem, mas FQDNs de substituição não resolvem
- Campo de serviço não corresponde ao padrão IMS/SIP
- Registros A/AAAA ausentes
Resolução:
# Verificar campo de serviço do registro NAPTR
dig NAPTR pcscf.example.com @10.179.2.177
# Garantir que o serviço contenha "SIP" ou "IMS":
# CORRETO: "SIP+D2U", "x-3gpp-ims:sip"
# ERRADO: "HTTP", "FTP"
# Verificar se registros A/AAAA existem
dig pcscf1.example.com A @10.179.2.177
Problema: Sessões Usam o P-CSCF Errado
Sintomas:
- UE recebe endereços P-CSCF inesperados
- Fallback estático usado em vez de IPs descobertos
Possíveis Causas:
- Descoberta DNS falhou, mas o fallback está funcionando
- Correspondência de regra incorreta
- FQDN não registrado
Resolução:
# 1. Verificar página do Monitor do P-CSCF
# Verificar se o FQDN está registrado e resolvido
# 2. Verificar logs da sessão
grep "Usando endereços do P-CSCF do FQDN" /var/log/pgw_c.log
# 3. Verificar página de Seleção do UPF
# Verificar se a regra mostra o FQDN correto e o status
# 4. Testar correspondência de regra
# Criar sessão com APN específico e verificar qual regra corresponde
Problema: Alta Latência de Consulta DNS
Sintomas:
- Criação de sessão lenta
- Métricas mostram alta
pcscf_discovery_query_duration_seconds
Possíveis Causas:
- Problemas de desempenho do servidor DNS
- Latência de rede para o servidor DNS
- Tempo limite muito alto
Resolução:
# Reduzir tempo limite da consulta
pco: %{
p_cscf_discovery_timeout_ms: 2000 # Reduzir de 5000ms
}
# Considerar usar servidor DNS mais próximo
pco: %{
p_cscf_discovery_dns_server: "10.0.0.10" # DNS local
}
Melhores Práticas
1. Seleção do Servidor DNS
Use Servidor DNS Dedicado
pco: %{
# DNS dedicado para descoberta do P-CSCF (não o mesmo que o DNS do UE)
p_cscf_discovery_dns_server: "10.179.2.177",
# Servidores DNS do UE (fornecidos aos dispositivos móveis)
primary_dns_server_address: "8.8.8.8",
secondary_dns_server_address: "8.8.4.4"
}
Por quê?
- Separar preocupações: DNS do UE vs. DNS interno do IMS
- Políticas de acesso e segurança diferentes
- Escalabilidade e confiabilidade independentes
2. Sempre Configure Fallback Estático
%{
p_cscf_discovery_fqdn: "pcscf.ims.example.com", # Preferido
pco: %{
p_cscf_ipv4_address_list: ["10.101.2.100"] # Fallback necessário
}
}
Por quê?
- Garante que as sessões tenham sucesso mesmo se o DNS falhar
- Degradação elegante
- Atende aos requisitos de SLA
3. Use FQDNs Específicos por Tipo de Tráfego
rules: [
# IMS
%{
name: "IMS",
match_regex: "^ims",
p_cscf_discovery_fqdn: "pcscf.ims.mnc380.mcc313.3gppnetwork.org"
},
# Empresa
%{
name: "Empresa",
match_regex: "^enterprise",
p_cscf_discovery_fqdn: "pcscf.enterprise.example.com"
}
]
Por quê?
- Diferentes pools de P-CSCF por serviço
- Melhor distribuição de carga
- Roteamento específico do serviço
4. Monitore o Desempenho da Consulta DNS
# Alerta sobre alta latência de consulta do P-CSCF
alert: HighPCSCFQueryLatency
expr: histogram_quantile(0.95, pcscf_discovery_query_duration_seconds_bucket) > 2
for: 5m
labels:
severity: warning
annotations:
summary: "Consultas DNS do P-CSCF estão lentas (p95 > 2s)"
5. Verificações de Saúde DNS Regulares
- Interface da Web: Verifique a página do Monitor do P-CSCF diariamente
- Métricas: Monitore a métrica
pcscf_monitor_fqdns_failed - Logs: Fique atento a erros de DNS
- Testes: Verifique periodicamente se os registros DNS existem
6. Configure um Tempo Limite Apropriado
# Produção: Equilibrar confiabilidade vs. latência
pco: %{
p_cscf_discovery_timeout_ms: 5000 # 5 segundos
}
# Alto desempenho: Favor velocidade, confiar no fallback
pco: %{
p_cscf_discovery_timeout_ms: 2000 # 2 segundos
}
7. Use Redundância DNS
Configure DNS primário e secundário:
# DNS Primário do P-CSCF
pcscf.mnc380.mcc313.3gppnetwork.org. IN NAPTR 10 50 "s" "SIP+D2U" "" _sip._udp.pcscf1.example.com.
# DNS Secundário do P-CSCF
pcscf.mnc380.mcc313.3gppnetwork.org. IN NAPTR 20 50 "s" "SIP+D2U" "" _sip._udp.pcscf2.example.com.
Documentação Relacionada
- Configuração do PCO - Opções de Configuração de Protocolo, configurações de DNS e P-CSCF
- Guia de Configuração - Referência completa de configuração do OmniPGW
- Monitoramento - Métricas, registro e observabilidade
- Gerenciamento de Sessão - Ciclo de vida da sessão e entrega do PCO
- Interface PFCP - Comunicação da Função de Usuário
Voltar à Documentação Principal
Monitoramento do P-CSCF do OmniPGW - por Omnitouch Network Services