Skip to main content

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

CodeNameWhen It Occurs
1RequestAcceptedRequest successfully processed. All mandatory IEs present and valid. Rules created/modified/deleted successfully.

Client Error Codes

CodeNameWhen It Occurs
64RequestRejectedGeneral rejection for unspecified errors. Used when no specific cause code applies.
65SessionContextNotFoundSession Modification or Deletion requested for unknown SEID. The specified session does not exist on this UPF.
66MandatoryIEMissingRequired Information Element absent. Examples: NodeID missing in Association Setup, F-SEID missing in Session Establishment, RecoveryTimeStamp missing.
67ConditionalIEMissingConditionally required IE missing based on other IEs present. Used when IEs depend on each other's presence.
69MandatoryIEIncorrectRequired IE present but contains invalid data. Examples: Unparseable NodeID format, invalid RecoveryTimeStamp value, malformed F-SEID.
72NoEstablishedPFCPAssociationSession operation attempted without active association. Must establish PFCP association before creating sessions.
73RuleCreationModificationFailureError 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

CodeNameWhen It Occurs
74PFCPEntityInCongestionUPF experiencing high load or resource exhaustion. Temporarily unable to process requests.
75NoResourcesAvailableInsufficient resources to fulfill request. Examples: eBPF map capacity exhausted, memory allocation failure, TEID pool depleted.
77SystemFailureCritical internal error preventing request processing. Examples: eBPF program failure, kernel interface error, database corruption.

Unsupported Feature Codes

CodeNameWhen It Occurs
68InvalidLengthIE length field doesn't match actual data length. Currently unused in OmniUPF.
70InvalidForwardingPolicyForwarding policy not supported by UPF. Currently unused in OmniUPF.
71InvalidFTEIDAllocationOptionF-TEID allocation option not supported. Currently unused in OmniUPF.
76ServiceNotSupportedRequested service or feature not implemented. Currently unused in OmniUPF.
78RedirectionRequestedUPF 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:

  1. Check SMF configuration for required IEs
  2. Verify PFCP library version compatibility
  3. Review SMF logs for IE construction errors

Frequent RuleCreationModificationFailure:

  1. Check eBPF map capacity: GET /api/v1/map_info
  2. Monitor map usage: upf_ebpf_map_used / upf_ebpf_map_capacity
  3. Increase map sizes in configuration if > 70% utilized
  4. See Capacity Planning

NoEstablishedPFCPAssociation Errors:

  1. Verify association exists: GET /api/v1/pfcp_associations
  2. Check heartbeat timeout configuration
  3. Review association setup logs
  4. Ensure SMF and UPF can reach each other

SessionContextNotFound on Modification:

  1. Verify SEID from session establishment response
  2. Check if session was deleted
  3. For N9 loopback: Ensure using correct UPF endpoint
  4. 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