コンテンツにスキップ

PFCP と PDR / FAR / QER / URR — UPFはパケットをどう判定して転送するのか

難易度: 上級(マニアック) / 想定学習時間: 40分 / 前提: PDU Session Establishment 深掘り, Paging / 主役: SMF, UPF / 主Interface: N4, N3, N6

学習目標

この章を読み終えると、次のことができるようになります。

  • PFCP が User Packet を運ぶプロトコルではなく、UPFの処理ルールを設定するControl Protocol であることを説明できる
  • PDR → FAR / QER / URR の参照関係(PDRが「どのPacketか」、他が「どう扱うか」)を説明できる
  • UL と DL で PDR が何を見てMatchするか(F-TEID / UE IP Address / SDF Filter)が違う理由を説明できる
  • FAR の Apply Action(FORW / DROP / BUFF / NOCP) と、CM-IDLE UEへのPaging の関係を説明できる
  • PFCP Capture で PDR → FAR ID → FAR をたどり、TEID不一致などを見つけられる
  • SMF が gNB 向けに送る N2 SM Information と、UPF 向けに送る N4(PFCP)ルール の違いを説明できる

前提知識

この章の焦点(Level ∞ マニアック)

前章では、SMFが N4 で UPF に「ルールを入れる」タイミングを見ました。この章では、そのルールの 中身 と、UPFがPacketを受け取ってから送り出すまでの判定順序を掘り下げます。

PDR の Match 条件(PDI / F-TEID / SDF Filter / Precedence)の細部は、次章 PDR / PDI / F-TEID / SDF Filter / Precedence で扱います。本章は ルール同士の関係 と FAR の動作 に集中します。


Why — UPFは「Internetへ送る箱」ではない

UPFは、受け取ったPacketごとに次を判断しています。

Packet が来た
   ↓ これはどのPDU Session・どのTrafficのPacket?   ← PDR
   ↓ 転送する? 捨てる? 溜める? どこへ?          ← FAR
   ↓ どの帯域・QoSで扱う?                          ← QER
   ↓ どれだけ使った?                               ← URR
送り出す(N3 / N6 / N9)

この判断のルールを UPF に設定するのが SMF で、そのためのプロトコルが PFCP(Packet Forwarding Control Protocol) です(TS 29.244 Clause 4.1 / Clause 5.1、要確認)。

例え話: UPFは「仕分けセンター」です。PDRは荷札の読み取り条件、FARは配送先と「保管 / 廃棄」の指示、QERは配送トラックの速度制限、URRは取扱量の帳簿。仕分けのルールブックを書いて渡すのが SMF です。


What — PFCP の位置づけ

       Control Plane                       User Plane
SMF ════════ UPF                    gNB ════════ UPF ════════ DN
      N4 / PFCP                           N3 / GTP-U       N6
  (ルールを設定する)                 (UEのPacketそのもの)
  • PFCP は N4(SMF ⇔ UPF) の Control Protocol です(TS 29.244 Clause 4.1 / Clause 5.1、要確認)。UEのUser Packetそのものは運びません。SMFバッファリング等でUPF⇔SMF間にUser Packetを転送する場合も、PFCPではなくN4上のGTP-Uトンネルが使われます(TS 29.244 Clause 5.3、TS 23.501 Clause 5.8.3、要確認)。
  • UEのData は N3 では GTP-U(TS 29.281 Clause 5、要確認)で、N6 ではDNのプロトコルで運ばれます。
  • PFCP は UDP 上で動作し(PFCP の登録ポートは UDP 8805。TS 29.244 Clause 4.2.2、要確認)、Node 単位の手続き(Association Setup / Heartbeat 等)と Session 単位の手続き(Session Establishment / Modification / Deletion / Report)があります(TS 29.244 Clause 6 / Clause 7、要確認)。
  • Session 単位の手続きは、SMF と UPF の間に PFCP Association が確立済みであることが前提です(TS 29.244 Clause 6.2.6、要確認)。

N2 SM Information と N4(PFCP)を混同しない

SMF は1つの PDU Session のために、宛先の違う3種類の情報 を作ります。

