PCRF (Função de Regras de Política e Cobrança)
Visão Geral
O HSS inclui um PCRF (Função de Regras de Política e Cobrança) embutido que fornece controle de política e regras de cobrança para sessões de dados móveis. O PCRF controla políticas de Qualidade de Serviço (QoS), alocação de largura de banda e regras de cobrança para portadoras padrão e dedicadas em redes LTE.
Principais Capacidades
- Interface Gx: Controle de política para PGW/PCEF (Gateway de Rede de Dados por Pacote / Função de Aplicação de Política e Cobrança)
- Interface Rx: Autorização e QoS para fluxos de mídia IMS (Subsistema Multimídia IP)
- Gerenciamento Dinâmico de Políticas: Atualizações de políticas em tempo real via Re-Auth Requests (RAR)
- Suporte a VoLTE: Criação de portadora dedicada para chamadas de voz com QoS garantido
- Regras de Cobrança: Definir comportamento de cobrança e perfis de velocidade usando Traffic Flow Templates (TFTs)
- REST API: Controle programático da aplicação de políticas e gerenciamento de regras
Arquitetura
Interfaces Diameter
| Interface | ID da Aplicação | Par | Propósito |
|---|---|---|---|
| Gx | 16.777.238 | PGW (PCEF) | Gerenciamento de sessão PDN, aplicação de QoS, regras de cobrança |
| Rx | 16.777.236 | P-CSCF (AF) | Autorização de mídia IMS, reserva de largura de banda |
Gerenciamento de Estado da Sessão
O PCRF mantém o estado da sessão para conexões PDN ativas e chamadas VoLTE:
Interface Gx
Operações Suportadas
1. Solicitação de Controle de Crédito - Inicial (CCR-I)
Gatilho: PGW cria nova conexão PDN para o assinante
AVPs de Solicitação:
- Session-Id
- Origin-Host, Origin-Realm
- Subscription-Id (contém IMSI)
- Called-Station-Id (nome APN)
- IP-CAN-Type (tipo de Rede de Acesso à Conectividade IP)
- RAT-Type (Tecnologia de Acesso Rádio)
- Framed-IP-Address (endereço IP do UE)
Ações do PCRF:
- Procurar assinante pelo IMSI
- Recuperar perfil APN e configuração de QoS
- Criar entrada de rastreamento de sessão
- Construir políticas de QoS a partir do perfil APN
AVPs de Resposta:
- Result-Code: 2001 (DIAMETER_SUCCESS)
- QoS-Information (limites de largura de banda agregada do APN)
- Default-EPS-Bearer-QoS (QCI, ARP, prioridade)
- Bearer-Control-Mode
2. Solicitação de Controle de Crédito - Atualização (CCR-U)
Gatilho: PGW relata mudanças na sessão (atualização de localização, mudança de RAT, etc.)
Ações do PCRF:
- Localizar sessão existente pelo ID da sessão
- Atualizar parâmetros da sessão (tipo de RAT, localização, etc.)
- Retornar políticas atualizadas, se necessário
Resposta: Result-Code 2001 com atualizações de política opcionais
3. Solicitação de Controle de Crédito - Terminar (CCR-T)
Gatilho: PGW termina a conexão PDN
A��ões do PCRF:
- Localizar sessão pelo ID da sessão
- Excluir sessão e registros de chamadas associados
- Confirmar a terminação
Resposta: Result-Code 2001
4. Re-Auth Request (RAR)
Direção: PCRF → PGW (HSS inicia)
Gatilho:
- Configuração de chamada IMS (Rx AAR aciona Gx RAR)
- Desconexão de chamada IMS (Rx STR aciona Gx RAR)
- Reautenticação manual via REST API
AVPs RAR:
- Session-Id (ID da sessão PGW)
- Auth-Application-Id: 16.777.238
- Re-Auth-Request-Type (0 = Apenas Autorizar)
- Charging-Rule-Install/Remove
- QoS-Information (para portadoras dedicadas)
Ações do PGW: Criar/modificar/excluir portadoras dedicadas com base nas regras de cobrança
Regras de Cobrança e Traffic Flow Templates
O PCRF suporta a definição de regras de cobrança com Traffic Flow Templates (TFTs) para controlar:
- Cobrança específica de serviço - Tarifas diferentes para vídeo, jogos, redes sociais, etc.
- Perfis de velocidade - Limitar ou priorizar tráfego que corresponda a padrões específicos
- Políticas baseadas em uso - Aplicar diferentes QoS com base no tipo de tráfego ou destino
As regras de cobrança podem ser:
- Instaladas dinamicamente via Gx RAR com base na detecção de aplicativos
- Pré-definidas e acionadas por condições específicas (hora do dia, localização, cota)
- Associadas a TFTs usando regras de filtro de pacotes (5-tuple: protocolo, IP de origem/destino, porta de origem/destino)
Casos de Uso Comuns:
- Zero-rating - Acesso ilimitado a serviços específicos (Spotify, WhatsApp, Facebook) sem consumir cota de dados
- Acesso pós-cota - Permitir portal de autoatendimento e sites de suporte mesmo após o assinante esgotar a cota de dados
- Velocidade em camadas - Alta velocidade para serviços premium, limitada para conteúdo padrão
- Políticas baseadas em tempo - Streaming ilimitado fora do pico, priorização em horários de pico
- Políticas de roaming - Cobrança diferente para uso de dados internacional vs doméstico
- SLAs empresariais - QoS garantido para aplicativos críticos para os negócios
Estrutura da Política de QoS
QoS da Portadora Padrão (do perfil APN):
{
"QoS-Class-Identifier": 9, // QCI (9 = portadora padrão)
"APN-Aggregate-Max-Bitrate-UL": 50000, // kbps
"APN-Aggregate-Max-Bitrate-DL": 100000, // kbps
"Allocation-Retention-Priority": {
"Priority-Level": 8,
"Pre-emption-Capability": 1, // Pode ser preemptado
"Pre-emption-Vulnerability": 1 // Pode ser preemptado
}
}
QoS da Portadora Dedicada (para VoLTE):
{
"QoS-Class-Identifier": 1, // QCI 1 = Voz Conversacional
"Max-Requested-Bandwidth-UL": 128000, // bps
"Max-Requested-Bandwidth-DL": 128000, // bps
"Guaranteed-Bitrate-UL": 128000,
"Guaranteed-Bitrate-DL": 128000
}
Interface Rx
Operações Suportadas
1. AA Request (AAR) / AA Answer (AAA)
Gatilho: P-CSCF solicita autorização para sessão de mídia IMS (configuração de chamada VoLTE)
AVPs de Solicitação:
- Session-Id (identificador da sessão P-CSCF)
- Subscription-Id (IMSI ou SIP URI)
- Media-Component-Description
- Media-Type (áudio, vídeo)
- Max-Requested-Bandwidth-UL/DL
- Codec-Data
- Flow-Description (filtros de pacotes 5-tuple)
- AF-Application-Identifier
Ações do PCRF:
- Procurar assinante pelo IMSI ou SIP URI
- Encontrar sessão IMS ativa
- Extrair parâmetros de mídia (codec, largura de banda, regras de fluxo)
- Criar entrada de rastreamento de chamada
- Acionar Gx RAR para PGW para criar portadora dedicada
- Aguardar resposta Gx RAA
- Retornar Rx AAA com resultado da autorização
AVPs de Resposta:
- Result-Code: 2001 (sucesso) ou 5063 (serviço não autorizado)
2. Solicitação de Término de Sessão (STR) / Resposta de Término de Sessão (STA)
Gatilho: P-CSCF termina sessão IMS (desconexão da chamada)
Ações do PCRF:
- Localizar sessão de chamada pelo ID da sessão P-CSCF
- Acionar Gx RAR para PGW para remover portadora dedicada
- Excluir entrada de rastreamento de chamada
- Retornar confirmação STA
Resposta: Result-Code 2001
Fluxos de Mensagens Comuns
Fluxo 1: Estabelecimento de Sessão PDN
Fluxo 2: Configuração de Chamada VoLTE (Rx AAR → Gx RAR)
Fluxo 3: Desconexão de Chamada VoLTE (Rx STR → Gx RAR)
Fluxo 4: Atualização da Sessão PDN
Fluxo 5: Término da Sessão PDN
Fluxo 6: Reautenticação Manual via REST API
REST API
Endpoint de Reautenticação PCRF
Endpoint: POST /api/operation/pcrf_re_auth
Propósito: Acionar manualmente a Solicitação de Reautenticação Gx para atualizar políticas
Quando Usar: Este endpoint manual é tipicamente usado para solução de problemas ou forçar a atualização de políticas em assinantes específicos. Para atualizações de políticas de rotina (mudança de perfis de QoS do APN), o sistema aciona automaticamente reautenticações para todas as sessões afetadas - nenhuma ação manual é necessária.
Corpo da Solicitação:
{
"imsi": "999999876543210",
"apn": "ims"
}
Resposta de Sucesso (HTTP 200):
{
"data": "Gx Re-Auth Request para 999999876543210 enviado para pgw.epc.mnc999.mcc999.3gppnetwork.org, Result-Code: 2001"
}
Resposta de Erro (HTTP 400):
{
"error": "Não foi possível enviar Re-Auth Request para 999999876543210 no APN ims, nenhuma sessão PDN ativa encontrada"
}
API de Configuração de Políticas
O PCRF recupera políticas de QoS das configurações de APN armazenadas no banco de dados. Essas políticas podem ser criadas e gerenciadas via REST API.
Aplicação Automática de Políticas: Quando você atualiza um perfil de QoS do APN (por exemplo, altera limites de largura de banda ou QCI), o sistema automaticamente envia Solicitações de Reautenticação Gx (RAR) para todos os PGWs com sessões PDN ativas usando esse APN. Isso garante que as mudanças de política sejam aplicadas imediatamente a todos os assinantes conectados sem intervenção manual.
Arquitetura da Política
As políticas são definidas através de uma estrutura de três camadas:
Identificador APN → Perfil QoS do APN → Perfil APN
↓ ↓ ↓
"internet" QCI, AMBR, ARP Liga ambos
1. Criar Identificador APN
Defina o nome do APN e o suporte à versão IP.
Endpoint: POST /api/apn/identifier
Corpo da Solicitação:
{
"apn_identifier": {
"apn": "internet",
"ip_version": "ipv4v6"
}
}
Opções de Versão IP:
"ipv4"- Apenas IPv4"ipv6"- Apenas IPv6"ipv4v6"- Pilha dupla (tanto IPv4 quanto IPv6)"ipv4_or_ipv6"- A rede decide (ou IPv4 ou IPv6)
Resposta (HTTP 201):
{
"data": {
"id": 1,
"apn": "internet",
"ip_version": "ipv4v6"
}
}
Validação:
apn: Obrigatório, 1-254 caracteres, únicoip_version: Obrigatório, deve ser uma das quatro opções acima
Listar Identificadores APN: GET /api/apn/identifier
2. Criar Perfil QoS do APN
Defina os parâmetros de QoS (largura de banda, QCI, prioridade).
Endpoint: POST /api/apn/qos_profile
Corpo da Solicitação:
{
"apn_qos_profile": {
"name": "Melhor Esforço Internet",
"qci": 9,
"allocation_retention_priority": 8,
"apn_ambr_dl_kbps": 100000,
"apn_ambr_ul_kbps": 50000,
"pre_emption_capability": false,
"pre_emption_vulnerability": true
}
}
Parâmetros de QoS:
| Campo | Tipo | Faixa | Descrição |
|---|---|---|---|
name | string | 1-254 chars | Nome do perfil (único) |
qci | integer | 1-254 | Identificador de Classe QoS (1-4 = GBR, 5-9 = Non-GBR) |
allocation_retention_priority | integer | 1-15 | Nível ARP (1 = maior prioridade) |
apn_ambr_dl_kbps | integer | 1-4.294.967.293 | Taxa Máxima Agregada de Bit Rate Downlink do APN (kbps) |
apn_ambr_ul_kbps | integer | 1-4.294.967.293 | Taxa Máxima Agregada de Bit Rate Uplink do APN (kbps) |
pre_emption_capability | boolean | true/false | Pode preemptar portadoras de menor prioridade |
pre_emption_vulnerability | boolean | true/false | Pode ser preemptado por portadoras de maior prioridade |
Valores Comuns de QCI:
1- Voz Conversacional (VoLTE) - GBR, 100ms de orçamento de atraso2- Vídeo Conversacional - GBR, 150ms de orçamento de atraso5- Sinalização IMS - Non-GBR, 100ms de orçamento de atraso9- Portadora Padrão (Internet) - Non-GBR, 300ms de orçamento de atraso
Resposta (HTTP 201):
{
"data": {
"id": 1,
"name": "Melhor Esforço Internet",
"qci": 9,
"allocation_retention_priority": 8,
"apn_ambr_dl_kbps": 100000,
"apn_ambr_ul_kbps": 50000,
"pre_emption_capability": false,
"pre_emption_vulnerability": true
}
}
Listar Perfis de QoS: GET /api/apn/qos_profile
3. Criar Perfil APN
Vincule o identificador APN a um perfil de QoS.
Endpoint: POST /api/apn/profile
Corpo da Solicitação:
{
"apn_profile": {
"name": "Perfil APN Internet",
"apn_identifier_id": 1,
"apn_qos_profile_id": 1
}
}
Campos:
name: Nome do perfil (único), usado para referênciaapn_identifier_id: ID do Criar Identificador APNapn_qos_profile_id: ID do Criar Perfil QoS do APN
Resposta (HTTP 201):
{
"data": {
"id": 1,
"name": "Perfil APN Internet",
"apn_identifier_id": 1,
"apn_qos_profile_id": 1
}
}
Restrições:
apn_identifier_ideapn_qos_profile_iddevem referenciar registros existentes- Cada combinação de identificador APN e perfil de QoS deve ser única
Listar Perfis APN: GET /api/apn/profile
Exemplo Completo de Configuração de Políticas
Passo 1: Criar Política APN IMS (VoLTE)
# 1. Criar Identificador APN
curl -X POST https://hss.example.com:8443/api/apn/identifier \
-H "Content-Type: application/json" \
-d '{
"apn_identifier": {
"apn": "ims",
"ip_version": "ipv4v6"
}
}'
# Resposta: {"data": {"id": 2, ...}}
# 2. Criar Perfil QoS (Sinalização IMS)
curl -X POST https://hss.example.com:8443/api/apn/qos_profile \
-H "Content-Type: application/json" \
-d '{
"apn_qos_profile": {
"name": "QoS de Sinalização IMS",
"qci": 5,
"allocation_retention_priority": 2,
"apn_ambr_dl_kbps": 5000,
"apn_ambr_ul_kbps": 5000,
"pre_emption_capability": true,
"pre_emption_vulnerability": false
}
}'
# Resposta: {"data": {"id": 2, ...}}
# 3. Criar Perfil APN
curl -X POST https://hss.example.com:8443/api/apn/profile \
-H "Content-Type: application/json" \
-d '{
"apn_profile": {
"name": "Perfil APN IMS",
"apn_identifier_id": 2,
"apn_qos_profile_id": 2
}
}'
# Resposta: {"data": {"id": 2, ...}}
Passo 2: Atribuir ao Assinante
Uma vez criado, o perfil APN é atribuído a assinantes via perfis EPC. Veja Referência da API para vincular perfis APN a assinantes.
Atualização e Exclusão de Políticas
Atualizar Perfil QoS:
PATCH /api/apn/qos_profile/{id}
PUT /api/apn/qos_profile/{id}
Exemplo - Aumentar Largura de Banda para Todos os Usuários:
# Atualizar perfil QoS ID 1 para aumentar largura de banda
curl -X PATCH https://hss.example.com:8443/api/apn/qos_profile/1 \
-H "Content-Type: application/json" \
-d '{
"apn_qos_profile": {
"apn_ambr_dl_kbps": 150000,
"apn_ambr_ul_kbps": 75000
}
}'
O que Acontece Automaticamente:
- O perfil de QoS é atualizado no banco de dados
- O sistema identifica todas as sessões PDN ativas usando APNs vinculados a este perfil de QoS
- Para cada sessão ativa, um Gx RAR é enviado ao PGW correspondente
- Os PGWs atualizam a QoS da portadora para refletir os novos limites de largura de banda
- Todos os assinantes conectados recebem imediatamente a política atualizada
Exemplo de Cenário: Se 100 assinantes estão atualmente conectados na APN "internet" usando o perfil de QoS ID 1, todos os 100 terão seus limites de largura de banda atualizados para 150 Mbps de download / 75 Mbps de upload dentro de segundos após a conclusão da chamada da API.
Nota: Quando você atualiza um perfil de QoS do APN, o sistema aciona automaticamente reautenticação para todas as sessões PDN ativas usando esse APN, aplicando as novas políticas imediatamente aos assinantes conectados. Nenhuma reautenticação manual é necessária.
Excluir Recursos:
DELETE /api/apn/identifier/{id}
DELETE /api/apn/qos_profile/{id}
DELETE /api/apn/profile/{id}
Restrições de Exclusão:
- Não é possível excluir identificadores APN ou perfis de QoS referenciados por perfis APN
- Não é possível excluir perfis APN atribuídos a assinantes ativos
Modelos de Políticas
Internet de Alta Velocidade (100 Mbps de download / 50 Mbps de upload):
{
"apn_qos_profile": {
"name": "Internet de Alta Velocidade",
"qci": 9,
"allocation_retention_priority": 8,
"apn_ambr_dl_kbps": 100000,
"apn_ambr_ul_kbps": 50000,
"pre_emption_capability": false,
"pre_emption_vulnerability": true
}
}
Internet Premium (500 Mbps de download / 100 Mbps de upload):
{
"apn_qos_profile": {
"name": "Internet Premium",
"qci": 8,
"allocation_retention_priority": 5,
"apn_ambr_dl_kbps": 500000,
"apn_ambr_ul_kbps": 100000,
"pre_emption_capability": true,
"pre_emption_vulnerability": false
}
}
IoT/M2M (Baixa Largura de Banda):
{
"apn_qos_profile": {
"name": "IoT M2M",
"qci": 9,
"allocation_retention_priority": 10,
"apn_ambr_dl_kbps": 1024,
"apn_ambr_ul_kbps": 512,
"pre_emption_capability": false,
"pre_emption_vulnerability": true
}
}
Serviços de Emergência (Maior Prioridade):
{
"apn_qos_profile": {
"name": "APN de Emergência",
"qci": 5,
"allocation_retention_priority": 1,
"apn_ambr_dl_kbps": 10000,
"apn_ambr_ul_kbps": 10000,
"pre_emption_capability": true,
"pre_emption_vulnerability": false
}
}
Configuração
Configuração do Serviço Diameter
Aplicação Gx (config/runtime.exs):
%{
application_name: :gx,
application_dictionary: :diameter_gen_3gpp_gx,
vendor_specific_application_ids: [
%{vendor_id: 10415, auth_application_id: 16_777_238}
]
}
Aplicação Rx (config/runtime.exs):
%{
application_name: :rx,
application_dictionary: :diameter_gen_3gpp_rx,
vendor_specific_application_ids: [
%{vendor_id: 10415, auth_application_id: 16_777_236}
]
}
Parâmetros de QoS
Os parâmetros de QoS são extraídos de:
-
Portadora Padrão: Configuração do perfil APN no banco de dados
apn_qos_profile.qci(Identificador de Classe QoS)apn_qos_profile.apn_ambr_ul_kbps(Taxa Máxima Agregada de Bit Rate Uplink)apn_qos_profile.apn_ambr_dl_kbps(Taxa Máxima Agregada de Bit Rate Downlink)apn_qos_profile.priority_level(Prioridade de Retenção de Alocação)
-
Portadora Dedicada: Extraída da Descrição do Componente de Mídia Rx AAR
- QCI: 1 (Voz Conversacional)
- Bitrate Garantido: Dos AVPs de Largura de Banda Máxima Solicitada
- Filtros de fluxo: Dos AVPs de Descrição de Fluxo
Tratamento de Erros
| Código de Resultado | Tipo | Significado | Causa |
|---|---|---|---|
| 2001 | Sucesso | DIAMETER_SUCCESS | Solicitação processada com sucesso |
| 5001 | Experimental | Usuário não encontrado | IMSI não está no banco de dados de assinantes |
| 5002 | Experimental | Sessão não encontrada | Sessão PDN não existe para atualização/terminação |
| 5063 | Experimental | Serviço não autorizado | Autorização de mídia IMS negada |
Detalhes da Implementação
Gerenciamento de Sessão
O PCRF rastreia:
- Sessões PDN Ativas - Uma por APN, por assinante
- Chamadas VoLTE - Múltiplas chamadas por sessão IMS (suporta chamadas em conferência)
- Políticas de QoS - Aplicadas dinamicamente com base na configuração do APN
- Regras de Cobrança - Templates de fluxo de tráfego e políticas específicas de serviço
Recursos Avançados de Política
O PCRF suporta controle avançado de políticas, incluindo:
- Instalação/remoção de regras de cobrança via interface Gx
- Correspondência de Traffic Flow Template (TFT) para diferenciação de serviços
- Perfis de velocidade dinâmicos com base em aplicativo ou tipo de tráfego
- Políticas conscientes de serviço acionadas por condições de rede ou comportamento do assinante
Entre em contato com seu administrador de sistema para obter informações sobre como configurar regras de cobrança avançadas e políticas baseadas em TFT.
Documentação Relacionada
- Protocolos Diameter - Especificações detalhadas de protocolo
- Referência da API - Documentação completa da API
- Arquitetura - Arquitetura geral do HSS
- Mapeamento de Dados - Mapeamentos de banco de dados para AVPs Diameter