PFCP Cause Codes Reference
Overview
PFCP (Packet Forwarding Control Protocol) uses cause codes in response messages to indicate the outcome of requests. This document describes the cause codes implemented in OmniUPF and when they occur during PFCP message processing.
All cause codes conform to 3GPP TS 129.244 specifications and are returned in PFCP response messages to indicate success, failure, or specific error conditions.
Monitoring Cause Codes
OmniUPF tracks PFCP message outcomes using Prometheus metrics. Each PFCP response includes a cause code that's recorded in:
upf_pfcp_rx_errors{message_name="...", cause_code="...", peer_address="..."}
This enables monitoring of:
- Success rates per message type and control plane node
- Error patterns indicating misconfigurations or protocol issues
- Association health based on rejection rates
See Metrics Reference for complete PFCP metrics documentation.
Cause Code Categories
Success Codes
| Code | Name | When It Occurs |
|---|---|---|
| 1 | RequestAccepted | Request successfully processed. All mandatory IEs present and valid. Rules created/modified/deleted successfully. |
Client Error Codes
| Code | Name | When It Occurs |
|---|---|---|
| 64 | RequestRejected | General rejection for unspecified errors. Used when no specific cause code applies. |
| 65 | SessionContextNotFound | Session Modification or Deletion requested for unknown SEID. The specified session does not exist on this UPF. |
| 66 | MandatoryIEMissing | Required Information Element absent. Examples: NodeID missing in Association Setup, F-SEID missing in Session Establishment, RecoveryTimeStamp missing. |
| 67 | ConditionalIEMissing | Conditionally required IE missing based on other IEs present. Used when IEs depend on each other's presence. |
| 69 | MandatoryIEIncorrect | Required IE present but contains invalid data. Examples: Unparseable NodeID format, invalid RecoveryTimeStamp value, malformed F-SEID. |
| 72 | NoEstablishedPFCPAssociation | Session operation attempted without active association. Must establish PFCP association before creating sessions. |
| 73 | RuleCreationModificationFailure | Error applying PDR, FAR, QER, or URR rules to eBPF datapath. Possible causes: eBPF map capacity exhausted, invalid rule parameters, resource allocation failure. |
Server/Resource Error Codes
| Code | Name | When It Occurs |
|---|---|---|
| 74 | PFCPEntityInCongestion | UPF experiencing high load or resource exhaustion. Temporarily unable to process requests. |
| 75 | NoResourcesAvailable | Insufficient resources to fulfill request. Examples: eBPF map capacity exhausted, memory allocation failure, TEID pool depleted. |
| 77 | SystemFailure | Critical internal error preventing request processing. Examples: eBPF program failure, kernel interface error, database corruption. |
Unsupported Feature Codes
| Code | Name | When It Occurs |
|---|---|---|
| 68 | InvalidLength | IE length field doesn't match actual data length. Currently unused in OmniUPF. |
| 70 | InvalidForwardingPolicy | Forwarding policy not supported by UPF. Currently unused in OmniUPF. |
| 71 | InvalidFTEIDAllocationOption | F-TEID allocation option not supported. Currently unused in OmniUPF. |
| 76 | ServiceNotSupported | Requested service or feature not implemented. Currently unused in OmniUPF. |
| 78 | RedirectionRequested | UPF requests redirection to another UPF instance. Currently unused in OmniUPF. |
Common Scenarios and Causes
Association Setup Failures
Scenario: Missing NodeID
SMF → UPF: Association Setup Request (no NodeID)
UPF → SMF: Association Setup Response (Cause: MandatoryIEMissing)
Resolution: Ensure SMF includes NodeID IE in all Association Setup Requests.
Scenario: Invalid NodeID Format
SMF → UPF: Association Setup Request (NodeID="invalid")
UPF → SMF: Association Setup Response (Cause: MandatoryIEIncorrect)
Resolution: NodeID must be valid FQDN or IPv4/IPv6 address.
Scenario: Missing Recovery Timestamp
SMF → UPF: Association Setup Request (no RecoveryTimeStamp)
UPF → SMF: Association Setup Response (Cause: MandatoryIEMissing)
Resolution: Include RecoveryTimeStamp in Association Setup Request.
Session Establishment Failures
Scenario: No Association Established
SMF → UPF: Session Establishment Request
UPF → SMF: Session Establishment Response (Cause: NoEstablishedPFCPAssociation)
Resolution: Establish PFCP association before creating sessions.
Scenario: Rule Creation Failure
SMF → UPF: Session Establishment Request
UPF processes FARs, QERs, URRs successfully
UPF fails to create PDR (eBPF map full)
UPF → SMF: Session Establishment Response (Cause: RuleCreationModificationFailure)
Resolution:
- Check eBPF map capacity (see Capacity Monitoring)
- Increase map sizes in UPF configuration
- Reduce active session count
Scenario: Missing F-SEID
SMF → UPF: Session Establishment Request (no CP F-SEID)
UPF → SMF: Session Establishment Response (Cause: MandatoryIEMissing)
Resolution: Include CP F-SEID in Session Establishment Request.
Session Modification Failures
Scenario: Unknown SEID
SMF → UPF: Session Modification Request (SEID=12345)
UPF has no session with SEID 12345
UPF → SMF: Session Modification Response (Cause: SessionContextNotFound)
Resolution:
- Verify SEID matches value from Session Establishment Response
- Check if session was already deleted
- Ensure using correct UPF instance (N9 loopback scenarios)
Session Deletion Failures
Scenario: Unknown SEID
SMF → UPF: Session Deletion Request (SEID=67890)
UPF has no session with SEID 67890
UPF → SMF: Session Deletion Response (Cause: SessionContextNotFound)
Resolution: SEID may have already been deleted or never existed.
Troubleshooting with Cause Codes
Using Prometheus Metrics
Query Prometheus to identify error patterns:
# Error rate by cause code
rate(upf_pfcp_rx_errors{cause_code!="RequestAccepted"}[5m])
# Top rejection causes
topk(5, sum by (cause_code) (upf_pfcp_rx_errors))
# Errors by SMF peer
sum by (peer_address, cause_code) (upf_pfcp_rx_errors{cause_code!="RequestAccepted"})
# Session establishment failures
upf_pfcp_rx_errors{message_name="SessionEstablishmentRequest", cause_code!="RequestAccepted"}
Using Web UI
Navigate to Sessions page to view:
- Active session count per control plane node
- Session establishment success/failure rates
- Recent session errors
Navigate to Capacity page to diagnose:
- eBPF map utilization (RuleCreationModificationFailure root cause)
- Resource exhaustion indicators
See Web UI Guide for detailed monitoring instructions.
Common Debugging Steps
High MandatoryIEMissing Rate:
- Check SMF configuration for required IEs
- Verify PFCP library version compatibility
- Review SMF logs for IE construction errors
Frequent RuleCreationModificationFailure:
- Check eBPF map capacity:
GET /api/v1/map_info - Monitor map usage:
upf_ebpf_map_used / upf_ebpf_map_capacity - Increase map sizes in configuration if > 70% utilized
- See Capacity Planning
NoEstablishedPFCPAssociation Errors:
- Verify association exists:
GET /api/v1/pfcp_associations - Check heartbeat timeout configuration
- Review association setup logs
- Ensure SMF and UPF can reach each other
SessionContextNotFound on Modification:
- Verify SEID from session establishment response
- Check if session was deleted
- For N9 loopback: Ensure using correct UPF endpoint
- Query active sessions:
GET /api/v1/pfcp_sessions
Cause Code Impact on Operations
Session Lifecycle
Metrics and Alerting
Recommended Alerts:
# Critical: High rejection rate
- alert: PfcpHighRejectionRate
expr: |
rate(upf_pfcp_rx_errors{cause_code!="RequestAccepted"}[5m]) > 0.1
annotations:
summary: "High PFCP rejection rate: {{ $value }}/s"
# Warning: Capacity issues
- alert: PfcpRuleCreationFailures
expr: |
rate(upf_pfcp_rx_errors{cause_code="RuleCreationModificationFailure"}[5m]) > 0
annotations:
summary: "PFCP rule creation failures detected"
# Warning: Association issues
- alert: PfcpNoAssociation
expr: |
rate(upf_pfcp_rx_errors{cause_code="NoEstablishedPFCPAssociation"}[5m]) > 0
annotations:
summary: "PFCP sessions attempted without association"
3GPP Standards Compliance
OmniUPF implements cause codes according to:
- 3GPP TS 129.244 v16.4.0 - PFCP specification
- Section 8.2.1 - Cause IE definition
- Section 8.19 - Cause values table
Related Documentation
- PFCP Protocol Integration - PFCP architecture and message handling
- Metrics Reference - upf_pfcp_rx_errors metric documentation
- Monitoring Guide - Capacity monitoring and alerting
- Troubleshooting Guide - PFCP association and session issues
- Web UI Guide - Sessions and associations monitoring