SMF ──N1 SM 情報──► AMF ──NAS (N1)──► UE    … UE向け(PDU Session Establishment Accept 等)
SMF ──N2 SM 情報──► AMF ──NGAP (N2)─► gNB   … RAN向け(UPF の N3 F-TEID、QoS Flow 設定 等)
SMF ──N4 / PFCP─────────────────────► UPF   … UPF向け(PDR / FAR / QER / URR)
gNB ══N3 / GTP-U════════════════════► UPF   … UEのUser Packetそのもの
情報 宛先 経路 中身の例 規定
N1 SM 情報 UE SMF → AMF(Namf_Communication_N1N2MessageTransfer)→ NAS PDU Session Establishment Accept(QoS Rule、PDU Address 等) TS 23.502 Clause 4.3.2.2.1、TS 24.501 Clause 6.4.1(要確認)
N2 SM 情報 gNB SMF → AMF(同上)→ NGAP PDU Session Resource Setup Request Transfer(UL NG-U UP TNL Information=UPF側 N3 F-TEID、QoS Flow 情報) TS 23.502 Clause 4.3.2.2.1、TS 38.413 Clause 9.3.4.1(要確認)
N4 ルール UPF SMF → UPF(PFCP、AMF を経由しない) Create PDR / FAR / QER / URR TS 29.244 Clause 7.5.2(要確認)

PFCP と N2 SM 情報は、F-TEID を受け渡す両輪 の関係です。UPF側の N3 F-TEID は SMF が割り当てる(Create PDR に記載)か、UPF が割り当てる(CH フラグ → Created PDR で返却)かのいずれかで、どちらも PFCP 上で確定し、N2 SM 情報で gNB へ渡ります。逆に gNB側の F-TEID は N2 SM 情報(Response Transfer)で SMF に戻り、PFCP Session Modification で UPF の FAR に入ります。

例え話: N2 SM 情報は「支店(gNB)宛ての手紙」、PFCP は「倉庫(UPF)宛ての作業指示書」です。どちらも本社(SMF)が書きますが、届け先も届け方も違います。


What — Packet Forwarding Model

TS 29.244 では、UPF内のPacket処理を次のモデルで定義しています(TS 29.244 Clause 5.2.1、要確認)。

