Skip to content

PFCP and PDR / FAR / QER / URR — How Does the UPF Classify and Forward Packets?

Difficulty: Advanced (deep dive) / Estimated study time: 40 min / Prerequisites: PDU Session Establishment Deep Dive, Paging / Main actors: SMF, UPF / Main interfaces: N4, N3, N6

Learning objectives

After reading this chapter, you will be able to:

  • Explain that PFCP is not a protocol for carrying User Packets, but a Control Protocol for configuring UPF processing rules
  • Explain the reference relationships PDR → FAR / QER / URR (the PDR identifies "which Packet," while the others specify "how to handle it")
  • Explain why PDR matching criteria differ between UL and DL (F-TEID / UE IP Address / SDF Filter)
  • Explain the relationship between FAR Apply Action (FORW / DROP / BUFF / NOCP) and Paging for a CM-IDLE UE
  • Follow PDR → FAR ID → FAR in a PFCP capture and identify issues such as a TEID mismatch
  • Explain the difference between the N2 SM Information the SMF sends toward the gNB and the N4 (PFCP) rules it sends to the UPF

Prerequisites

The focus of this chapter (Level ∞ Deep Dive)

In the previous chapter, we saw when the SMF "installs rules" in the UPF over N4. This chapter digs into the contents of those rules and the order in which the UPF makes decisions from receiving a Packet to sending it out.

The details of PDR matching conditions (PDI / F-TEID / SDF Filter / Precedence) are covered in the next chapter, PDR / PDI / F-TEID / SDF Filter / Precedence. This chapter focuses on the relationships among the rules and the behavior of the FAR.


Why — The UPF is not just a "box that sends traffic to the Internet"

For each Packet it receives, the UPF decides the following:

A Packet arrives
   ↓ Which PDU Session and which Traffic does this Packet belong to?   ← PDR
   ↓ Forward it? Drop it? Buffer it? Where to?                         ← FAR
   ↓ Which bandwidth / QoS should apply?                               ← QER
   ↓ How much has been used?                                           ← URR
Send it (N3 / N6 / N9)

The SMF configures these decision rules on the UPF, using PFCP (Packet Forwarding Control Protocol) (TS 29.244 Clause 4.1 / Clause 5.1, to be confirmed).

Analogy: The UPF is a "sorting center." A PDR is the condition for reading a shipping label, a FAR is the destination and instruction to "store / discard," a QER is the speed limit for the delivery truck, and a URR is the handling-volume ledger. The SMF writes and hands over the rulebook for sorting.


What — Where PFCP fits

       Control Plane                       User Plane
