QoS & Gerenciamento de Bearer
Visão Geral
O PGW-C implementa um sistema de gerenciamento de bearer e QoS orientado por políticas que coordena três interfaces principais:
- Gx (Diameter) - Recebe decisões de política e parâmetros de QoS do PCRF
- S5/S8 (GTP-C) - Gerencia contextos de bearer com SGW-C
- Sxb (PFCP) - Programa regras de aplicação de QoS no PGW-U
Fluxo da Arquitetura
Conceitos Chave
- Sessão: Contém informações do UE, mapa de bearer, mapas de PDR/FAR/QER/BAR e AMBR
- Contexto de Bearer: Liga EBI (EPS Bearer ID) a PDRs, FARs e QERs específicos
- QER (Regra de Aplicação de QoS): Impõe limites de MBR/GBR e status de gate no plano do usuário
- Bearer Padrão: Sempre criado com a sessão PDN, fornece conectividade básica
- Bearer Dedicado: Criado dinamicamente com base na política do PCRF, fornece garantias específicas de QoS
Configuração
Importante: Política de QoS Dinâmica
Todos os parâmetros de QoS são recebidos dinamicamente do PCRF via interface Diameter Gx e definidos no PCRF (Veja OmniHSS para mais informações).
Os operadores configuram a conexão PCRF em config/runtime.exs:
config :pgw_c,
diameter: %{
listen_ip: "0.0.0.0",
host: "omni-pgw_c.epc.mnc999.mcc999.3gppnetwork.org",
realm: "epc.mnc999.mcc999.3gppnetwork.org",
peer_list: [
%{
host: "pcrf.epc.mnc999.mcc999.3gppnetwork.org",
realm: "epc.mnc999.mcc999.3gppnetwork.org",
ip: "192.168.1.100",
initiate_connection: true
}
]
}
Políticas de QoS, regras de cobrança e limites de largura de banda são configurados no PCRF, não nos arquivos de configuração do PGW-C.
Ciclo de Vida do Bearer
Criação do Bearer Padrão
O bearer padrão é criado durante o estabelecimento da sessão PDN:
Fluxo de Trabalho:
- SGW-C envia Create Session Request
- PGW-C aloca o endereço IP do UE do pool configurado
- PGW-C envia CCR-Initial ao PCRF com IMSI, APN, endereço IP
- PCRF responde com CCA-Initial contendo parâmetros de QoS:
- Default-EPS-Bearer-QoS (QCI, ARP)
- QoS-Information (ajustes de AMBR)
- PGW-C cria contexto de bearer com:
- IDs fixos: Downlink PDR=1, Uplink PDR=2, Downlink FAR=1, Uplink FAR=2, QER=1, BAR=1
- QER programado com MBR do QoS do bearer
- PGW-C envia PFCP Session Establishment Request para PGW-U
- PGW-C envia Create Session Response para SGW-C
Características do bearer padrão:
- Sempre existe durante a vida útil da sessão PDN
- Normalmente usa QCI 5 ou QCI 9 (não-GBR)
- EBI rastreado no estado da sessão
- Não pode ser excluído independentemente (excluí-lo termina a sessão)
Criação do Bearer Dedicado
Bearers dedicados são criados dinamicamente com base na política do PCRF:
Gatilho: Re-Auth Request (RAR) do PCRF com Charging-Rule-Install
Fluxo de Trabalho:
- PCRF envia RAR com Charging-Rule-Definition contendo:
- Charging-Rule-Name (identificador da regra de política)
- Flow-Information (filtros de pacotes)
- QoS-Information (QCI, MBR, GBR, ARP)
- Precedence (prioridade de correspondência da regra)
- PGW-C traduz a regra dinâmica para entidades PFCP:
- Cada entrada de Flow-Information → novo PDR com SDF Filter
- QoS-Information → novo QER com aplicação de MBR/GBR
- Flow-Description → regras de correspondência de IP 5-tuple
- PGW-C envia PFCP Session Modification Request para adicionar PDRs/FARs/QERs
- PGW-C inicia Create Bearer Request para SGW-C
- SGW-C responde com Create Bearer Response confirmando o estabelecimento
Exemplo de Charging-Rule-Definition:
Charging-Rule-Name: "video_streaming"
Flow-Information:
- Flow-Description: "permit in ip from any to 10.0.0.1 5000-6000"
Flow-Direction: 1 (downlink)
QoS-Information:
QoS-Class-Identifier: 7
Max-Requested-Bandwidth-UL: 5000000 (5 Mbps)
Max-Requested-Bandwidth-DL: 10000000 (10 Mbps)
Guaranteed-Bitrate-UL: 1000000 (1 Mbps)
Guaranteed-Bitrate-DL: 2000000 (2 Mbps)
Precedence: 100
Flow-Status: 2 (ENABLED)
Modificação do Bearer
A QoS do bearer pode ser modificada via:
- Gx RAR com a Charging-Rule-Definition atualizada
- PFCP Session Modification para atualizar QERs existentes (alterar bitrates), FARs (alterar encaminhamento) ou PDRs (alterar filtros de pacotes)
Exclusão do Bearer
Gatilhos:
- Delete Session Request (iniciado pelo SGW) - Exclui o bearer padrão e termina a sessão
- Re-Auth Request com Charging-Rule-Remove (iniciado pelo PCRF) - Exclui o bearer dedicado
Fluxo de Trabalho:
- Remover bearer do estado da sessão
- Remover PDRs/FARs/QERs associados
- Enviar Delete Bearer Request para SGW-C (se iniciado pelo PCRF)
- Enviar PFCP Session Modification (remover regras) ou Session Deletion (se bearer padrão)
Parâmetros de QoS
QCI (Identificador de Classe de QoS)
Fonte: PCRF via Gx QoS-Class-Identifier AVP
Valores Padrão:
- QCI 1: Voz Conversacional (GBR, 100ms de orçamento de atraso)
- QCI 2: Vídeo Conversacional (GBR, 150ms de orçamento de atraso)
- QCI 3: Jogos em Tempo Real (GBR, 50ms de orçamento de atraso)
- QCI 4: Vídeo Não Conversacional (GBR, 300ms de orçamento de atraso)
- QCI 5: Sinalização IMS (não-GBR, 100ms de orçamento de atraso) - Padrão para bearer padrão
- QCI 6: Vídeo (baseado em TCP), Streaming Ao Vivo (não-GBR, 300ms de orçamento de atraso)
- QCI 7: Voz, Jogos Interativos (não-GBR, 100ms de orçamento de atraso)
- QCI 8: Vídeo (baseado em TCP), por exemplo, YouTube (não-GBR, 300ms de orçamento de atraso)
- QCI 9: Internet Padrão (não-GBR, 300ms de orçamento de atraso)
Nota do Operador:
- O QCI é recebido do PCRF e sinalizado para SGW-C no Bearer-Level-QoS IE
- O PGW-C não aplica diretamente o comportamento do QCI - a aplicação real é via MBR/GBR nos QERs
- Valores de QCI mais baixos geralmente indicam maior prioridade
- O QCI determina o tratamento de encaminhamento de pacotes e a prioridade de agendamento
ARP (Prioridade de Alocação e Retenção)
Fonte: PCRF via Allocation-Retention-Priority grouped AVP
Componentes:
- Priority-Level: 1 (maior prioridade) a 15 (menor prioridade)
- Pre-emption-Capability: Este bearer pode preemptar bearers de menor prioridade?
- 0 = HABILITADO (pode preemptar outros)
- 1 = DESABILITADO (não pode preemptar)
- Pre-emption-Vulnerability: Este bearer pode ser preemptado por bearers de maior prioridade?
- 0 = HABILITADO (pode ser preemptado)
- 1 = DESABILITADO (não pode ser preemptado)
Valores Padrão:
- Priority-Level: 1
- Pre-emption-Capability: HABILITADO (0)
- Pre-emption-Vulnerability: DESABILITADO (1)
Nota do Operador:
- O ARP é sinalizado para SGW-C e, em última instância, para eNodeB
- Não é aplicado pelo PGW-C - a aplicação é tipicamente no eNodeB durante o controle de admissão de rádio
- Usado durante a congestão da rede para determinar quais bearers admitir ou descartar
- Crítico para serviços de emergência (nível de prioridade 1) e serviços de alto valor
MBR (Taxa Máxima de Bits)
Fonte: PCRF via Max-Requested-Bandwidth-UL e Max-Requested-Bandwidth-DL AVPs
Formato: Bytes por segundo (convertido para kbps internamente: bytes / 1000)
Aplicado a: Todos os bearers (padrão e dedicado)
Como funciona:
- O PGW-C cria QER com
mbr: %Bitrate{ul: kbps_ul, dl: kbps_dl} - QER enviado para PGW-U via PFCP
- PGW-U aplica limitação de taxa (policiamento de tráfego)
- Tráfego excessivo acima do MBR é descartado
Exemplo:
Max-Requested-Bandwidth-UL: 5000000 (5 Mbps)
Max-Requested-Bandwidth-DL: 10000000 (10 Mbps)
→ QER criado com mbr: {ul: 5000, dl: 10000} kbps
→ PGW-U descarta pacotes de uplink que excedem 5 Mbps
→ PGW-U descarta pacotes de downlink que excedem 10 Mbps
GBR (Taxa de Bits Garantida)
Fonte: PCRF via Guaranteed-Bitrate-UL e Guaranteed-Bitrate-DL AVPs
Formato: Bytes por segundo (convertido para kbps)
Aplicado a: Apenas bearers dedicados (bearers GBR)
Como funciona:
- Se GBR for especificado na Charging-Rule-Definition, o bearer é do tipo GBR
- O PGW-U aplica a garantia de taxa mínima via QER
- Requer agendamento adequado no eNodeB para reservar recursos de rádio
- Bearers GBR têm controle de admissão - podem ser rejeitados se os recursos não estiverem disponíveis
Exemplo:
Guaranteed-Bitrate-UL: 1000000 (1 Mbps)
Guaranteed-Bitrate-DL: 2000000 (2 Mbps)
→ QER criado com gbr: {ul: 1000, dl: 2000} kbps
→ A rede garante pelo menos 1 Mbps de uplink e 2 Mbps de downlink
→ Usado para VoIP, chamadas de vídeo, streaming ao vivo
Nota do Operador:
- GBR requer planejamento de capacidade de rede suficiente
- Sobrecarga de recursos GBR leva a falhas de admissão
- Monitorar o uso de GBR via contagem de sessões e métricas de bearers
AMBR (Taxa Máxima Agregada de Bits)
Fonte: PCRF via APN-Aggregate-Max-Bitrate-UL e APN-Aggregate-Max-Bitrate-DL AVPs
Escopo: Aplica-se a todos os bearers não-GBR para o APN (não por bearer)
Como funciona:
- AMBR é um limite agregado em todos os bearers não-GBR em uma sessão
- Enviado para SGW-C na Create Session Response
- A aplicação é tipicamente no eNodeB/SGW
- PGW-C armazena AMBR no estado da sessão e sinaliza para SGW-C
Exemplo:
APN-Aggregate-Max-Bitrate-UL: 50000000 (50 Mbps)
APN-Aggregate-Max-Bitrate-DL: 100000000 (100 Mbps)
→ Todos os bearers não-GBR combinados não podem exceder 50 Mbps de uplink / 100 Mbps de downlink
→ Bearers individuais limitados pelo seu próprio MBR
→ AMBR fornece um limite adicional geral por UE/APN
Nota do Operador:
- Definido via perfil de assinante no HSS/PCRF
- Usado para aplicar níveis de assinatura (por exemplo, plano de 10 Mbps vs plano de 100 Mbps)
- Não afeta bearers GBR
Status do Fluxo e Controle de Acesso
Mapeamento de Status do Fluxo (Gx) para Status do Gate (PFCP)
O PCRF controla se o tráfego é permitido via o AVP Flow-Status na Charging-Rule-Definition:
| Flow-Status (Gx) | Gate-Status (PFCP QER) | Significado |
|---|---|---|
| 0 = ENABLED-UPLINK | ul: OPEN, dl: CLOSED | Apenas tráfego de uplink permitido |
| 1 = ENABLED-DOWNLINK | ul: CLOSED, dl: OPEN | Apenas tráfego de downlink permitido |
| 2 = ENABLED | ul: OPEN, dl: OPEN | Ambas as direções permitidas |
| 3 = DISABLED | ul: CLOSED, dl: CLOSED | Nenhum tráfego permitido |
| 4 = REMOVED | ul: CLOSED, dl: CLOSED | Bearer sendo excluído |
Casos de uso:
- DISABLED: Usado para serviços estacionados ou exaustão de crédito (pacotes descartados, mas bearer mantido)
- ENABLED-UPLINK: Incomum, mas pode ser usado para serviços apenas de upload
- ENABLED-DOWNLINK: Serviços apenas de download ou cenários com crédito limitado
- ENABLED: Opera�o normal
Monitoramento & Observabilidade
Métricas do Prometheus
Métricas de nível de sessão:
session_registry_count # Bearers ativos (pares IMSI, EBI)
address_registry_count # IPs do UE alocados
charging_id_registry_count # Sessões de cobrança ativas
Métricas da interface Gx:
gx_inbound_messages_total{message_type="gx_RAR"} # Atualizações de política do PCRF
gx_outbound_messages_total{message_type="gx_CCR"} # Solicitações de política ao PCRF
gx_outbound_transaction_duration_bucket # Latência ao PCRF
Métricas da interface PFCP:
sxb_outbound_messages_total{message_type="pfcp_session_establishment_request"}
sxb_outbound_messages_total{message_type="pfcp_session_modification_request"}
sxb_outbound_transaction_duration_bucket
Métricas de criação de bearer:
s5s8_inbound_messages_total{message_type="create_session_request"} # Bearers padrão
s5s8_outbound_messages_total{message_type="create_bearer_request"} # Bearers dedicados
Monitoramento da Interface Web
Página de Sessões PGW (/pgw_sessions):
- Pesquisar por IMSI, endereço IP, MSISDN ou APN
- Visualizar bearers ativos por sessão
- Inspecionar parâmetros de QoS do bearer (QCI, MBR, GBR, AMBR)
- Atualização automática em tempo real (2 segundos)
Página Diameter (/diameter):
- Status de conectividade do par PCRF
- Contagem de sessões Gx
- Estado do par (conectado/desconectado)
Página de Logs (/logs):
- Streaming de logs em tempo real
- Filtrar por "Controle de Crédito" para trocas CCR/CCA
- Filtrar por "Re-Auth" para eventos RAR (mudanças de política)
- Filtrar por "PFCP" para eventos de programação do plano do usuário
Mensagens de Log Chave
[debug] Sending Credit Control Request: ... # CCR para PCRF
[debug] Handling Credit Control Answer: ... # CCA do PCRF (contém QoS)
[debug] Handling Re-Auth Request # RAR do PCRF (mudança de política)
[debug] Sending Session Establishment Request # PFCP para PGW-U (programar QERs)
[debug] Sending Session Modification Request # PFCP para PGW-U (atualizar QERs)
Tarefas Operacionais
Verificar QoS Aplicada à Sessão
- Acesse a Interface Web → página PGW Sessions
- Pesquise por IMSI (por exemplo,
999000123456789) - Expanda os detalhes da sessão
- Verifique a seção qer_map:
qer_id: 1
gate_status: {ul: OPEN, dl: OPEN}
mbr: {ul: 50000, dl: 100000} # kbps
gbr: {ul: 10000, dl: 20000} # kbps (ou nil para não-GBR) - Verifique se os valores correspondem à política esperada do PCRF
Solucionar Problemas de QoS Ausente
Sintoma: Sessão criada, mas QoS não aplicada
Passos:
-
Verifique a conectividade do PCRF:
- Acesse a Interface Web → página Diameter
- Verifique se o status do par PCRF = "conectado"
- Se desconectado, verifique a conectividade da rede e a configuração do Diameter
-
Verifique a troca CCR/CCA:
- Acesse a Interface Web → página Logs
- Pesquise por "Credit Control Answer"
- Verifique se o AVP
QoS-Informationestá presente no log da CCA - Verifique se há erros na CCA (Result-Code deve ser 2001 = SUCESSO)
-
Verifique a programação do PFCP:
- Pesquise logs por "PFCP Session Establishment Request"
- Verifique se o QER está incluído na mensagem
- Verifique os logs do PGW-U para erros de processamento do PFCP
-
Verifique a configuração da política do PCRF:
- Verifique o perfil do assinante no PCRF
- Confirme se as regras de política específicas do APN existem
- Verifique os logs do PCRF para erros de avaliação de política
Monitorar Taxa de Criação de Bearer
Consultas do Prometheus:
# Taxa de criação de bearer padrão (sessões/segundo)
rate(s5s8_inbound_messages_total{message_type="create_session_request"}[5m])
# Taxa de criação de bearer dedicado
rate(s5s8_outbound_messages_total{message_type="create_bearer_request"}[5m])
# Taxa de atualização de política do PCRF
rate(gx_inbound_messages_total{message_type="gx_RAR"}[5m])
Planejamento de Capacidade
Métricas chave a serem monitoradas:
# Utilização do endereço IP do UE (porcentagem)
(address_registry_count / <configured_pool_size>) * 100
# Contagem de bearers ativos
session_registry_count
# Latência da consulta do PCRF (P95)
histogram_quantile(0.95, gx_outbound_transaction_duration_bucket)
Limites de capacidade:
- Tamanho do pool de endereços: configurado em
config/runtime.exssobue.subnet_map - Espaço TEID: 32 bits (4 bilhões de identificadores únicos, gerenciados automaticamente)
- Sessões concorrentes: tipicamente limitadas pelo tamanho do pool de endereços
Diretrizes de planejamento:
- Monitore a utilização de endereços IP - amplie o pool antes de exceder 80%
- Monitore a latência do PCRF - alta latência impacta o tempo de configuração da sessão
- Monitore a taxa de criação de bearers dedicados - indica a complexidade da política
Documentação Relacionada
- Gerenciamento de Sessão - Ciclo de vida da sessão PDN
- Interface Diameter Gx - Detalhes do protocolo de política do PCRF
- Interface PFCP - Programação do plano do usuário
- Guia de Configuração - Configuração do sistema
- Guia de Monitoramento - Métricas e observabilidade