flowchart LR
    P[Incoming Packet] --> PDR{"PDR lookup
(PDI と 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 計測"] FAR -- "BAR ID(任意)" --> BAR["BAR
Buffering"] FAR --> OUT[N3 / N6 / N9 / CP-function]

図: TS 29.244 の Packet Forwarding Model を簡略化した概念図(TS 29.244 Clause 5.2.1、要確認)。Incoming Packet → PDR lookup は処理の流れ、PDR から各ルールへの矢印は IDによる参照関係 を表します(処理の時間順ではありません)。BAR は FAR の BAR ID から参照され、FAR が BUFF のときに意味を持ちます。CP-function 宛ては、SMF でバッファリングする場合などに N4 上の GTP-U トンネルで SMF へ送るケースです。

ルール 正式名 ひとことで PDRからの参照
PDR Packet Detection Rule どのPacketか(WHO / WHAT) —
FAR Forwarding Action Rule どうするか、どこへ(ACTION / WHERE) 通常1つ(FAR ID。Predefined Rule使用時・MAR ID使用時(ATSSS)を除く。TS 29.244 Clause 7.5.2.2、要確認)
QER QoS Enforcement Rule どのQoSで(HOW FAST) 0個以上(QER ID)
URR Usage Reporting Rule どれだけ使ったか(HOW MUCH) 0個以上(URR ID)
BAR Buffering Action Rule バッファリングの扱い FARから参照(任意)

ATSSS 用の MAR(Multi-Access Rule)など、Releaseで追加されたルールもあります(本章では扱いません)。各ルールの5GS上のパラメータは TS 23.501 Clause 5.8.2.11 にも整理されています(枝番は要確認)。


What — PDR(Packet Detection Rule)

PDR は、受信したPacketがどのPDU Session・どのTrafficに該当するか を判定するルールです。

PDR の主な中身

Create PDR
├─ PDR ID
├─ Precedence                     ← 複数Matchしたときの優先度
├─ PDI(Packet Detection Information)
│   ├─ Source Interface           ← Access(N3側)/ Core(N6側)等
│   ├─ Local F-TEID               ← ULでは主にこれでMatch
│   ├─ Network Instance
│   ├─ UE IP Address              ← DLでは主にこれでMatch
│   ├─ SDF Filter                 ← 5-tupleなど
│   └─ QFI
├─ Outer Header Removal(任意)   ← ULでGTP-U/UDP/IPを外す
├─ FAR ID
├─ URR ID(0個以上)
└─ QER ID(0個以上)

(IE構成は TS 29.244 Clause 7.5.2.2、要確認)

Local F-TEID は誰が決めるか — CHOOSE(CH)フラグ

UL の Match に使う Local F-TEID(UPF側の N3 IP + TEID)は、SMF が割り当てる方式 と UPF が割り当てる方式 があります(TS 23.501 Clause 5.8.2.3、要確認)。

  • UPF に割り当てさせる場合、SMF は Create PDR の PDI 内 F-TEID IE に CHOOSE(CH)フラグ を立て、具体的な TEID / IP を入れずに送ります(TS 29.244 Clause 8.2.3、要確認)。
  • UPF は割り当てた値を、Session Establishment Response の Created PDR IE で返します(TS 29.244 Clause 7.5.3.2、要確認)。SMF はこの値を N2 SM 情報(UL NG-U UP TNL Information)に入れて gNB へ渡します。
  • 複数の PDR に 同じ F-TEID を割り当てさせたいときは、CHOOSE ID(CHID) で同じ値を指定します。UPF は同じ Choose ID の PDR に同じ F-TEID を割り当てます(TS 29.244 Clause 8.2.3、要確認)。

どちらの方式を使うかは SMF / UPF の能力と設定によります(UPF側の対応は PFCP Association 時の UP Function Features の FTUP で示されます。TS 29.244 Clause 8.2.25、要確認)。

PDI の細部は次章へ

PDI の各IE(Source Interface / Network Instance / UE IP Address / SDF Filter / QFI)、F-TEID の CH / CHID の使い分け、SDF Filter の書式、Precedence の設計は、次章 PDR / PDI / F-TEID / SDF Filter / Precedence で詳しく扱います。本章では「PDR が FAR / QER / URR をどう参照するか」に必要な範囲に留めます。

UL と DL で Match の手がかりが違う

方向 Packetの来方 Source Interface 主なMatch条件
UL(UE → DN) gNB から N3 の GTP-U で届く Access Local F-TEID(UPF側のIP + TEID)+必要に応じ QFI / SDF Filter
DL(DN → UE) (PSA UPF・IP型PDU Sessionの場合)DN から N6 の素のIPで届く。TEIDは無い(N9経由のI-UPFではGTP-UのLocal F-TEIDでMatch) Core UE IP Address(宛先)+必要に応じ SDF Filter
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 → 中身のIPをN6へ

DL:  DN ──IP (dst=10.45.0.3)──► UPF
         PDR #2: Source=Core, UE IP=10.45.0.3 (destination) → MATCH
         FAR → Outer Header Creation で GTP-U に包んで gNB へ

Precedence — 複数のPDRがMatchしたら

同じPacketに複数のPDRがMatchし得るため、PDRには Precedence があります。UPFは、Matchしたうち Precedence値が最も小さい(=優先度が最も高い)PDR を選びます(TS 29.244 Clause 5.2.1 / Clause 8.2.11、要確認)。

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
        ↓ 小さい方が優先
     PDR #3 を適用(例: IMS用の別QoS Flowへ)

複数QoS Flowや Traffic Steering では、このPDR選択が意図通りかどうかが重要になります。Precedence の値の付け方は仕様で一律には決まっておらず、SMF実装・運用依存 です。設計上の注意点は 次章 を参照してください。


What — FAR(Forwarding Action Rule)

PDRでMatchしたPacketを どうするか を決めるのが FAR です。中心は Apply Action IE です(TS 29.244 Clause 8.2.26、要確認)。

Apply Action 意味
FORW 転送する(Forwarding Parameters に従う)
DROP 破棄する
BUFF バッファリングする(BAR に従う)
NOCP 最初のDL Packet到着を CP-function(SMF)へ通知する(BUFF が設定されている場合にのみ設定できる。TS 29.244 Clause 8.2.26、要確認)
DUPL 複製する。複製先は FAR の Duplicating Parameters(Destination Interface 等)で指定する(TS 29.244 Clause 7.5.2.3、要確認)

Apply Action は ビットフラグの集合 で、組み合わせて設定します(例: BUFF + NOCP、FORW + DUPL)。ただし DROP / FORW / BUFF(Release により IPMA / IPMD / MBSU 等を含む)は、そのうち 1つだけ を立てる規定です(TS 29.244 Clause 8.2.26、要確認)。

DUPL の仕様上の想定用途の例は Lawful Interception です(TS 29.244 Clause 7.5.2.3、要確認)。5GC における LI の構成は本章の範囲外で、複製先・方式の詳細は実装依存の部分を含みます。

Release によっては、ほかのフラグ(IP multicast 関連、DL Data通知の制御 等)も追加されています(要確認)。

Forwarding Parameters

Create FAR
├─ FAR ID
├─ Apply Action = FORW
└─ Forwarding Parameters
    ├─ Destination Interface      ← Access(N3へ)/ Core(N6へ)等
    ├─ Network Instance
    └─ Outer Header Creation(DLで使う)
        ├─ Description = GTP-U/UDP/IPv4
        ├─ TEID          = 0x12345678   ← gNB側 TEID
        └─ IPv4 Address  = 192.0.2.10   ← gNB側 N3 IP

Outer Header Creation — DLでGTP-Uに包む

DN から来たDL Packetは素のIPです。gNBへ送るには、UPFが GTP-U で包む(Encapsulation) 必要があり、そのための宛先 IP と TEID が FAR の Outer Header Creation です(TS 29.244 Clause 8.2.56、要確認)。

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

GTP-U のUDPポート 2152 は TS 29.281 Clause 4.4.2 によります(要確認)。

この値は gNB が NGAP PDU Session Resource Setup Response で返したものです(Response Transfer 内の DL QoS Flow per TNL Information。TS 38.413 Clause 8.2.1 / Clause 9.3.4.2、要確認)。前章で、SMF が PFCP Session Modification で gNB の F-TEID を UPF へ反映したのは、この Outer Header Creation を埋めるためです。

なお、gNB が受信するDL GTP-U には、QFI を運ぶ PDU Session Container 拡張ヘッダが付きます(TS 38.415 Clause 5.5.2.1、TS 29.281 Clause 5.2.2.7、要確認)。


How — BUFF / NOCP と Paging のつながり

AN Release(TS 23.502 Clause 4.2.6、要確認)やUP接続の非活性化で N3 トンネルが解放されると、UPFにはDLの送り先(gNB F-TEID)がありません。このときSMFは、DL FARを BUFF + NOCP にしておけます(UPFでバッファリングする場合。TS 23.501 Clause 5.8.3、要確認)。

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: N2 SM 情報で新しい gNB F-TEID が SMF へ
    SMF->>UPF: PFCP Session Modification(FAR: FORW + 新 Outer Header Creation)
    UPF->>gNB: バッファしていたDL Packetを送出

図: Network Triggered Service Request(TS 23.502 Clause 4.2.3.3)のうち、PFCP に関わる部分を抜き出した簡略図(UPF でバッファリングする場合)。N1N2MessageTransfer の応答、AMF の Paging 判定、Service Request 中の AMF ⇔ SMF 間の Nsmf_PDUSession_UpdateSMContext、gNB との PDU Session Resource Setup 等は省略しています。SMF でバッファリングする場合は、DL FAR の転送先が CP-function になり、DL Packet 自体が N4 の GTP-U で SMF へ送られます(TS 23.501 Clause 5.8.3、要確認)。

  • バッファリングは UPFで行う方式 と SMFで行う方式 があり、どちらを使うかはSMFが決めます(TS 23.501 Clause 5.8.3、要確認)。
  • DL Data 到着から Paging までの全体手順は TS 23.502 Clause 4.2.3.3(Network Triggered Service Request)です。
  • Service Request(UP接続の再活性化)や Handover では gNB から新しい DL F-TEID が通知されるため(TS 23.502 Clause 4.2.3.2 / Clause 4.9.1、要確認)、SMFは PFCP Session Modification で FAR の Outer Header Creation を更新します。

つまり、Paging の出発点には、UPF内の DL PDR → FAR(BUFF + NOCP) が存在しています。


What — QER(QoS Enforcement Rule)

QER は、Matchしたトラフィックに QoSを適用 するルールです(TS 29.244 Clause 5.2 配下の QER handling / Clause 7.5.2.5、枝番は要確認)。

Create QER
├─ QER ID
├─ Gate Status        ← UL / DL それぞれ OPEN / CLOSED
├─ MBR                ← Maximum Bit Rate(UL / DL)
├─ GBR(任意)        ← Guaranteed Bit Rate
├─ QFI(任意)        ← DLでGTP-Uヘッダに付けるQFI
└─ RQI(任意)        ← Reflective QoS
  • 1つのPDRから複数QERを参照でき、たとえば QoS Flow単位のMBR と PDU Session単位のSession-AMBR を別々のQERで表現できます(5GSでの対応は TS 23.501 Clause 5.8.2.11、要確認)。
  • Gate Status = CLOSED だと、FAR が FORW でもそのトラフィックは通りません(TS 29.244 Clause 8.2.7 Gate Status、要確認)。「FORWなのに流れない」ときはQERも疑います。
  • 具体的なRate制御方式(Token Bucket等)やHardwareへの実装は Vendor依存 です。

QoS Flow / 5QI / AMBR の概念は QoS を参照してください。


What — URR(Usage Reporting Rule)

URR は、トラフィックの 使用量を計測し、条件を満たしたらSMFへ報告 するルールです(TS 29.244 Clause 5.2.2 / Clause 7.5.2.4、要確認)。

Create URR
├─ URR ID
├─ Measurement Method   ← VOLUM(バイト数)/ DURAT(時間)/ EVENT
├─ Reporting Triggers   ← 閾値到達、Quota消費、周期 等
├─ Volume Threshold / Volume Quota(任意)
└─ Time Threshold / Time Quota(任意)

Usage Report は、PFCP Session Report Request(UPF起点)、Session Modification Response、Session Deletion Response などでSMFへ返ります(TS 29.244 Clause 7.5.8 / Clause 7.5.5 / Clause 7.5.7、要確認)。

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

URR = Charging そのもの ではない

URR は UPFでの計測・報告ルール です。その結果をSMFが Converged Charging(Nchf、CHF)でどう使うかは別の層です(TS 32.255 Clause 5 / TS 32.290 Clause 5、節番号は要確認)。詳しくは Charging を参照してください。


How — PFCP の Session 手続き

手続き 方向 主な用途 規定
Session Establishment SMF → UPF PDU Session開始時に PDR / FAR / QER / URR を Create TS 29.244 Clause 7.5.2 / Clause 7.5.3
Session Modification SMF → UPF gNB F-TEIDの反映、Service Request / Handover、QoS変更(Create / Update / Remove) TS 29.244 Clause 7.5.4 / Clause 7.5.5
Session Deletion SMF → UPF PDU Session Release。最終の 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 等 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: (gNB F-TEID未定) │
 │  Create QER / URR                │
 │─────────────────────────────────►│
 │◄─────────────────────────────────│ Response: Created PDR (Local F-TEID)
 │                                  │
 │ Session Modification Request     │
 │  Update FAR #2: FORW +           │
 │    Outer Header Creation (gNB)   │
 │─────────────────────────────────►│

図: 前章の PDU Session Establishment(TS 23.502 Clause 4.3.2.2.1)で PFCP が送られる典型的な順序の概念図。Response の Created PDR に Local F-TEID が入るのは、UPF が F-TEID を割り当てる(CH フラグ)場合です。ID の値・ルールの数は SMF 実装依存です。

Establishment 時点の DL FAR の Apply Action をどう設定しておくか(例: gNB F-TEID が来るまで BUFF / DROP)は SMF実装依存 です。

PDU Session 確立時に、SMFがUPFのPacket Processing Pipelineをプログラムする と考えると理解しやすくなります。

Session Modification が必要になる典型場面

PDU Session の途中で gNB 側の Tunnel が変われば、UPF の DL FAR も追随しなければなりません。

UE が gNB-A 配下  : DL FAR  Outer Header Creation = gNB-A IP / TEID=0xAAAA0001
        ↓ Handover、または CM-IDLE → Service Request で gNB-B へ
UE が gNB-B 配下  : DL FAR  Outer Header Creation = gNB-B IP / TEID=0xBBBB0001
        ↑ SMF が PFCP Session Modification(Update FAR)で書き換える
場面 UPFへの主な変更 規定
AN Release(CM-IDLEへ) DL FAR を BUFF + NOCP 等へ(または N3 Tunnel 情報を削除) TS 23.502 Clause 4.2.6(要確認)
Service Request(UP再活性化) DL FAR を FORW + 新しい Outer Header Creation へ TS 23.502 Clause 4.2.3.2 / Clause 4.2.3.3
Handover DL FAR の Outer Header Creation を Target gNB の F-TEID へ TS 23.502 Clause 4.9.1(要確認)
PDU Session Modification(QoS Flow 追加・変更) PDR / QER 等(必要に応じ FAR / URR)の Create / Update / Remove TS 23.502 Clause 4.3.3(要確認)

TEID・IP の値は架空例です。Handover 全体の流れは Handover を参照してください。


Packet Analysis (Wireshark)

Display Filter

フィルタ 用途
pfcp N4 全体
udp.port == 8805 PFCP の UDP ポートで絞る(ディセクタが PFCP と認識しない場合の確認用。TS 29.244 Clause 4.2.2、要確認)
gtp N3 の GTP-U(WiresharkではGTPv1-Uも gtp で表示)
ngap gNB F-TEID(PDU Session Resource Setup Response)との突き合わせ用

フィールド名はWiresharkの版で異なるため断定しません(要確認)。

Decode例(概念表現)— PDR → FAR ID → FAR をたどる

以下は表示構造の概念表現です(表示ラベルはWiresharkの版で異なります)。

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   ← UL PDR に UPF が割り当てた値(CH の場合)

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

(値は架空例です。実キャプチャではありません)

Wireshark上でも、PDR の FAR ID と FAR の FAR ID をリンクさせて読む のが基本です。PFCP Response の Cause(例: Request accepted)も必ず確認します(TS 29.244 Clause 8.2.1、要確認)。

見る順番

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
実際の TEID / IP"]

①が無ければ Session 手続きは成立しません。③の Local F-TEID と⑥の UL GTP-U の TEID、④の gNB F-TEID と⑤・⑥の DL GTP-U の TEID が、それぞれ一致しているかを突き合わせます。


Trouble Shooting — PFCPは成功したのにPingが通らない

「PFCP Session Establishment / Modification が Request accepted」だけでは不十分です。次を順に確認します。

① UL PDR は存在する?(Source Interface = Access)
② UL PDR の Local F-TEID は、gNBが実際に使っている TEID と一致する?
③ UL PDR → FAR の参照(FAR ID)は正しい?
④ UL FAR は FORW? Destination Interface = Core?
⑤ DL PDR は UE IP Address に Match する?(UE IPの割当値と一致?)
⑥ DL FAR は FORW?(BUFF / DROP のまま残っていない?)
⑦ DL FAR の Outer Header Creation の gNB IP は正しい?
⑧ DL FAR の TEID は gNB が通知した値と一致する?
⑨ QER の Gate Status が CLOSED / MBR が極端に低い、になっていない?
⑩ N3 / N6 の IP Routing は正常?
症状 想定原因 確認ポイント ログ Packet 解決方法
Session Establishment が失敗する PFCP Association 未確立、必須IE不足、UPFがルールを作れない Response の Cause(例: Mandatory IE missing / No established PFCP Association / Rule creation/modification Failure。TS 29.244 Clause 8.2.1)、Offending IE / Failed Rule ID(各IEの節は要確認) SMF / UPF の PFCP ログ(実装依存) pfcp Association を先に確立、SMF の IE 生成・UPF の対応機能を確認
ある時点から全Sessionが不通 Heartbeat 途絶による PFCP Association 喪失、UPF 再起動 Heartbeat Request / Response、Recovery Time Stamp の変化(TS 29.244 Clause 6.2.2、要確認) SMF / UPF ログ pfcp / udp.port == 8805 N4 経路を復旧。UPF の障害・再起動時の SMF の扱い(Session の解放・再確立など)は TS 23.527 に規定がある(Clause は要確認)。具体的な再確立方式やタイミングは実装・運用依存を含む
ULのみNG UL PDR の F-TEID と gNB の送信先TEID不一致、Outer Header Removal 設定 Created PDR の Local F-TEID と、SMFが作る NGAP PDU Session Resource Setup Request Transfer の UL NG-U UP TNL Information(TS 38.413 Clause 9.3.4.1、要確認) UPF の未Match(No PDR match)ログ(実装依存) pfcp / ngap / gtp SMF が N2 SM 情報に入れる F-TEID と UPF の割当値を一致させる
DLのみNG DL FAR が BUFF / DROP のまま、Outer Header Creation の TEID / IP 誤り(TEID mismatch) Modification Request の Update FAR と NGAP Response の DL F-TEID SMF ログ(Modification 送信有無) pfcp / ngap / gtp gNB の DL F-TEID を正しく Update FAR に反映
特定アプリだけNG Precedence の設計ミスで意図しないPDRにMatch、Gate CLOSED PDR の Precedence / SDF Filter、QER(詳細は 次章) UPF のルール表示(実装依存) pfcp Precedence / SDF Filter / Gate Status を修正
CM-IDLE UEに着信が来ない DL FAR に NOCP が無い、Session Report が SMF で処理されていない FAR の Apply Action、Session Report Request / Response SMF / AMF ログ pfcp / ngap(Paging) DL FAR を BUFF + NOCP に設定、SMF→AMF の通知を確認
課金量が合わない URR の Measurement Method / Trigger 設定、PDR と URR の紐付け漏れ Create URR と PDR の URR ID、Usage Report の値 SMF / CHF ログ pfcp URR 設定と PDR の参照を修正

TEID mismatch を見つける

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

NGAP で gNB が通知した Tunnel 情報 と PFCP の FAR / Outer Header Creation を並べて比較するのが最も効率的です。


3GPP仕様とVendor実装の境界

3GPPが定義するもの Vendor / 運用が決めるもの
PFCP のメッセージと IE(PDR / FAR / QER / URR / BAR、PDI、Apply Action、Outer Header Creation 等) show upf session / show pdr / show far 等のCLI
Packet Forwarding Model(PDR選択と Precedence、ルール間の参照) Hardware Flow Table、DPDK Worker、SmartNIC / ASIC へのOffload
Usage Reporting の測定方式・トリガー・報告手続き 内部 Packet Pipeline の実装、Rate制御アルゴリズム
Buffering の方式(UPF / SMF)と DL Data 通知、BAR によるバッファ量の目安(Suggested Buffering Packets Count 等。TS 29.244 Clause 7.5.2.6、要確認) 実際のバッファ容量・超過時の破棄方針、PDR・Precedence の番号付け方針

たとえば「FAR を Linux kernel、DPDK、SmartNIC、ASIC のどこにプログラムするか」は3GPPでは規定しません。


EPC(4G)との比較

項目 4G EPC(CUPS) 5GC
CP / UP 分離 SGW-C / PGW-C ⇔ SGW-U / PGW-U(Sxa / Sxb) SMF ⇔ UPF(N4)
プロトコル PFCP(TS 29.244) PFCP(TS 29.244、同一仕様)
QoS の単位 EPS Bearer(TFT) QoS Flow(QFI) を QER / PDR で表現
DLのGTP-U Bearer単位のTEID PDU Session 単位の N3 Tunnel+QFI(PDU Session Container)

PFCP は Rel-14 の CUPS(TS 23.214 Clause 4 / TS 29.244 Clause 4.1、要確認)で導入され、5GC の N4 でもそのまま使われています。


3GPP Specification

仕様 節 内容
TS 29.244 Clause 5.2.1 Packet Forwarding Model / PDR選択(要確認)
TS 29.244 Clause 5.2.2 / Clause 5.2 配下 Usage Reporting / QoS Enforcement(枝番は要確認)
TS 29.244 Clause 6 / Clause 7 PFCP 手続き / メッセージ(要確認)
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(要確認)
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(要確認)
TS 23.501 Clause 5.8.2.11 N4 Session のパラメータ(PDR / FAR / QER / URR 等。枝番は要確認)
TS 23.501 Clause 5.8.3 Buffering(UPF / SMF。要確認)
TS 23.502 Clause 4.2.3.3 Network Triggered Service Request
TS 23.527 Clause 4(要確認) Restoration Procedures(UPF 障害・再起動時の扱い)
TS 29.281 Clause 4.4.2 / Clause 5 / Clause 5.2.2.7 GTP-U(UDPポート / ヘッダ / PDU Session Container 拡張ヘッダ。要確認)
TS 38.415 Clause 5.5.2.1 PDU Session Container(QFI。要確認)
TS 32.255 / TS 32.290 Clause 5 5G Data Connectivity Charging / Converged Charging(節番号は要確認)
TS 23.214 Clause 4 EPC CUPS(PFCPの導入。要確認)
TS 23.502 Clause 4.2.3.2 / Clause 4.9.1 UE Triggered Service Request / Handover(要確認)
TS 29.244 Clause 4.1 / Clause 5.1 / Clause 5.3 PFCPの概要 / N4上のUser Plane転送(要確認)
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)(要確認)
TS 29.244 Clause 4.2.2 PFCP の UDP ポート(8805。要確認)
TS 29.244 Clause 6.2.2 / Clause 6.2.6 Heartbeat / PFCP Association Setup(要確認)
TS 29.244 Clause 7.5.2.3 Create FAR(Duplicating Parameters を含む。要確認)
TS 29.244 Clause 8.2.3 / Clause 8.2.25 F-TEID(CH / CHID フラグ)/ UP Function Features(要確認)
TS 23.501 Clause 5.8.2.3 CN Tunnel Info の割当(SMF / UPF。要確認)
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(要確認を含む)
TS 24.501 Clause 6.4.1 UE-requested PDU Session Establishment(N1 SM。要確認)

Summary

  • PFCP は N4 で SMF が UPF に Packet処理ルールを設定する Control Protocol。User Packet は N3 の GTP-U で流れる
  • PDR = どのPacketか、FAR = どうする・どこへ、QER = QoS、URR = 使用量計測。PDR が FAR / QER / URR を ID で参照する
  • UL は主に Local F-TEID、DL は主に UE IP Address で PDR に Match。複数Matchは Precedence が小さい方 が優先
  • FAR の Outer Header Creation が DL の宛先(gNB IP / TEID)。だから SMF は gNB F-TEID を PFCP Modification で反映する
  • CM-IDLE では DL FAR を BUFF + NOCP にでき、Session Report → Paging につながる
  • PFCP が Request accepted でも User Plane が通るとは限らない。NGAP の F-TEID と PFCP の値を突き合わせる
  • N2 SM 情報(gNB向け)と PFCP(UPF向け)は別物。F-TEID は両者を行き来して UL / DL の Tunnel が完成する
  • Apply Action はフラグの組み合わせ(BUFF + NOCP、FORW + DUPL 等)。UPF に F-TEID を割り当てさせるときは CH フラグ を使い、結果は Created PDR で返る

これまでの章とのつながり

CM-IDLE / Paging       DL Packet 到着 → DL FAR (BUFF + NOCP) → Session Report → Paging
Service Request        新しい gNB F-TEID → PFCP Modification で DL FAR を FORW へ
PDU Session 確立       PFCP Establishment で PDR / FAR / QER / URR を作成
本章                   UPF が PDR → FAR / QER / URR に従って Packet を処理
次章                   PDR が「何を見て」Match するか(PDI / F-TEID / SDF Filter / Precedence)

理解度チェック

Q1. UPFがN3からUplink GTP-U Packetを受信しました。適切なPDRへMatchした後、そのPDRが FAR ID = 20 を参照しています。このFARの主な役割として最も適切なのはどれか。A. PacketがどのPDU Session/Trafficに該当するかを検出する / B. Packetの使用量を計測してUsage Reportを生成する / C. MatchしたPacketをForward、Drop、Bufferなど、どのように処理するか決定する / D. UEとAMF間のNAS Integrity Algorithmを選択する

正解: C。FAR は Apply Action(FORW / DROP / BUFF / NOCP 等)と Forwarding Parameters で「どうするか・どこへ」を決めます(TS 29.244 Clause 5.2.1 / Clause 8.2.26、要確認)。A は PDR、B は URR の役割です。D は NAS Security の話で、PFCP とは無関係です。

Q2. DL Packet には GTP-U の TEID がありません。UPFは何を見て DL PDR に Match させますか。

主に PDI の UE IP Address(宛先IP)と Source Interface = Core、必要に応じて SDF Filter を見ます。UL のように Local F-TEID で Match するのは、N3 から GTP-U で届く Packet の場合です。

Q3. 同じDL Packetに PDR #2(Precedence 255)と PDR #3(Precedence 100)の両方がMatchしました。どちらが適用されますか。

PDR #3 です。Precedence は値が小さいほど優先度が高く、UPF は Match したうち最も優先度の高い PDR を適用します(TS 29.244 Clause 5.2.1 / Clause 8.2.11、要確認)。

Q4. CM-IDLE UE 宛ての DL Packet が UPF に届いたのに Paging が始まりません。PFCP で何を確認しますか。

DL FAR の Apply Action に BUFF と NOCP(UPFバッファリングの場合)が設定されているか、UPF が PFCP Session Report Request(Downlink Data Report) を SMF へ送っているか、SMF が Response を返しその後 Namf_Communication_N1N2MessageTransfer を送っているかを確認します。SMFでバッファリングする方式の場合は、DL FAR の転送先が CP-function になっているかを確認します(TS 23.501 Clause 5.8.3、要確認)。

Q5. PFCP Session Establishment / Modification はどちらも Request accepted でしたが、DL だけ届きません。最も効率的な確認方法は何ですか。

NGAP PDU Session Resource Setup Response で gNB が通知した DL の IP / TEID と、PFCP Update FAR の Outer Header Creation の IP / TEID を並べて比較します。あわせて DL FAR の Apply Action が FORW になっているか、QER の Gate Status が CLOSED になっていないかを確認します。

Q6. N2 SM Information の役割として最も適切なのはどれか。A. SMF が UPF へ PDR / FAR を設定する / B. SMF が AMF 経由で gNB へ渡す、PDU Session Resource や N3 Tunnel 確立に必要な情報 / C. UPF が SMF へ Usage Report を返す / D. gNB が UPF へ User Packet を運ぶ

正解: B。N2 SM 情報は SMF が作り、AMF(Namf_Communication_N1N2MessageTransfer)と NGAP を経由して gNB へ届きます(TS 23.502 Clause 4.3.2.2.1)。中には UPF側の N3 F-TEID(UL NG-U UP TNL Information)や QoS Flow 情報が入ります(TS 38.413 Clause 9.3.4.1、要確認)。A は N4(PFCP)、C は PFCP の Usage Report、D は N3(GTP-U)です。

Q7. PFCP Session Establishment Response に Created PDR(Local F-TEID 入り)が含まれていました。これは何を意味し、SMF はその値をどう使いますか。

SMF が Create PDR の F-TEID に CHOOSE(CH)フラグ を立て、UPF に F-TEID の割当てを任せたことを意味します(TS 29.244 Clause 8.2.3 / Clause 7.5.3.2、要確認)。SMF はこの UPF側 N3 F-TEID を N2 SM 情報(UL NG-U UP TNL Information)に入れて gNB へ渡し、gNB はその TEID 宛てに UL GTP-U を送ります。ここがずれると「UL のみ NG」になります。


Next Step