Pular para o conteúdo principal

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:

  1. SGW-C envia Create Session Request
  2. PGW-C aloca o endereço IP do UE do pool configurado
  3. PGW-C envia CCR-Initial ao PCRF com IMSI, APN, endereço IP
  4. PCRF responde com CCA-Initial contendo parâmetros de QoS:
    • Default-EPS-Bearer-QoS (QCI, ARP)
    • QoS-Information (ajustes de AMBR)
  5. 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
  6. PGW-C envia PFCP Session Establishment Request para PGW-U
  7. 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:

  1. 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)
  2. 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
  3. PGW-C envia PFCP Session Modification Request para adicionar PDRs/FARs/QERs
  4. PGW-C inicia Create Bearer Request para SGW-C
  5. 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:

  1. Remover bearer do estado da sessão
  2. Remover PDRs/FARs/QERs associados
  3. Enviar Delete Bearer Request para SGW-C (se iniciado pelo PCRF)
  4. 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-UPLINKul: OPEN, dl: CLOSEDApenas tráfego de uplink permitido
1 = ENABLED-DOWNLINKul: CLOSED, dl: OPENApenas tráfego de downlink permitido
2 = ENABLEDul: OPEN, dl: OPENAmbas as direções permitidas
3 = DISABLEDul: CLOSED, dl: CLOSEDNenhum tráfego permitido
4 = REMOVEDul: CLOSED, dl: CLOSEDBearer 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

  1. Acesse a Interface Web → página PGW Sessions
  2. Pesquise por IMSI (por exemplo, 999000123456789)
  3. Expanda os detalhes da sessão
  4. 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)
  5. 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:

  1. 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
  2. Verifique a troca CCR/CCA:

    • Acesse a Interface Web → página Logs
    • Pesquise por "Credit Control Answer"
    • Verifique se o AVP QoS-Information está presente no log da CCA
    • Verifique se há erros na CCA (Result-Code deve ser 2001 = SUCESSO)
  3. 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
  4. 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.exs sob ue.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