Guía de Operaciones de OmniPCF
Descripción General
OmniPCF implementa la Función de Control de Políticas (PCF) del núcleo 5G. Proporciona dos servicios SBI: Npcf_SMPolicyControl (TS 29.512) para asociaciones de políticas de gestión de sesión, y Npcf_AMPolicyControl (TS 29.507) para asociaciones de políticas de acceso y movilidad. El PCF consulta opcionalmente el UDR para datos de políticas por suscriptor (QoS de suscripción, UE-AMBR) y construye decisiones de Control de Políticas y Carga (PCC) que se devuelven al SMF y AMF respectivamente.
El contexto de políticas se mantiene en proceso. Todas las reglas PCC generadas son reglas por defecto que permiten todo; las reglas dinámicas, específicas de suscriptores o de flujo GBR no son compatibles en la versión actual.
Arquitectura
Referencias de Rol y Especificación 3GPP
| Especificación | Relevancia |
|---|---|
| TS 23.501 | Arquitectura del sistema — rol del PCF, marco PCC |
| TS 23.503 | Arquitectura de control de políticas y carga |
| TS 29.507 | API Npcf_AMPolicyControl |
| TS 29.512 | API Npcf_SMPolicyControl |
| TS 29.519 | Nudr_DataRepository — recurso de datos de políticas (consultado por el PCF) |
| TS 23.502 | Procedimientos — referencias a la creación de asociaciones de políticas durante el establecimiento de sesión PDU y registro |
Puntos Finales SBI
Todos los puntos finales se sirven bajo la URL base {sbi_scheme}://{sbi_addr}:{sbi_port}.
| Método | Ruta | Servicio | Descripción | Espec |
|---|---|---|---|---|
| POST | /npcf-smpolicycontrol/v1/sm-policies | Npcf_SMPolicyControl | Crear Asociación de Política SM | TS 29.512 4.2.2.2 |
| POST | /npcf-smpolicycontrol/v1/sm-policies/{smPolicyId}/update | Npcf_SMPolicyControl | Actualizar Asociación de Política SM | TS 29.512 4.2.3.2 |
| POST | /npcf-smpolicycontrol/v1/sm-policies/{smPolicyId}/delete | Npcf_SMPolicyControl | Eliminar Asociación de Política SM | TS 29.512 4.2.4.2 |
| POST | /npcf-am-policy-control/v1/policies | Npcf_AMPolicyControl | Crear Asociación de Política AM | TS 29.507 4.2.2.2 |
| DELETE | /npcf-am-policy-control/v1/policies/{polAssoId} | Npcf_AMPolicyControl | Eliminar Asociación de Política AM | TS 29.507 4.2.4.2 |
Resumen de Solicitud / Respuesta
Crear Asociación de Política SM — campos de solicitud obligatorios: supi, pduSessionId, pduSessionType, dnn, notificationUri, sliceInfo, y al menos uno de ipv4Address o ipv6AddressPrefix. Devuelve 201 Created con SmPolicyDecision y encabezado Location.
Actualizar Asociación de Política SM — el SMF envía SmPolicyUpdateContextData. El PCF actualiza el contexto almacenado con cualquier campo proporcionado de ipv4Address, ipv6AddressPrefix, o ratType y devuelve un SmPolicyDecision actualizado. No se realiza el procesamiento de informes de reglas (ver PCF-M3).
Eliminar Asociación de Política SM — el cuerpo es SmPolicyDeleteData (ignorando más allá del registro). Devuelve 204 No Content.
Crear Asociación de Política AM — campos de solicitud obligatorios: supi, notificationUri. Los campos opcionales incluyen guami, accessType, ratType, allowedSnssais, ueAmbr, suppFeat. Devuelve 201 Created con PolicyAssociation y encabezado Location.
Eliminar Asociación de Política AM — no se requiere cuerpo de solicitud. Devuelve 204 No Content.
Referencia de Configuración
La configuración se lee de la clave de entorno de la aplicación :omnipcf.
config :omnipcf,
sbi_scheme: "http",
sbi_addr: "127.0.0.13",
sbi_port: 7777,
nrf_uri: "http://127.0.0.10:7777",
udr_uri: "http://127.0.0.12:7777",
mcc: "999",
mnc: "70",
heartbeat_interval: 10_000
Tabla de Parámetros
| Parámetro | Tipo | Por Defecto | Descripción |
|---|---|---|---|
sbi_scheme | cadena | "http" | Esquema HTTP para el socket de escucha SBI (http o https) |
sbi_addr | cadena | "127.0.0.13" | Dirección IP a la que se vincula el servidor HTTP SBI |
sbi_port | entero | 7777 | Puerto TCP en el que escucha el servidor HTTP SBI |
nrf_uri | cadena | "http://127.0.0.10:7777" | URI base del NRF. Usado solo para registro de NF y latido |
udr_uri | cadena | "http://127.0.0.12:7777" | URI base del UDR. Consultado para datos de políticas AM (/nudr-dr/v1/policy-data/ues/{ueId}/am-data) y datos de políticas SM (/nudr-dr/v1/policy-data/ues/{ueId}/sm-data). Si no está disponible, el PCF procede con la política por defecto |
mcc | cadena | "999" | Código de País Móvil del PLMN que presta servicio |
mnc | cadena | "70" | Código de Red Móvil del PLMN que presta servicio |
heartbeat_interval | entero (ms) | 10000 | Intervalo en milisegundos entre solicitudes de latido del NRF |
hss_api_base_url | cadena | "https://127.0.0.1:8443" | URL base de una API HSS heredada. Presente en la configuración pero no utilizada por procedimientos de políticas activos |
Procedimientos Clave
Creación de Asociación de Política SM (TS 29.512 Sección 4.2.2)
Actualización de Asociación de Política SM (TS 29.512 Sección 4.2.3)
Nota: Los informes de reglas dentro de SmPolicyUpdateContextData no se procesan (PCF-M3). No se realizan actualizaciones de políticas basadas en disparadores (PCF-M4). El PCF no notifica proactivamente al SMF sobre cambios en las políticas (PCF-M7).
Creación de Asociación de Política AM (TS 29.507 Sección 4.2.2)
Estructura de SmPolicyDecision
El PCF siempre devuelve una decisión por defecto que permite todo. La estructura devuelta por TS 29.512 Tabla 5.6.2.3-1:
SmPolicyDecision
sessRules:
SessRule-{dnn}:
sessRuleId: "SessRule-{dnn}"
authSessAmbr: {uplink, downlink} <- del UDR o por defecto 1000 Kbps
authDefQos: {5qi: 9, arp: {...}} <- del UDR o 5QI=9 ARP-priority=8
pccRules:
PccRule-{dnn}-default:
pccRuleId: "PccRule-{dnn}-default"
precedence: 255
flowInfos: [permit out ip from any to {ueIp},
permit out ip from {ueIp} to any]
refQosData: ["QosData-{dnn}"]
refTcData: ["TcData-{dnn}"]
qosDecs:
QosData-{dnn}:
5qi: 9
arp: {priorityLevel: 8, preemptCap: NOT_PREEMPT, preemptVuln: PREEMPTABLE}
maxbrUl / maxbrDl: valores de AMBR de sesión
traffContDecs:
TcData-{dnn}:
flowStatus: ENABLED
suppFeat: reflejado de la solicitud (ver PCF-M6)
Métricas de Prometheus
Métricas de Política SM
| Métrica | Tipo | Etiquetas | Descripción |
|---|---|---|---|
omni_pcf.sm_policy.create.count | contador | supi, dnn, result | Operaciones de creación de políticas SM |
omni_pcf.sm_policy.delete.count | contador | supi, dnn | Operaciones de eliminación de políticas SM |
omni_pcf.sm_policy_creates.total | contador | result | Total de creaciones de políticas SM |
omni_pcf.active_sm_policies.count | medidor | -- | Número de políticas SM activas |
Métricas de Política AM
| Métrica | Tipo | Etiquetas | Descripción |
|---|---|---|---|
omni_pcf.am_policy.create.count | contador | supi, result | Operaciones de creación de políticas AM |
omni_pcf.am_policy.delete.count | contador | supi | Operaciones de eliminación de políticas AM |
omni_pcf.am_policy_creates.total | contador | result | Total de creaciones de políticas AM |
omni_pcf.active_am_policies.count | medidor | -- | Número de políticas AM activas |
Métricas de Reglas PCC
| Métrica | Tipo | Etiquetas | Descripción |
|---|---|---|---|
omni_pcf.pcc_rule_installs.total | contador | -- | Total de instalaciones de reglas PCC |
Métricas NRF
| Métrica | Tipo | Etiquetas | Descripción |
|---|---|---|---|
omni_pcf.nrf.registration.status | medidor | nf_type | Estado de registro del NRF (1=registrado, 0=no) |
Métricas de BEAM VM
| Métrica | Tipo | Descripción |
|---|---|---|
beam.memory.total | medidor | Memoria total de BEAM en bytes |
beam.memory.processes | medidor | Memoria utilizada por procesos Erlang |
beam.memory.processes_used | medidor | Memoria realmente utilizada por procesos |
beam.memory.system | medidor | Memoria del sistema |
beam.memory.atom | medidor | Memoria total de átomos |
beam.memory.atom_used | medidor | Memoria de átomos utilizada |
beam.memory.binary | medidor | Memoria binaria |
beam.memory.code | medidor | Memoria de código |
beam.memory.ets | medidor | Memoria de tabla ETS |
beam.processes.count | medidor | Número de procesos Erlang |
beam.ports.count | medidor | Número de puertos Erlang |
beam.atom.count | medidor | Número de átomos |
beam.vm.uptime | medidor | Tiempo de actividad de la VM en segundos |
Limitaciones Conocidas
| ID | Área | Descripción |
|---|---|---|
| PCF-M1 | Actualización de Política AM | No hay un punto final POST /npcf-am-policy-control/v1/policies/{polAssoId}/update. El AMF no puede solicitar actualizaciones de políticas para una asociación de política AM existente. Solo se admiten crear y eliminar. |
| PCF-M2 | Notificación de Política AM | El PCF no envía notificaciones de actualización de políticas a la URI de callback del AMF. Los cambios de políticas del lado del AMF (por ejemplo, modificación de UE-AMBR) nunca son enviados por el PCF. |
| PCF-M3 | Procesamiento de Informes de Reglas | Las entradas de RuleReport dentro de SmPolicyUpdateContextData no se inspeccionan ni procesan. El PCF no puede reaccionar a fallos en la aplicación de reglas o cambios reportados por el SMF. |
| PCF-M4 | Actualizaciones Basadas en Disparadores | Los valores de PolicyControlRequestTrigger no se evalúan. El PCF no detecta ni responde a eventos como cambio de PLMN, cambio de RAT o cambio de tipo de acceso que normalmente activarían una actualización de política. |
| PCF-M5 | Reglas PCC Dinámicas | Solo se genera una única regla PCC por defecto que permite todo por sesión. No se aplican reglas PCC específicas de flujo de datos de servicio, reglas de detección de aplicaciones, ni políticas específicas de suscriptores del UDR. |
| PCF-M6 | Negociación de Características | suppFeat en las respuestas de políticas SM y AM se establece en el valor reflejado de la solicitud en lugar de calcularse como un AND a nivel de bits de las características soportadas por el PCF y las características solicitadas por el consumidor (TS 29.512 Sección 6.1). |
| PCF-M7 | Notificación de Política SM | El PCF no invoca la notificationUri del SMF para enviar decisiones o actualizaciones de políticas. Todas las actualizaciones de políticas SM iniciadas por el PCF (por ejemplo, en respuesta a solicitudes de funciones de aplicación) están ausentes. |
| PCF-L1 | Flujos GBR | No se admiten flujos de QoS de Tasa de Bits Garantizada (GBR). Las reglas QER y PCC solo expresan restricciones basadas en MBR. |
| PCF-L3 | Suscripción a Políticas UDR | El PCF consulta al UDR una vez en la creación de la asociación de políticas. No hay suscripción a notificaciones de cambios de datos del UDR (Nudr_DataRepository_Subscribe), por lo que los cambios en los datos de políticas de suscriptores en el UDR no se reflejan en las asociaciones de políticas activas. |
| CROSS-2 | Desajuste de Puntos Finales UDR | El PCF consulta /nudr-dr/v1/policy-data/ues/{ueId}/am-data y .../sm-data en el UDR. Estos puntos finales no son expuestos por OmniUDM en la versión actual. Las consultas al UDR devolverán 404 y el PCF volverá silenciosamente a la política por defecto. |
Solución de Problemas
Asociación de Política SM Devuelve 400 ERROR_INITIAL_PARAMETERS
El SmPolicyContextData del SMF falta un campo obligatorio. El PCF requiere: supi, pduSessionId, pduSessionType, dnn, notificationUri, sliceInfo, y al menos uno de ipv4Address o ipv6AddressPrefix. Verifique que el SMF esté enviando la dirección IP de UE en la llamada create_sm_policy — el SMF llena ipv4Address desde el campo ue_ipv4 del contexto, que se establece por el controlador PFCP después del establecimiento de la sesión. Si el PFCP falla antes de la asignación de IP, el campo estará ausente.
Asociación de Política SM Devuelve 403 POLICY_CONTEXT_DENIED
Devuelto solo cuando se encuentra una denegación específica en la validación de políticas (no activada actualmente por la lógica de política por defecto). Si se observa inesperadamente, verifique el registro del PCF para entradas [SM Policy] Created association ... failed.
Consultas al UDR Siempre Fallan
Ver limitación CROSS-2. OmniUDM no expone el árbol de recursos /policy-data/. El PCF registra una advertencia [UDR Client] SM policy query failed for {supi} y procede con la política por defecto. Esto es esperado en la implementación actual. No se necesita ninguna acción correctiva a menos que se implemente un UDR que exponga recursos de datos de políticas TS 29.519.
La Decisión de Política Contiene AMBR por Defecto en Lugar de Valores Suscritos
Esto ocurre cuando la consulta al UDR falla (CROSS-2) o el UDR devuelve un cuerpo vacío. El AMBR de sesión por defecto aplicado es 1000 Kbps en subida y bajada. Para anular, asegúrese de que el UDR devuelva sessionAmbr en la respuesta de datos de política SM, o configure los datos del suscriptor en un UDR que implemente el recurso de datos de políticas TS 29.519.
Desajuste en la Negociación de Características con SMF
Debido a PCF-M6, el suppFeat en la respuesta de política SM refleja el valor de la solicitud del SMF en lugar de realizar un AND a nivel de bits adecuado. Si el SMF o AMF depende de que se enmascaren bits de características específicos, puede resultar en un comportamiento inesperado. Como solución alternativa, configure el SMF para enviar solo las características que realmente necesita en suppFeat.
Asociaciones de Política AM Se Acumulan Sin Límite
Las asociaciones de políticas AM se crean en el registro de UE y se eliminan en la desregistración. Si el AMF no envía el DELETE al desregistrarse (por ejemplo, debido a un reinicio del AMF), las asociaciones persistirán indefinidamente. No hay un mecanismo de expiración. Monitoree el punto final /statistics para contar asociaciones. Para limpiar manualmente asociaciones obsoletas, reinicie OmniPCF (todo el estado está en proceso y no es persistente).
Correlación de Registros
Las líneas de registro de políticas SM están precedidas por [SM Policy] e incluyen el ID de asociación y SUPI. Las líneas de registro de políticas AM están precedidas por [AM Policy]. Las llamadas del cliente UDR están precedidas por [UDR Client]. Todas las entradas incluyen el SUPI, lo que permite el seguimiento por suscriptor a través del registro del PCF.