SMF ════════ UPF                    gNB ════════ UPF ════════ DN
      N4 / PFCP                           N3 / GTP-U       N6
  (configures rules)                   (the UE's Packets themselves)
  • PFCP is the Control Protocol on N4 (SMF ⇔ UPF) (TS 29.244 Clause 4.1 / Clause 5.1, to be confirmed). It does not carry the UE's User Packets themselves. Even when User Packets are forwarded between the UPF and SMF for SMF buffering, an N4 GTP-U Tunnel, not PFCP, is used (TS 29.244 Clause 5.3, TS 23.501 Clause 5.8.3, to be confirmed).
  • UE Data is carried over N3 using GTP-U (TS 29.281 Clause 5, to be confirmed) and over N6 using the DN's protocol.
  • PFCP runs over UDP (the registered PFCP port is UDP 8805; TS 29.244 Clause 4.2.2, to be confirmed) and has node-level procedures (Association Setup / Heartbeat, etc.) and session-level procedures (Session Establishment / Modification / Deletion / Report) (TS 29.244 Clause 6 / Clause 7, to be confirmed).
  • Session-level procedures require that a PFCP Association has already been established between the SMF and the UPF (TS 29.244 Clause 6.2.6, to be confirmed).

Do not confuse N2 SM Information with N4 (PFCP)

For a single PDU Session, the SMF creates three kinds of information with different destinations.

SMF ──N1 SM info──► AMF ──NAS (N1)──► UE    … for the UE (PDU Session Establishment Accept, etc.)
SMF ──N2 SM info──► AMF ──NGAP (N2)─► gNB   … for the RAN (UPF's N3 F-TEID, QoS Flow setup, etc.)
SMF ──N4 / PFCP─────────────────────► UPF   … for the UPF (PDR / FAR / QER / URR)
gNB ══N3 / GTP-U════════════════════► UPF   … the UE's User Packets themselves
Information Destination Path Example contents Specification
N1 SM information UE SMF → AMF (Namf_Communication_N1N2MessageTransfer) → NAS PDU Session Establishment Accept (QoS Rules, PDU Address, etc.) TS 23.502 Clause 4.3.2.2.1, TS 24.501 Clause 6.4.1 (to be confirmed)
N2 SM information gNB SMF → AMF (same as above) → NGAP PDU Session Resource Setup Request Transfer (UL NG-U UP TNL Information = UPF-side N3 F-TEID, QoS Flow information) TS 23.502 Clause 4.3.2.2.1, TS 38.413 Clause 9.3.4.1 (to be confirmed)
N4 rules UPF SMF → UPF (PFCP, not via the AMF) Create PDR / FAR / QER / URR TS 29.244 Clause 7.5.2 (to be confirmed)

PFCP and N2 SM information work as two wheels that hand F-TEIDs back and forth. The UPF-side N3 F-TEID is either allocated by the SMF (written in Create PDR) or allocated by the UPF (CH flag → returned in Created PDR); either way it is fixed over PFCP and delivered to the gNB in N2 SM information. Conversely, the gNB-side F-TEID returns to the SMF in N2 SM information (Response Transfer) and is installed in the UPF's FAR by PFCP Session Modification.

Analogy: N2 SM information is "a letter addressed to the branch office (gNB)," while PFCP is "a work order addressed to the warehouse (UPF)." Headquarters (the SMF) writes both, but the recipients and delivery routes differ.


What — Packet Forwarding Model

TS 29.244 defines the following model for Packet processing within the UPF (TS 29.244 Clause 5.2.1, to be confirmed).

flowchart LR
    P[Incoming Packet] --> PDR{"PDR lookup
(PDI and Precedence)"} PDR -- "FAR ID" --> FAR["FAR
Apply Action / Forwarding Parameters"] PDR -- "QER ID(s)" --> QER["QER
Gate / MBR / GBR / QFI"] PDR -- "URR ID(s)" --> URR["URR
Volume / Time / Event measurement"] FAR -- "BAR ID (optional)" --> BAR["BAR
Buffering"] FAR --> OUT["N3 / N6 / N9 / CP-function"]

Figure: A simplified conceptual view of the Packet Forwarding Model in TS 29.244 (TS 29.244 Clause 5.2.1, to be confirmed). Incoming Packet → PDR lookup shows the processing flow, while the arrows from the PDR to each rule represent references by ID (not chronological processing order). The BAR is referenced by the FAR's BAR ID and is meaningful when the FAR is BUFF. The CP-function destination covers cases such as buffering at the SMF, where packets are sent to the SMF over a GTP-U tunnel on N4.

Rule Full name In a nutshell Reference from PDR
PDR Packet Detection Rule Which Packet? (WHO / WHAT) —
FAR Forwarding Action Rule What to do, and where (ACTION / WHERE) Usually one (FAR ID. Excludes use of Predefined Rules and use of MAR ID (ATSSS). TS 29.244 Clause 7.5.2.2, to be confirmed)
QER QoS Enforcement Rule At what QoS? (HOW FAST) Zero or more (QER ID)
URR Usage Reporting Rule How much was used? (HOW MUCH) Zero or more (URR ID)
BAR Buffering Action Rule How to handle buffering Referenced from FAR (optional)

Other rules have been added in later Releases, such as MAR (Multi-Access Rule) for ATSSS (not covered in this chapter). Parameters for each rule in 5GS are also organized in TS 23.501 Clause 5.8.2.11 (sub-clause to be confirmed).


What — PDR (Packet Detection Rule)

A PDR is a rule that determines which PDU Session and which Traffic a received Packet belongs to.

Main contents of a PDR

Create PDR
├─ PDR ID
├─ Precedence                     ← Priority when multiple rules match
├─ PDI (Packet Detection Information)
│   ├─ Source Interface            ← Access (N3 side) / Core (N6 side), etc.
│   ├─ Local F-TEID                ← Primarily used for UL matching
│   ├─ Network Instance
│   ├─ UE IP Address               ← Primarily used for DL matching
│   ├─ SDF Filter                  ← e.g. 5-tuple
│   └─ QFI
├─ Outer Header Removal (optional) ← Remove GTP-U/UDP/IP on UL
├─ FAR ID
├─ URR ID (zero or more)
└─ QER ID (zero or more)

(IE composition: TS 29.244 Clause 7.5.2.2, to be confirmed)

Who decides the Local F-TEID? — the CHOOSE (CH) flag

The Local F-TEID used for UL matching (UPF-side N3 IP + TEID) can be allocated by the SMF or allocated by the UPF (TS 23.501 Clause 5.8.2.3, to be confirmed).

  • To let the UPF allocate it, the SMF sets the CHOOSE (CH) flag in the F-TEID IE in the PDI of Create PDR and sends it without a concrete TEID / IP (TS 29.244 Clause 8.2.3, to be confirmed).
  • The UPF returns the allocated value in the Created PDR IE of the Session Establishment Response (TS 29.244 Clause 7.5.3.2, to be confirmed). The SMF puts this value into N2 SM information (UL NG-U UP TNL Information) and passes it to the gNB.
  • To have the same F-TEID allocated to multiple PDRs, specify the same value with CHOOSE ID (CHID). The UPF allocates the same F-TEID to PDRs with the same Choose ID (TS 29.244 Clause 8.2.3, to be confirmed).

Which approach is used depends on SMF / UPF capabilities and configuration (UPF-side support is indicated by FTUP in UP Function Features during PFCP Association; TS 29.244 Clause 8.2.25, to be confirmed).

PDI details are in the next chapter

Each PDI IE (Source Interface / Network Instance / UE IP Address / SDF Filter / QFI), how to use the F-TEID CH / CHID flags, SDF Filter syntax, and Precedence design are covered in detail in the next chapter, PDR / PDI / F-TEID / SDF Filter / Precedence. This chapter covers them only as far as needed to understand "how a PDR references FAR / QER / URR."

UL and DL use different matching clues

Direction How the Packet arrives Source Interface Main matching condition
UL (UE → DN) Arrives from the gNB in N3 GTP-U Access Local F-TEID (UPF-side IP + TEID) + QFI / SDF Filter as needed
DL (DN → UE) (For a PSA UPF and IP-type PDU Session) arrives from the DN over N6 as plain IP. There is no TEID (for an I-UPF via N9, match on GTP-U Local F-TEID) Core UE IP Address (destination) + SDF Filter as needed
UL:  gNB ──GTP-U (TEID=0x00000101)──► UPF
         PDR #1: Source=Access, F-TEID=198.51.100.20/0x00000101 → MATCH
         Outer Header Removal: GTP-U/UDP/IPv4 → inner IP goes to N6

DL:  DN ──IP (dst=10.45.0.3)──► UPF
         PDR #2: Source=Core, UE IP=10.45.0.3 (destination) → MATCH
         FAR → encapsulate in GTP-U with Outer Header Creation and send to gNB

Precedence — when multiple PDRs match

Since multiple PDRs may match the same Packet, PDRs have Precedence. The UPF selects the matching PDR with the smallest Precedence value (i.e. the highest priority) (TS 29.244 Clause 5.2.1 / Clause 8.2.11, to be confirmed).

DL Packet (dst=10.45.0.3, dst port=5060)
 ├─ PDR #2  Precedence=255  UE IP=10.45.0.3                  → match
 └─ PDR #3  Precedence=100  UE IP=10.45.0.3 + SDF(port 5060) → match
        ↓ Smaller value has priority
     Apply PDR #3 (e.g. to a separate QoS Flow for IMS)

In multiple QoS Flow and Traffic Steering scenarios, it is important to check whether the selected PDR is the intended one. How Precedence values are assigned is not uniformly specified and is SMF-implementation / operations-dependent. For design considerations, see the next chapter.


What — FAR (Forwarding Action Rule)

The FAR determines what to do with a Packet matched by a PDR. Its central IE is Apply Action (TS 29.244 Clause 8.2.26, to be confirmed).

Apply Action Meaning
FORW Forward (according to Forwarding Parameters)
DROP Discard
BUFF Buffer (according to BAR)
NOCP Notify the CP-function (SMF) when the first DL Packet arrives (may only be set when BUFF is set; TS 29.244 Clause 8.2.26, to be confirmed)
DUPL Duplicate. The duplication destination is specified by the FAR's Duplicating Parameters (Destination Interface, etc.) (TS 29.244 Clause 7.5.2.3, to be confirmed)

Apply Action is a set of bit flags that are combined (e.g. BUFF + NOCP, FORW + DUPL). However, only one of DROP / FORW / BUFF (including IPMA / IPMD / MBSU etc. depending on the Release) shall be set (TS 29.244 Clause 8.2.26, to be confirmed).

An example of the intended use of DUPL in the specification is Lawful Interception (TS 29.244 Clause 7.5.2.3, to be confirmed). The LI architecture in 5GC is outside the scope of this chapter, and details of duplication destinations and methods include implementation-dependent parts.

Other flags, such as those related to IP multicast and control of DL Data notifications, have been added in some Releases (to be confirmed).

Forwarding Parameters

Create FAR
├─ FAR ID
├─ Apply Action = FORW
└─ Forwarding Parameters
    ├─ Destination Interface      ← Access (to N3) / Core (to N6), etc.
    ├─ Network Instance
    └─ Outer Header Creation (used for DL)
        ├─ Description = GTP-U/UDP/IPv4
        ├─ TEID          = 0x12345678   ← gNB-side TEID
        └─ IPv4 Address  = 192.0.2.10   ← gNB-side N3 IP

Outer Header Creation — encapsulation in GTP-U for DL

DL Packets arriving from the DN are plain IP. To send them to the gNB, the UPF must encapsulate them in GTP-U, which requires the destination IP and TEID in the FAR's Outer Header Creation (TS 29.244 Clause 8.2.56, to be confirmed).

Inner:  IP(dst=UE IP) | payload
  ↓ Outer Header Creation
Outer:  IP(dst=gNB N3 IP) | UDP(2152) | GTP-U(TEID=gNB-side) | IP(dst=UE IP) | payload

The GTP-U UDP port 2152 is specified in TS 29.281 Clause 4.4.2 (to be confirmed).

This value is returned by the gNB in NGAP PDU Session Resource Setup Response (DL QoS Flow per TNL Information in the Response Transfer; TS 38.413 Clause 8.2.1 / Clause 9.3.4.2, to be confirmed). In the previous chapter, the SMF applied the gNB F-TEID to the UPF in PFCP Session Modification to populate this Outer Header Creation.

Note that DL GTP-U received by the gNB has a PDU Session Container extension header carrying the QFI (TS 38.415 Clause 5.5.2.1, TS 29.281 Clause 5.2.2.7, to be confirmed).


How — The connection between BUFF / NOCP and Paging

When the N3 tunnel is released by AN Release (TS 23.502 Clause 4.2.6, to be confirmed) or by deactivation of the UP connection, the UPF has no DL destination (gNB F-TEID). In this case, the SMF can set the DL FAR to BUFF + NOCP (when buffering at the UPF; TS 23.501 Clause 5.8.3, to be confirmed).

sequenceDiagram
    participant DN
    participant UPF
    participant SMF
    participant AMF
    participant gNB
    participant UE
    DN->>UPF: DL Packet
    Note over UPF: DL PDR match → FAR: BUFF + NOCP
    UPF->>SMF: PFCP Session Report Request (Downlink Data Report)
    SMF-->>UPF: PFCP Session Report Response
    SMF->>AMF: Namf_Communication_N1N2MessageTransfer
    AMF->>gNB: NGAP Paging
    gNB->>UE: Paging
    UE->>AMF: Service Request
    Note over AMF,SMF: New gNB F-TEID arrives at SMF in N2 SM information
    SMF->>UPF: PFCP Session Modification (FAR: FORW + new Outer Header Creation)
    UPF->>gNB: Send buffered DL Packet

Figure: A simplified view extracting the PFCP-related parts of the Network Triggered Service Request (TS 23.502 Clause 4.2.3.3), for buffering at the UPF. The N1N2MessageTransfer response, the AMF's Paging decision, Nsmf_PDUSession_UpdateSMContext between the AMF and SMF during the Service Request, PDU Session Resource Setup with the gNB, and so on are omitted. For buffering at the SMF, the DL FAR destination becomes the CP-function, and the DL Packets themselves are sent to the SMF over GTP-U on N4 (TS 23.501 Clause 5.8.3, to be confirmed).

  • There are two buffering approaches: at the UPF and at the SMF. The SMF decides which to use (TS 23.501 Clause 5.8.3, to be confirmed).
  • The overall procedure from DL Data arrival to Paging is TS 23.502 Clause 4.2.3.3 (Network Triggered Service Request).
  • In a Service Request (reactivation of the UP connection) or Handover, a new DL F-TEID is notified by the gNB (TS 23.502 Clause 4.2.3.2 / Clause 4.9.1, to be confirmed), so the SMF updates the FAR's Outer Header Creation using PFCP Session Modification.

In other words, at the start of Paging there is a DL PDR → FAR (BUFF + NOCP) inside the UPF.


What — QER (QoS Enforcement Rule)

A QER applies QoS to matched traffic (QER handling under TS 29.244 Clause 5.2 / Clause 7.5.2.5; sub-clause to be confirmed).

Create QER
├─ QER ID
├─ Gate Status        ← OPEN / CLOSED independently for UL / DL
├─ MBR                ← Maximum Bit Rate (UL / DL)
├─ GBR (optional)     ← Guaranteed Bit Rate
├─ QFI (optional)     ← QFI to add to the GTP-U header for DL
└─ RQI (optional)     ← Reflective QoS
  • One PDR can refer to multiple QERs; for example, QoS Flow-level MBR and PDU Session-level Session-AMBR can be represented by separate QERs (mapping in 5GS: TS 23.501 Clause 5.8.2.11, to be confirmed).
  • If Gate Status = CLOSED, the traffic does not pass even if the FAR is FORW (TS 29.244 Clause 8.2.7 Gate Status, to be confirmed). Suspect the QER when "it does not flow despite FORW."
  • The specific rate-control method (e.g. Token Bucket) and hardware implementation are vendor-dependent.

For QoS Flow / 5QI / AMBR concepts, see QoS.


What — URR (Usage Reporting Rule)

A URR measures usage and reports it to the SMF when conditions are met (TS 29.244 Clause 5.2.2 / Clause 7.5.2.4, to be confirmed).

Create URR
├─ URR ID
├─ Measurement Method   ← VOLUM (bytes) / DURAT (time) / EVENT
├─ Reporting Triggers   ← threshold reached, quota consumed, periodic, etc.
├─ Volume Threshold / Volume Quota (optional)
└─ Time Threshold / Time Quota (optional)

Usage Reports are returned to the SMF in PFCP Session Report Request (UPF-initiated), Session Modification Response, Session Deletion Response, etc. (TS 29.244 Clause 7.5.8 / Clause 7.5.5 / Clause 7.5.7, to be confirmed).

UE Traffic → UPF (URR: measurement) ──Usage Report──► SMF ──Nchf──► CHF

URR is not Charging itself

A URR is a measurement and reporting rule in the UPF. How the SMF uses the result with Converged Charging (Nchf, CHF) is a separate layer (TS 32.255 Clause 5 / TS 32.290 Clause 5, clauses to be confirmed). For details, see Charging.


How — PFCP Session procedures

Procedure Direction Main use Specification
Session Establishment SMF → UPF Create PDR / FAR / QER / URR when starting a PDU Session TS 29.244 Clause 7.5.2 / Clause 7.5.3
Session Modification SMF → UPF Apply gNB F-TEID, Service Request / Handover, QoS change (Create / Update / Remove) TS 29.244 Clause 7.5.4 / Clause 7.5.5
Session Deletion SMF → UPF PDU Session Release. Receive the final Usage Report TS 29.244 Clause 7.5.6 / Clause 7.5.7
Session Report UPF → SMF Downlink Data Report, Usage Report, Error Indication Report, etc. TS 29.244 Clause 7.5.8 / Clause 7.5.9
SMF                                UPF
 │ Session Establishment Request    │
 │  Create PDR #1 (UL)  → FAR #1    │
 │  Create PDR #2 (DL)  → FAR #2    │
 │  Create FAR #1: FORW → Core      │
 │  Create FAR #2: (no gNB F-TEID)  │
 │  Create QER / URR                │
 │─────────────────────────────────►│
 │◄─────────────────────────────────│ Response: Created PDR (Local F-TEID)
 │                                  │
 │ Session Modification Request     │
 │  Update FAR #2: FORW +           │
 │    Outer Header Creation (gNB)   │
 │─────────────────────────────────►│

Figure: A conceptual view of the typical order in which PFCP is sent during PDU Session Establishment (TS 23.502 Clause 4.3.2.2.1) in the previous chapter. The Local F-TEID appears in the Created PDR of the Response when the UPF allocates the F-TEID (CH flag). ID values and the number of rules are SMF-implementation-dependent.

How the DL FAR's Apply Action is configured at Establishment time (e.g. BUFF / DROP until the gNB F-TEID arrives) is SMF-implementation-dependent.

It is helpful to think of PDU Session establishment as the SMF programming the UPF's Packet Processing Pipeline.

Typical situations that require Session Modification

If the gNB-side tunnel changes in the middle of a PDU Session, the UPF's DL FAR must follow.

UE under gNB-A : DL FAR  Outer Header Creation = gNB-A IP / TEID=0xAAAA0001
        ↓ Handover, or CM-IDLE → Service Request via gNB-B
UE under gNB-B : DL FAR  Outer Header Creation = gNB-B IP / TEID=0xBBBB0001
        ↑ The SMF rewrites it with PFCP Session Modification (Update FAR)
Situation Main change to the UPF Specification
AN Release (to CM-IDLE) DL FAR to BUFF + NOCP, etc. (or remove N3 tunnel information) TS 23.502 Clause 4.2.6 (to be confirmed)
Service Request (UP reactivation) DL FAR to FORW + new Outer Header Creation TS 23.502 Clause 4.2.3.2 / Clause 4.2.3.3
Handover DL FAR Outer Header Creation to the Target gNB's F-TEID TS 23.502 Clause 4.9.1 (to be confirmed)
PDU Session Modification (adding / changing QoS Flows) Create / Update / Remove of PDR / QER etc. (and FAR / URR as needed) TS 23.502 Clause 4.3.3 (to be confirmed)

TEID and IP values are fictitious examples. For the overall Handover flow, see Handover.


Packet Analysis (Wireshark)

Display Filter

Filter Use
pfcp All N4 traffic
udp.port == 8805 Narrow down by the PFCP UDP port (for checking when the dissector does not recognize PFCP; TS 29.244 Clause 4.2.2, to be confirmed)
gtp N3 GTP-U (Wireshark also displays GTPv1-U as gtp)
ngap For comparison with the gNB F-TEID (PDU Session Resource Setup Response)

Field names vary by Wireshark version and are not asserted here (to be confirmed).

Decode example (conceptual) — follow PDR → FAR ID → FAR

The following is a conceptual representation of the display structure (display labels differ by Wireshark version).

PFCP Session Establishment Request
├─ Create PDR
│   ├─ PDR ID: 2
│   ├─ Precedence: 255
│   ├─ PDI
│   │   ├─ Source Interface: Core
│   │   └─ UE IP Address: 10.45.0.3 (destination)
│   ├─ FAR ID: 2          ─────┐
│   └─ QER ID: 1               │
└─ Create FAR                  │
    ├─ FAR ID: 2         ◄─────┘
    └─ Apply Action: ...

PFCP Session Establishment Response
├─ Cause: Request accepted
└─ Created PDR
    ├─ PDR ID: 1
    └─ Local F-TEID: TEID 0x00000101, 198.51.100.20   ← value allocated by the UPF for the UL PDR (CH case)

PFCP Session Modification Request
└─ Update FAR
    ├─ FAR ID: 2
    ├─ Apply Action: FORW
    └─ Update Forwarding Parameters
        ├─ Destination Interface: Access
        └─ Outer Header Creation: GTP-U/UDP/IPv4, TEID 0x12345678, 192.0.2.10

(Values are fictitious examples. not an actual capture)

In Wireshark, the basic approach is to link the FAR ID in the PDR to the FAR ID in the FAR. Always check the Cause in the PFCP Response as well (e.g. Request accepted) (TS 29.244 Clause 8.2.1, to be confirmed).

Order of inspection

flowchart LR
    A["① PFCP Association
Setup / Heartbeat"] --> B["② Establishment Request
Create PDR / FAR / QER / URR"] B --> C["③ Establishment Response
Cause / Created PDR"] C --> D["④ NGAP Setup Response
gNB DL F-TEID"] D --> E["⑤ Modification Request
Update FAR Outer Header Creation"] E --> F["⑥ GTP-U
actual TEID / IP"]

Without ①, session procedures cannot succeed. Compare the Local F-TEID in ③ with the TEID in UL GTP-U in ⑥, and the gNB F-TEID in ④ with the TEID in ⑤ and in DL GTP-U in ⑥, and check that each pair matches.


Trouble Shooting — PFCP succeeds, but Ping does not work

"Request accepted" for PFCP Session Establishment / Modification alone is not enough. Check the following in order.

① Is there a UL PDR? (Source Interface = Access)
② Does the UL PDR's Local F-TEID match the TEID actually used by the gNB?
③ Is the reference from the UL PDR to the FAR (FAR ID) correct?
④ Is the UL FAR FORW? Destination Interface = Core?
⑤ Does the DL PDR match the UE IP Address? (Does it match the assigned UE IP?)
⑥ Is the DL FAR FORW? Has it been left as BUFF / DROP?
⑦ Is the gNB IP in the DL FAR's Outer Header Creation correct?
⑧ Does the DL FAR's TEID match the value reported by the gNB?
⑨ Is the QER Gate Status CLOSED, or is the MBR extremely low?
⑩ Is IP Routing on N3 / N6 working?
Symptom Possible cause Check point Log Packet Resolution
Session Establishment fails PFCP Association not established, missing mandatory IE, the UPF cannot create the rules Cause in the Response (e.g. Mandatory IE missing / No established PFCP Association / Rule creation/modification Failure; TS 29.244 Clause 8.2.1), Offending IE / Failed Rule ID (clause of each IE to be confirmed) SMF / UPF PFCP logs (implementation-dependent) pfcp Establish the Association first; check the SMF's IE generation and the UPF's supported features
All sessions fail from a certain point Loss of the PFCP Association due to Heartbeat failure, UPF restart Heartbeat Request / Response, change in Recovery Time Stamp (TS 29.244 Clause 6.2.2, to be confirmed) SMF / UPF logs pfcp / udp.port == 8805 Restore the N4 path. The SMF's handling of UPF failure / restart (release or re-establishment of sessions, etc.) is specified in TS 23.527 (clause to be confirmed); the concrete re-establishment method and timing include implementation- and operation-dependent aspects
UL only fails Mismatch between UL PDR F-TEID and the gNB's destination TEID; Outer Header Removal configuration Created PDR Local F-TEID and the UL NG-U UP TNL Information in the NGAP PDU Session Resource Setup Request Transfer built by the SMF (TS 38.413 Clause 9.3.4.1, to be confirmed) UPF "no PDR match" logs (implementation-dependent) pfcp / ngap / gtp Make the F-TEID the SMF puts in N2 SM information match the UPF's allocated value
DL only fails DL FAR remains BUFF / DROP; incorrect TEID / IP in Outer Header Creation (TEID mismatch) Update FAR in the Modification Request and the DL F-TEID in the NGAP Response SMF logs (whether Modification was sent) pfcp / ngap / gtp Correctly apply the gNB's DL F-TEID to Update FAR
Only a specific application fails PDR match is unintended due to a Precedence design error; Gate CLOSED PDR Precedence / SDF Filter, QER (details in the next chapter) UPF rule display (implementation-dependent) pfcp Fix Precedence / SDF Filter / Gate Status
No incoming traffic to a CM-IDLE UE NOCP missing from DL FAR; Session Report not handled by the SMF FAR Apply Action, Session Report Request / Response SMF / AMF logs pfcp / ngap (Paging) Set the DL FAR to BUFF + NOCP; check the SMF → AMF notification
Charging volume is incorrect URR Measurement Method / Trigger configuration; missing association between PDR and URR Create URR and URR ID in PDR, Usage Report values SMF / CHF logs pfcp Fix the URR configuration and the PDR reference

Find a TEID mismatch

NGAP PDU Session Resource Setup Response   → gNB: DL TEID = 0x12345678
PFCP Session Modification (Update FAR)      → UPF: DL TEID = 0x87654321
                                               → mismatch

The most efficient approach is to compare the Tunnel information reported by the gNB in NGAP with the PFCP FAR / Outer Header Creation.


Boundary between 3GPP specifications and vendor implementations

Defined by 3GPP Decided by vendor / operations
PFCP messages and IEs (PDR / FAR / QER / URR / BAR, PDI, Apply Action, Outer Header Creation, etc.) CLIs such as show upf session / show pdr / show far
Packet Forwarding Model (PDR selection and Precedence, references between rules) Hardware Flow Table, DPDK Worker, offload to SmartNIC / ASIC
Usage Reporting measurement methods, triggers, and reporting procedures Internal Packet Pipeline implementation, rate-control algorithm
Buffering method (UPF / SMF) and DL Data notification; buffering hints via the BAR (Suggested Buffering Packets Count, etc.; TS 29.244 Clause 7.5.2.6, to be confirmed) Actual buffer capacity and discard policy on overflow, PDR and Precedence numbering policy

For example, 3GPP does not specify whether a FAR is programmed into the Linux kernel, DPDK, SmartNIC, or ASIC.


Comparison with EPC (4G)

Item 4G EPC (CUPS) 5GC
CP / UP separation SGW-C / PGW-C ⇔ SGW-U / PGW-U (Sxa / Sxb) SMF ⇔ UPF (N4)
Protocol PFCP (TS 29.244) PFCP (TS 29.244, same specification)
QoS unit EPS Bearer (TFT) QoS Flow (QFI) represented by QER / PDR
DL GTP-U Bearer-level TEID PDU Session-level N3 Tunnel + QFI (PDU Session Container)

PFCP was introduced with Rel-14 CUPS (TS 23.214 Clause 4 / TS 29.244 Clause 4.1, to be confirmed) and is used as-is on N4 in 5GC.


3GPP Specification

Spec Clause Content
TS 29.244 Clause 5.2.1 Packet Forwarding Model / PDR selection (to be confirmed)
TS 29.244 Clause 5.2.2 / under Clause 5.2 Usage Reporting / QoS Enforcement (sub-clauses to be confirmed)
TS 29.244 Clause 6 / Clause 7 PFCP procedures / messages (to be confirmed)
TS 29.244 Clause 7.5.2 / Clause 7.5.3 Session Establishment Request / Response
TS 29.244 Clause 7.5.2.2 / Clause 7.5.2.4 / Clause 7.5.2.5 Create PDR / Create URR / Create QER (to be confirmed)
TS 29.244 Clause 7.5.4 / Clause 7.5.5 Session Modification Request / Response
TS 29.244 Clause 7.5.6 / Clause 7.5.7 Session Deletion Request / Response
TS 29.244 Clause 7.5.8 / Clause 7.5.9 Session Report Request / Response
TS 29.244 Clause 8.2.1 / Clause 8.2.11 / Clause 8.2.26 / Clause 8.2.56 Cause / Precedence / Apply Action / Outer Header Creation (to be confirmed)
TS 23.501 Clause 5.8.2.11 N4 Session parameters (PDR / FAR / QER / URR, etc.; sub-clause to be confirmed)
TS 23.501 Clause 5.8.3 Buffering (UPF / SMF, to be confirmed)
TS 23.502 Clause 4.2.3.3 Network Triggered Service Request
TS 23.527 Clause 4 (to be confirmed) Restoration Procedures (handling of UPF failure / restart)
TS 29.281 Clause 4.4.2 / Clause 5 / Clause 5.2.2.7 GTP-U (UDP port / header / PDU Session Container extension header, to be confirmed)
TS 38.415 Clause 5.5.2.1 PDU Session Container (QFI, to be confirmed)
TS 32.255 / TS 32.290 Clause 5 5G Data Connectivity Charging / Converged Charging (clauses to be confirmed)
TS 23.214 Clause 4 EPC CUPS (introduction of PFCP, to be confirmed)
TS 23.502 Clause 4.2.3.2 / Clause 4.9.1 UE Triggered Service Request / Handover (to be confirmed)
TS 29.244 Clause 4.1 / Clause 5.1 / Clause 5.3 PFCP overview / User Plane forwarding over N4 (to be confirmed)
TS 38.413 Clause 8.2.1 / Clause 9.3.4.1 / Clause 9.3.4.2 PDU Session Resource Setup / Request Transfer (UL NG-U UP TNL Information) / Response Transfer (DL QoS Flow per TNL Information) (to be confirmed)
TS 29.244 Clause 4.2.2 PFCP UDP port (8805, to be confirmed)
TS 29.244 Clause 6.2.2 / Clause 6.2.6 Heartbeat / PFCP Association Setup (to be confirmed)
TS 29.244 Clause 7.5.2.3 Create FAR (including Duplicating Parameters, to be confirmed)
TS 29.244 Clause 8.2.3 / Clause 8.2.25 F-TEID (CH / CHID flags) / UP Function Features (to be confirmed)
TS 23.501 Clause 5.8.2.3 CN Tunnel Info allocation (SMF / UPF, to be confirmed)
TS 23.502 Clause 4.2.6 / Clause 4.3.2.2.1 / Clause 4.3.3 AN Release / PDU Session Establishment / PDU Session Modification (partly to be confirmed)
TS 24.501 Clause 6.4.1 UE-requested PDU Session Establishment (N1 SM, to be confirmed)

Summary

  • PFCP is the Control Protocol used by the SMF to configure Packet processing rules on the UPF over N4. User Packets flow over N3 using GTP-U
  • PDR = which Packet; FAR = what to do / where to send it; QER = QoS; URR = usage measurement. The PDR references FAR / QER / URR by ID
  • UL PDRs primarily match on Local F-TEID, and DL PDRs primarily on UE IP Address. If multiple rules match, the one with the smallest Precedence wins
  • Outer Header Creation in the FAR specifies the DL destination (gNB IP / TEID). That is why the SMF applies the gNB F-TEID to the UPF using PFCP Modification
  • For a CM-IDLE UE, the DL FAR can be set to BUFF + NOCP, leading to Session Report → Paging
  • Even if PFCP returns Request accepted, the User Plane may not work. Compare the NGAP F-TEID with the PFCP value
  • N2 SM information (for the gNB) and PFCP (for the UPF) are different things. F-TEIDs travel between them to complete the UL / DL tunnels
  • Apply Action is a combination of flags (BUFF + NOCP, FORW + DUPL, etc.). To let the UPF allocate the F-TEID, use the CH flag; the result is returned in Created PDR

How this connects to the surrounding chapters

CM-IDLE / Paging       DL Packet arrives → DL FAR (BUFF + NOCP) → Session Report → Paging
Service Request        New gNB F-TEID → PFCP Modification sets DL FAR to FORW
PDU Session setup      PFCP Establishment creates PDR / FAR / QER / URR
This chapter           The UPF processes Packets according to PDR → FAR / QER / URR
Next chapter           What a PDR "looks at" to match (PDI / F-TEID / SDF Filter / Precedence)

Comprehension check

Q1. The UPF receives an Uplink GTP-U Packet from N3. After it matches an appropriate PDR, that PDR references FAR ID = 20. What is the FAR's main role? A. Detect which PDU Session / Traffic the Packet belongs to / B. Measure Packet usage and generate a Usage Report / C. Decide how to handle the matched Packet, such as Forward, Drop, or Buffer / D. Select the NAS Integrity Algorithm between the UE and AMF

Answer: C. Apply Action (FORW / DROP / BUFF / NOCP, etc.) and Forwarding Parameters in the FAR determine "what to do and where" (TS 29.244 Clause 5.2.1 / Clause 8.2.26, to be confirmed). A is the role of a PDR; B is the role of a URR. D concerns NAS Security and is unrelated to PFCP.

Q2. A DL Packet has no GTP-U TEID. What does the UPF inspect to match it to a DL PDR?

Primarily the PDI's UE IP Address (destination IP) and Source Interface = Core, and, as needed, the SDF Filter. Matching on Local F-TEID as for UL applies to Packets arriving over N3 using GTP-U.

Q3. Both PDR #2 (Precedence 255) and PDR #3 (Precedence 100) match the same DL Packet. Which one is applied?

PDR #3. A smaller Precedence value means higher priority, and the UPF applies the highest-priority matching PDR (TS 29.244 Clause 5.2.1 / Clause 8.2.11, to be confirmed).

Q4. A DL Packet for a CM-IDLE UE reaches the UPF, but Paging does not start. What do you check in PFCP?

Check whether the DL FAR Apply Action has BUFF and NOCP configured (when buffering at the UPF), whether the UPF sends a PFCP Session Report Request (Downlink Data Report) to the SMF, whether the SMF returns a Response, and whether it then sends Namf_Communication_N1N2MessageTransfer. For SMF buffering, check whether the DL FAR destination is CP-function (TS 23.501 Clause 5.8.3, to be confirmed).

Q5. PFCP Session Establishment / Modification both returned Request accepted, but DL does not arrive. What is the most efficient check?

Compare the DL IP / TEID reported by the gNB in the NGAP PDU Session Resource Setup Response with the IP / TEID in Outer Header Creation of the PFCP Update FAR. Also check that the DL FAR Apply Action is FORW and that the QER Gate Status is not CLOSED.

Q6. Which best describes the role of N2 SM Information? A. The SMF configures PDRs / FARs on the UPF / B. Information the SMF passes to the gNB via the AMF, needed to establish PDU Session Resources and the N3 tunnel / C. The UPF returns a Usage Report to the SMF / D. The gNB carries User Packets to the UPF

Answer: B. N2 SM information is created by the SMF and reaches the gNB via the AMF (Namf_Communication_N1N2MessageTransfer) and NGAP (TS 23.502 Clause 4.3.2.2.1). It contains the UPF-side N3 F-TEID (UL NG-U UP TNL Information) and QoS Flow information (TS 38.413 Clause 9.3.4.1, to be confirmed). A is N4 (PFCP), C is a PFCP Usage Report, and D is N3 (GTP-U).

Q7. The PFCP Session Establishment Response contained a Created PDR (with a Local F-TEID). What does this mean, and how does the SMF use the value?

It means the SMF set the CHOOSE (CH) flag in the F-TEID of Create PDR and left F-TEID allocation to the UPF (TS 29.244 Clause 8.2.3 / Clause 7.5.3.2, to be confirmed). The SMF puts this UPF-side N3 F-TEID into N2 SM information (UL NG-U UP TNL Information) and passes it to the gNB, which then sends UL GTP-U to that TEID. If this goes wrong, the result is "UL only fails."


Next Step