NF Set / Binding Indication / SCP Routing — PCF障害時にPolicyの継続性をどう守るか¶
学習目標¶
この章を読み終えると、次のことができるようになります。
- NF Instance / NF Set / NF Service Instance / NF Service Set の違いを説明できる(TS 23.501 §5.21.3)
- Binding Level が「後続Requestをどの範囲に結び付け、障害時にどの範囲で再選択してよいか」を表すことを説明できる
- BSFのPCF Binding(Nbsf_Management)と、SBIのBinding Indication(
3gpp-Sbi-Binding/3gpp-Sbi-Routing-Binding)の違いを説明できる - PCF障害時の切替を ①発見・ルーティング ②Context継続性 ③Binding整合性 の3段階に分けて切り分けられる
- Wiresharkで Binding関連Header・
Location・3gpp-Sbi-Target-apiRootを読み、Requestが「どこへ向かい、誰が処理したか」を追える
前提知識¶
- BSF / PCF Binding — BSFが「このPDU Sessionの担当PCF」を管理する仕組み
- SCP — Direct / Indirect Communication と Model A〜D
- NRF — NF Profile の登録と Discovery
- 補助: PCF / BSF / UDSF(Context共有の格納先の1つ) / GUAMI / AMF Region / Set / Pointer(AMF Setとの対比) / Policy
この章の焦点(Level ∞ マニアック)
BSFの章では「担当PCFをどう見つけるか」を扱いました。この章では一歩進めて、担当PCFが落ちたら何が起きるか を扱います。「同じPCF Setの別Instanceへ転送すれば直る」という単純な話ではなく、ルーティングの切替・Policy Contextの継続・Bindingの整合 の3つが揃って初めて継続性が得られることを、Header単位・Trace単位で確認します。
Why — なぜ「別のPCFに送れば直る」では済まないのか¶
次のPDU Sessionを考えます。
UE ── AMF ── SMF ── N7 ── PCF-A
│ │
│ └─ SM Policy Association の Context
└─ UPF
AF ── NEF ── BSF ──────────> PCF-A(Binding先)
PCF-Aが故障した後、同じ種類のPCF-Bが稼働していても、PCF-Bが対象SessionのContextを扱えるとは限りません。PCF-AとPCF-Bが同じNF Setに属し、かつContextを共有していて初めて、PCF-Bは既存のSM Policy AssociationやAF Sessionの続きを処理できます。
必要な条件は大きく3つです。
- 発見・ルーティング — 代替PCFを見つけ、仕様が許す範囲でRequestを送り直せること
- Contextの継続性 — 代替PCFが既存のPolicy Association等のContextを利用できること
- Bindingの整合性 — BSFのBinding、SBIのBinding Indication、実際に処理したPCF Instanceが矛盾しないこと
例え話: PCF Setは「同じ顧客台帳を共有する窓口チーム」です。担当窓口(PCF-A)が急に休んでも、同じチームの別窓口(PCF-B)なら共有台帳(Context)を見て対応を続けられます。しかし、別の支店の窓口(別Setや台帳を共有しないPCF)へ回されると、「その案件は存じません」と言われてしまいます。また受付票(Binding)に「A窓口限定」と書かれていれば、案内係(SCP)は勝手に別窓口へ回してはいけません。
What — NF Set と Binding の構成要素¶
NF Instance / NF Set / NF Service Instance / NF Service Set¶
TS 23.501 §5.21.3 は、NFの信頼性(Reliability)を NF Set と NF Service Set という単位で扱います(NF Set概念の一般化はRel-16のSBA拡張、要確認。AMF SetはRel-15から存在)。各用語の定義文は TS 23.501 §3.1(Definitions)にあり(要確認)、§5.21.3 はその機能説明です。
| 用語 | 意味 | 例 | 規定 |
|---|---|---|---|
| NF Instance | NF Instance ID(UUID)で識別される個々のNF実体 | PCF-A | TS 23.501 §3.1、§5.21.3 |
| NF Set | 同じNF Typeで、同じServiceと同じNetwork Sliceをサポートし、同じContextデータにアクセスできる、相互に代替可能なNF Instanceの集合。地理的に分散していてもよい | PCF Set X = | TS 23.501 §3.1、§5.21.3(枝番は要確認) |
| NF Service Instance | NF Instance内の個々のService実体 | PCF-A上の Npcf_PolicyAuthorization | TS 23.501 §3.1、§5.21.3 |
| NF Service Set | 1つのNF Instance内 の、同じService Typeで相互に代替可能なNF Service Instanceの集合。同じContextデータにアクセスできる | PCF-A内の Npcf_SMPolicyControl × 2 | TS 23.501 §3.1、§5.21.3(枝番は要確認) |
PCF Set X(NF Set)
┌────────────────────────────────────────────────┐
│ PCF-A(NF Instance) PCF-B(NF Instance) │
│ ├─ NF Service Set S1 ├─ NF Service Set S1'│
│ │ ├─ SMPolicyControl #1 │ └─ ... │
│ │ └─ SMPolicyControl #2 │ │
│ └─ PolicyAuthorization #1 └─ ... │
└────────────────────────────────────────────────┘
│
共有Context(UDSF または 実装固有のDB)
「同じNF Type」≠「同じNF Set」
PCFが何台並んでいても、同じNF Set IDで構成され、同じContextにアクセスできる のでなければ相互代替はできません。逆に、NF SetはKubernetes ClusterやLB VIPと同義ではありません。どのPod / VMを同じSetに入れ、Contextをどう共有するかは Vendor / オペレータ設計(実装依存) です。
NF Set ID の表記¶
NF Set IDは TS 23.003 §28.12 で、次の形式のグローバルに一意な文字列として定義されます(NF Service Set ID は §28.13、要確認)。
AMF Setだけは set<AMF Set ID>.region<AMF Region ID>.amfset.5gc.mnc<MNC>.mcc<MCC> という特別な形式になり、GUAMIのAMF Region / AMF Setと対応します(GUAMI参照)。AMF SetはNF Setの一種 であり、本章の基本的な考え方はAMFにも当てはまります。ただしAMFには GUAMI・Backup AMF(backupamfinst)・計画停止手順などの固有の扱いがあります(TS 23.501 §5.21.2 / GUAMI)。
NRFでの見え方¶
各NF Instanceは、NRFへ登録するNF Profileで自分の所属NF Set(nfSetIdList)や、NF Serviceごとの NF Service Set(nfServiceSetIdList)を公開します(TS 29.510 のNFProfile / NFService型、属性名・節番号は要確認)。Consumer や SCP は、NRF Discovery で「このNF Setに属するPCF」を検索して代替候補を得ます(クエリパラメータ target-nf-set-id、要確認)。
Binding Level — 後続Requestを「どの範囲」に結び付けるか¶
TS 23.501 §6.3.1.0(Principles for Binding, Selection and Reselection)は、Binding を「特定のNF Producer側リソース(Context)に関する後続Requestを、どのNF Producer Instance群へ送るべきかを示す仕組み」として整理し、次の4つの Binding Level を定めています。
| Binding Level | 結び付く範囲 | 通常のSelection | 利用不可時のReselection(概念) |
|---|---|---|---|
| NF Service Instance | 特定のService Instance | 指定Service Instance | 同一NF Service Set内、さらにNF Instance / NF Setが示されていればその範囲 |
| NF Service Set | 同等Service Instance群 | Set内のいずれか | 示された上位範囲(NF Instance / NF Set) |
| NF Instance | 特定のNF Instance | 指定NF Instance(内のService Instance) | NF Setが示されていれば 同一NF Set内の別Instance |
| NF Set | 同等NF Instance群 | Set内のいずれか | 同一NF Set内の別Instance |
表は TS 23.501 §6.3.1.0 の表(Binding, selection and reselection)を概念的に要約したものです。各セルの厳密な条件は原文で要確認です。
「NF Instance Level + NF Set併記」は「NF Set Level」ではない
NF Instance Level で NF Set も示されている場合、通常は指定されたNF Instanceへ送ります。同一NF Set内の別Instanceへ振り替えてよいのは、指定Instanceが利用できない場合の Reselection に限られます。逆に Binding Indication に NF Set が含まれない NF Instance Level では、Binding Indicationだけでは再選択の範囲が示されません。NRFのNF Profile(nfSetIdList)に基づく再選択の可否は TS 23.501 §6.3.1.0 で要確認です。「Binding Levelが何で、どの範囲が併記されているか」がReselectionの許容範囲を判断する出発点になります。
BSFのPCF Binding と SBIのBinding Indication は別物¶
名前が似ていますが、持ち主・形式・利用者がまったく異なります。
| 項目 | BSFに登録された PCF Binding | SBIの Binding Indication |
|---|---|---|
| どこにある? | BSFが保持するBindingリソース | HTTP/2 Header(3gpp-Sbi-Binding / 3gpp-Sbi-Routing-Binding) |
| 何を表す? | UE / PDU Session(UE IP・DNN・S-NSSAI等)↔ 担当PCF(PCF Instance ID・PCF Set ID・Binding Level等) | 特定リソース(Context)に関する後続Requestを送るべきProducerの範囲 |
| 作成者 | PCF(Nbsf_Management_Register / Update) | Producer(Resource作成時の応答等)、またはConsumer(Notification / Callbackの受け先として) |
| 利用者 | BSF Consumer(NEF / AF、PCF for UE 等) | NF Consumer、SCP |
| 主な仕様 | TS 23.503 §6.1.1.2.2(枝番は要確認)、TS 23.501 §6.3.7.1(要確認)、TS 29.521 | TS 23.501 §6.3.1.0、TS 29.500 §5.2.3.2.5 / §5.2.3.2.6 / §6.12 |
| いつ使う? | 最初に 担当PCFを見つけるとき | 見つけた後 のリソースへの後続Request、障害時の再選択 |
「最初はBSF、後はBinding Indication」の例外
上の二分法は目安です。NEF / AFがBSF Discoveryで得た PCF Set ID・Binding Level から 3gpp-Sbi-Routing-Binding を組み立て、最初の Npcf_PolicyAuthorization_Create に付ける場合もあります(後述のCall Flow。TS 29.514 / TS 29.521、要確認)。また、SCPがBSFへのDiscoveryを代行する(Delegated Discovery)構成もあります(BSF / PCF Binding参照)。
BSFのPCF Bindingにも、PCF Set ID と Binding Level(NF Instance / NF Set)を含められます(TS 29.521 の PcfBinding型 pcfId / pcfSetId / bindLevel、属性名は要確認)。BSFのPCF Bindingで扱うBinding Levelは NF Instance と NF Set で、SBI全般で定義される NF Service Instance / NF Service Set Level とは扱う範囲が異なる点に注意してください(TS 23.503 §6.1.1.2.2、要確認)。
2つのHeader — 3gpp-Sbi-Binding と 3gpp-Sbi-Routing-Binding¶
| Header | 誰が付ける | 目的 | 規定 |
|---|---|---|---|
3gpp-Sbi-Binding |
Producer(Resource作成の応答等)/Consumer(Notification・Callbackの受け先を示すRequest等)。付与は任意(may) | Binding情報を相手に伝える(「今後このリソースへはこの範囲に送ってほしい」) | TS 29.500 §5.2.3.2.6 |
3gpp-Sbi-Routing-Binding |
Consumer(主にSCP経由の後続Request) | このRequestをどこへ運ぶか をSCPに示す(SCPのRouting・Reselectionに使う) | TS 29.500 §5.2.3.2.5 |
3gpp-Sbi-Target-apiRoot |
Consumer(Indirect Communication) | SCP経由のとき、Consumerが選んだ宛先Producerの apiRoot を示す(SCP→SCPのホップで使われる場合もある) | TS 29.500 §5.2.3.2.4(要確認) |
3gpp-Sbi-Producer-Id |
応答に付く(SCPが付けるかProducer自身が付けるか、いつ付くかは要確認) | 実際にRequestを処理したProducerのNF Instance ID等を示す(再選択時に重要) | TS 29.500 §5.2.3.2.8(枝番・付与主体・付与条件は要確認) |
PCF ── 201 Created + 3gpp-Sbi-Binding(任意)──> Consumer(NEF / SMF)
│ Binding を保存
▼ 後続Request
Consumer ── 3gpp-Sbi-Routing-Binding ──> SCP ──> PCF(Binding範囲内のInstance)
主なパラメータ(TS 29.500 §5.2.3.2.6 のABNF)¶
| パラメータ | 意味 |
|---|---|
bl |
Binding Level(NF Instance / NF Set / NF Service Instance / NF Service Set)。値の綴り(例: nfinstance / nfset / nfserviceinstance / nfserviceset)はABNFで要確認 |
nfinst |
NF Instance ID |
nfset |
NF Set ID |
nfservinst |
NF Service Instance ID(要確認) |
nfserviceset |
NF Service Set ID(綴りは nfservset の可能性もあり要確認) |
servname |
Service名(Notification / Callbackの受け先を示す場合等。要確認) |
scope |
Binding Indicationの適用範囲(例: 他Serviceへの適用、Callback向け等。値は要確認) |
backupamfinst |
AMFが受け手の場合のBackup AMF Instance(要確認) |
上記は主要パラメータの抜粋で、Releaseによりパラメータが追加されています(網羅ではありません)。
Header の読み方(模式例)¶
以下はHeaderの読み方を示す模式例で、IDは説明用です。全てのRequestにこのHeaderが必須という意味ではありません。
:method: POST
:path: /npcf-policyauthorization/v1/app-sessions
3gpp-Sbi-Routing-Binding: bl=nfset; nfset=set1.pcfset.5gc.mnc001.mcc001
bl=nfset:Binding Level は NF Set(綴りは要確認)nfset=...:対象NF Set ID:path:呼び出すAPI Resource
NF Instance Levelの模式例:
3gpp-Sbi-Routing-Binding: bl=nfinstance; nfinst=54804518-4191-46b3-955c-ac631f953ed8; nfset=set1.pcfset.5gc.mnc001.mcc001
nfinst は特定NF Instanceを表します。nfset が併記されていても、bl=nfinstance が bl=nfset として扱われるわけではありません(上の warning 参照)。
How — PCF障害時の振る舞い¶
Call Flow(SCP経由・概念図)¶
sequenceDiagram
participant SMF
participant NEF
participant BSF
participant SCP
participant PCFA as PCF-A
participant PCFB as PCF-B
SMF->>SCP: Npcf_SMPolicyControl_Create
SCP->>PCFA: 転送(PCF Set内のInstanceを選択)
PCFA-->>SMF: 201 Created + Location + 3gpp-Sbi-Binding(任意、経由はSCP)
PCFA->>BSF: Nbsf_Management_Register(pcfId, pcfSetId, bindLevel)
NEF->>BSF: Nbsf_Management_Discovery(UE IP, DNN, S-NSSAI)
BSF-->>NEF: 200 OK(PCF Binding)
NEF->>SCP: Npcf_PolicyAuthorization_Create + 3gpp-Sbi-Routing-Binding
SCP-xPCFA: 転送失敗(PCF-A障害)
Note over SCP: Binding Levelが許す範囲で
同一PCF Set内の代替を再選択
SCP->>PCFB: 転送
Note over PCFB: 共有ContextからSM Policy Associationを参照
PCFB-->>NEF: 201 Created + Location + 3gpp-Sbi-Binding(任意、経由はSCP)
PCFB->>SMF: Npcf_SMPolicyControl_UpdateNotify(PCC Rule更新)
opt 必要なシナリオ
PCFB->>BSF: Nbsf_Management_Update(新Instanceを反映)
end
これは理解用の概念図です。実際の再選択条件、エラー応答、リトライ回数、Contextの引継ぎ方法は、仕様のProcedureと実装構成に依存します。SCPを経由するだけで全ての障害が自動回復するわけではありません。
Signal Flow¶
| # | 方向 | メッセージ(HTTP) | Binding関連の要点 | 規定 |
|---|---|---|---|---|
| 1 | SMF → PCF | Npcf_SMPolicyControl_Create(POST /npcf-smpolicycontrol/v1/sm-policies) |
SMFが自身のNotification受け先のBindingを 3gpp-Sbi-Binding で示し得る |
TS 29.512、TS 29.500 §5.2.3.2.6 |
| 2 | PCF → SMF | 201 Created(Location、3gpp-Sbi-Binding) |
PCFは作成したSM Policyリソースの Binding を返し得る(任意) | TS 29.500 §6.12(枝番は要確認) |
| 3 | PCF → BSF | Nbsf_Management_Register(POST /nbsf-management/v1/pcfBindings) |
PCF Instance ID / PCF Set ID / Binding Level を登録 | TS 29.521 §4.2.2(要確認) |
| 4 | NEF → BSF | Nbsf_Management_Discovery(GET /nbsf-management/v1/pcfBindings?...) |
担当PCF・PCF Set・Binding Level を取得 | TS 29.521 §4.2.4(枝番は要確認) |
| 5 | NEF → SCP → PCF | Npcf_PolicyAuthorization_Create(POST /npcf-policyauthorization/v1/app-sessions) |
3gpp-Sbi-Routing-Binding / 3gpp-Sbi-Target-apiRoot でSCPに宛先範囲を示す |
TS 29.514、TS 29.500 §5.2.3.2.5 |
| 6 | SCP → PCF-B | (再選択して転送) | Binding Levelが許す範囲内で再選択。応答で処理Producerが分かる場合がある(Producer-Id / Location。付与条件は要確認) | TS 23.501 §6.3.1.0、TS 29.500 §6.10(要確認) |
| 7 | PCF → SMF | Npcf_SMPolicyControl_UpdateNotify(POST {notificationUri}/update) |
SMFのBinding(手順1)に基づき通知を届ける | TS 29.512 |
| 8 | PCF → BSF | Nbsf_Management_Update(PATCH) | 新しいPCF Instanceが選ばれた場合などにBindingを更新 | TS 23.503 §6.1.1.2.2 / TS 29.521 §4.2.5(要確認) |
再選択したら、リソースURIはどうなるか¶
ProducerのリソースURIは {apiRoot}/{apiName}/{apiVersion}/{resource} の形をしています(TS 29.501 §4.4.1、要確認)。NF Set内での再選択では、apiRoot部分を代替Instanceのものに置き換え、残りのパスは維持して 後続Requestを送る、という考え方が取られます(TS 29.500 §6.12、枝番・条件は要確認)。代替Instanceがリソースを引き継いだ場合、応答の Location や新しい 3gpp-Sbi-Binding で更新後の宛先が返ることがあり、Consumerは以後その値を使うことが想定されます(Consumer側の規定は TS 29.500 §6.12 で要確認)。
旧: https://pcf-a.example/npcf-policyauthorization/v1/app-sessions/as-123
新: https://pcf-b.example/npcf-policyauthorization/v1/app-sessions/as-123
└ apiRoot だけが変わる ┘└──────── パスは同じ ────────────────┘
このとき、パスが同じでもPCF-BがContext(as-123)を引けなければ処理は失敗します。ここが「ルーティングの切替」と「Contextの継続」が別問題である理由です。
PCF障害時の切替を3段階で考える¶
flowchart TD
F["PCF-A障害"] --> A1
subgraph SA["段階A: 発見・ルーティング(3GPPが規定)"]
A1["Binding Levelと併記範囲を確認"] --> A2["NRFで同一PCF SetのInstanceを確認
NF Status / Service / Endpoint"]
A2 --> A3["Consumer または SCPが
許容範囲内で再選択"]
end
A3 --> B1
subgraph SB["段階B: Context継続性(主に実装依存)"]
B1["代替PCFがSM Policy Association
AF Session / PCC Ruleを参照できるか"]
end
B1 --> C1
subgraph SC["段階C: Binding整合性"]
C1["BSFのPCF Binding"] --- C2["SBIのBinding Indication"]
C2 --- C3["実際に処理したPCF Instance"]
end
段階A:経路を切り替えられるか?
PCF-A障害
↓
Binding Level確認(NF Set Level か、NF Instance Level + NF Set併記か)
↓
NRFのNF Profile(nfSetIdList / Status / Service / Endpoint)を確認
↓
Consumer(Direct)または SCP(Indirect)が許容範囲内で再選択
段階B:代替PCFがContextを扱えるか?
PCF-B
├─ SM Policy Association のContextを参照できる?
├─ AF Session と PCC Rule の関連を維持できる?
└─ Context共有(UDSF / 実装固有DB)や同期は完了している?
NF Setの定義自体が「同じContextデータにアクセスできる」ことを前提としています(TS 23.501 §5.21.3)。Contextを置く場所として UDSF(非構造化データの格納)を使う構成もありますが、具体的な共有・複製・復旧方式はVendor実装依存 です。
段階C:Bindingが整合しているか?
BSF の PCF Binding
↕
SBI の Binding Indication(Consumerが保存した値 / Routing-Binding)
↕
実際にRequestを処理したPCF Instance(3gpp-Sbi-Producer-Id / Location)
新しいPCF Instanceが選ばれた場合、BSFのBindingを Nbsf_Management_Update で更新する必要があるシナリオがあります(TS 23.503 §6.1.1.2.2、適用条件は要確認)。Binding Level が NF Set でBSFに登録されていれば、Set内のInstance交代ではBSF側の記載と矛盾しにくくなりますが、NF Instance Levelで登録されている場合は古いInstanceを指したままになり得ます。
Direct Communication の場合¶
SCPを使わない Direct Communication(Model A / B)では、Consumer自身 がBinding Indicationと NRF から得たNF Set情報を使って再選択し得ます。Indirect Communication(Model C / D)では、Consumerが付けた 3gpp-Sbi-Routing-Binding 等を見て SCP が再選択を行えます。どちらの場合も、Binding Level(と併記された範囲)が判断の基準になります(TS 23.501 §6.3.1.0)。通信モデルの全体像は SBI Communication Model A–D で扱います。
Packet Analysis (Wireshark)¶
Display Filter¶
| フィルタ | 用途 |
|---|---|
http2 |
SBI全体(TLSの場合は復号が必要) |
http2.header.name contains "3gpp-sbi" |
3GPP独自Header(Binding / Routing-Binding / Target-apiRoot / Producer-Id 等)を含むフレーム |
http2.header.value contains "pcfset" |
PCF Set IDを含むHeader |
http2.header.name == "location" |
Resource作成応答の Location(どのInstanceがリソースを作ったか) |
http2.headers.path contains "npcf-policyauthorization" |
Npcf_PolicyAuthorization |
http2.headers.path contains "nbsf-management" |
Nbsf_Management(Register / Discovery / Update) |
http2.headers.path contains "nnrf-disc" |
NRF Discovery(代替候補の検索) |
フィールド名(http2.header.name / http2.headers.path 等)はWiresharkの版で異なる場合があります(要確認)。HTTP/2ではHeader名は小文字で運ばれます(RFC 9113 §8.2.1)。
Decode例(概念表現)¶
以下は表示構造の概念表現で、値は架空例です(要キャプチャ)。
HyperText Transfer Protocol 2
└─ Stream: HEADERS, Stream ID: 7
├─ :method: POST
├─ :scheme: https
├─ :authority: scp.example:443
├─ :path: /npcf-policyauthorization/v1/app-sessions
├─ 3gpp-sbi-target-apiroot: https://pcf-a.example:443
└─ 3gpp-sbi-routing-binding: bl=nfset; nfset=set1.pcfset.5gc.mnc001.mcc001
HyperText Transfer Protocol 2
└─ Stream: HEADERS, Stream ID: 7
├─ :status: 201
├─ location: https://pcf-b.example:443/npcf-policyauthorization/v1/app-sessions/as-123
├─ 3gpp-sbi-binding: bl=nfset; nfset=set1.pcfset.5gc.mnc001.mcc001
└─ 3gpp-sbi-producer-id: <PCF-B の NF Instance ID>
この例では、Consumerは PCF-A 宛て(Target-apiRoot)に送ったが、応答のLocationとProducer-IdはPCF-B を示しています。SCPがNF Set内で再選択したことを示す典型的な読み筋です(Producer-Id を付けるのがSCPかProducerか、付与条件は要確認)。
見る順番¶
flowchart LR
A["① BSF Discovery応答
pcfId / pcfSetId / bindLevel"] --> B["② 後続Request Header
Routing-Binding / Target-apiRoot"]
B --> C["③ SCPの転送先
SCP⇔PCF区間のキャプチャ"]
C --> D["④ 応答
status / Location / Binding / Producer-Id"]
D --> E["⑤ 後続処理
UpdateNotify / PFCP"]
- 同じ Stream ID でRequestと応答を対応付けます(Stream IDはHTTP/2コネクション単位なので、Consumer⇔SCP区間とSCP⇔PCF区間では別のIDになります)。
- TLSで暗号化されている場合は、復号可能なTrace(鍵ログ等)や各NFのSBIログを使います。HeaderがCapture上で見えないだけで、送信されていないとは断定しません。
- HTTP/2 / ProblemDetails の読み方は N7 SBI解析、全体のTipsは パケット解析のTips を参照してください。
Trouble Shooting¶
ケース1:PCF-AがDown、PCF-BはHealthyなのにRequestが失敗する¶
調査の順序:
- BSF Discovery応答の PCF Instance ID / PCF Set ID / Binding Level を確認する
- 後続Requestの
3gpp-Sbi-Routing-Binding(blと併記範囲)を確認する - NRFに PCF-B が 同じNF Set ID で登録され、必要なNF Serviceを提供しているか確認する
- SCP(またはDirectならConsumer)が 仕様上許される範囲で PCF-Bを再選択したか確認する
- PCF-Bが対象Contextを持つか、参照可能か確認する
ケース2:BSFはPCF-Bを返すのに、RequestはPCF-Aへ向かう¶
BSF応答・後続Request Header・SCPの実際の転送先 の3点を比較します。NEF/AFは、PolicyAuthorization Create 以降は 作成時に保存したリソースURIとBinding Indication で後続Requestを送るため、BSFの最新値を毎回参照するとは限りません。継続中のService Sessionでは Producer から受け取った Binding Indication が優先される場合があります(TS 23.501 §6.3.1.0、適用条件は要確認)。BSFの値だけを見て誤転送と断定しない ことが重要です。
ケース3:HTTP/2は成功したのにPolicyが反映されない¶
NEF → SCP → PCF-B HTTP 201/204 成功
│
├─ PCF-B は正しい Policy Association Context に紐付けた?
├─ PCF-B → SMF の UpdateNotify は送られた?宛先SMFは正しい?
└─ SMF → UPF の PFCP Session Modification は成功した?
HTTP成功とPolicyのEnd-to-End成功は別 です。SMF側もNF Setで冗長化されている場合、PCFからの通知はSMFが示したBinding(手順1)に従って届けられます。PFCP側は PFCP Rules を参照してください。
症状別一覧¶
| 症状 | 想定原因 | 確認ポイント | ログ | Packet | 解決方法 |
|---|---|---|---|---|---|
| PCF-A障害後、Requestが失敗し続ける(SCPから5xx) | Binding LevelがNF InstanceでNF Set併記なし/SCPがRouting-Bindingを受け取っていない | 3gpp-Sbi-Routing-Binding の bl と nfset の有無 |
SCPのRouting・Reselectionログ | http2.header.name contains "3gpp-sbi" |
PCF側でNF Set Level(またはNF Set併記)のBindingを返す設定を確認(実装依存) |
| SCPが代替候補を見つけられない | PCF-BがNRFに別のNF Set IDで登録/必要なServiceが未登録 | NRFのNF Profile(nfSetIdList、NFService) |
NRF・PCF-Bの登録ログ | http2.headers.path contains "nnrf" |
NF Set ID・Service登録を統一 |
| PCF-Bへ転送されるが404等で失敗 | PCF-BがContextを参照できない(共有・複製の遅延や未構成) | PCF-BのContext参照結果、共有DB / UDSFの状態 | PCF-Bのアプリログ | http2(:status、ProblemDetails) |
Context共有方式を確認(実装依存・要検証) |
| SCPが504を返す | 宛先Producerへ到達できない/再選択前に障害検出・リトライ待ちでタイムアウト | SCPの応答(例: 504 + cause TARGET_NF_NOT_REACHABLE。応答待ちのタイムアウトを示す TIMED_OUT_REQUEST との使い分けを含め TS 29.500 §5.2.7.2 で要確認) |
SCPログ | http2.headers.status == "504"(フィールド名は要確認) |
障害検出時間・Retry設定を見直す(実装依存) |
| BSFはPCF-Bなのに後続RequestがPCF-Aへ | Consumerが保存した旧リソースURI / Binding を使用 | 後続Requestの :authority / 3gpp-Sbi-Target-apiRoot |
NEF/AFのログ | http2 |
応答の Location / 3gpp-Sbi-Binding による更新をConsumerが反映しているか確認 |
| AFの別要求がBSF経由で古いPCFへ | BSFのBindingが未更新(NF Instance Level登録) | BSFの pcfId / bindLevel |
BSF・PCFログ | http2.headers.path contains "nbsf-management" |
Nbsf_Management_Update の発行条件を確認 |
| HTTPは成功だがQoSが変わらない | UpdateNotify未送信・宛先誤り/PFCP失敗 | PCF→SMF通知、SMF→UPFのPFCP | PCF・SMF・UPFログ | http2 / pfcp |
下流の手続きを順に確認 |
3GPP仕様とVendor実装の境界¶
| 3GPPが定義するもの | Vendor / 運用設計で確認するもの |
|---|---|
| NF Set / NF Service Set の定義と、Set内での相互代替の考え方 | Pod・VM配置、Site間冗長、どのInstanceを同じSetに入れるか |
| Binding Levelと Selection / Reselection の原則(TS 23.501 §6.3.1.0) | SCPの実際のRouting Policy、Retry回数、障害検出時間 |
3gpp-Sbi-Binding / 3gpp-Sbi-Routing-Binding / 3gpp-Sbi-Target-apiRoot 等のHeader |
Proxy / Service Mesh / LBでのHeaderの透過・書き換え |
| BSFの Register / Discovery / Update と PcfBinding の内容 | Binding DBの複製、Cacheの保持時間 |
| NF Set内のInstanceが同じContextにアクセスできるという前提 | PCF Contextの具体的な共有・同期・復旧方式(UDSF利用の有無を含む) |
NF Setを設定しただけで無停止切替は保証されない
Contextの可用性、対象API、障害検出時間、Retry / Reselection、後続のPolicy処理(UpdateNotify、PFCP)まで含めて検証が必要です。OSS実装(Open5GS / free5GC 等)が本章のHeaderや再選択をどこまでサポートするかも版依存であり、要確認 です。
EPC(4G)との比較¶
| 項目 | 4G EPC | 5GC |
|---|---|---|
| 同一セッションを同じPolicy決定点へ揃える仕組み | DRA(Diameter Routing Agent)によるPCRF binding(TS 29.213、節番号は要確認) | BSF(PCF Binding)+ SBIのBinding Indication |
| 冗長化の単位 | PCRF(ベンダー独自のクラスタ構成が中心)、MMEはMME Pool | NF Set / NF Service Set(全NF共通の概念)。AMFはAMF Set |
| 後続メッセージの宛先固定 | Diameter Session-Id と Destination-Host | Location(リソースURI)+ 3gpp-Sbi-Binding |
| 中継ノードでの再ルーティング | DRA / DEA | SCP(Indirect Communication) |
4GではPCRFの冗長化の多くがベンダー独自のクラスタ設計に委ねられていましたが、5GではNF Set・Binding Level・SCPによる再選択の 原則 が3GPPで規定された点が大きな違いです(ただしContext共有の方式は依然として実装依存)。
3GPP Specification¶
| 仕様 | 節 | 内容 |
|---|---|---|
| TS 23.501 | §5.21.3 | NF Set / NF Service Set による信頼性サポート(NF Set・NF Service Setの定義。枝番 §5.21.3.1〜§5.21.3.4 の割当ては要確認) |
| TS 23.501 | §6.3.1.0 | Binding, Selection, Reselection の原則(Binding Level の表) |
| TS 23.501 | Annex E | NF / NF Service間通信のCommunication Model(Direct / Indirect、Model A〜D) |
| TS 23.503 | §6.1.1.2.2 | BSFとPCF Binding(新PCF Instance選択時のUpdateを含む。枝番は要確認) |
| TS 23.501 | §6.3.7.1 | PCF discovery and selection(要確認) |
| TS 23.501 | §3.1 / §5.21.2 | NF Set・NF Service Set等の定義(§3.1は要確認) / AMF Management(AMF固有の扱い) |
| TS 23.003 | §28.12 / §28.13 | NF Set ID / NF Service Set ID の形式(§28.13は要確認) |
| TS 29.500 | §5.2.3.2.5 | 3gpp-Sbi-Routing-Binding |
| TS 29.500 | §5.2.3.2.6 | 3gpp-Sbi-Binding |
| TS 29.500 | §5.2.3.2.4 / §5.2.3.2.8 | 3gpp-Sbi-Target-apiRoot / 3gpp-Sbi-Producer-Id(枝番は要確認) |
| TS 29.500 | §5.2.7.2 | ProblemDetailsのcause(TARGET_NF_NOT_REACHABLE 等。要確認) |
| TS 29.500 | §6.10 | Indirect Communication のサポート(要確認) |
| TS 29.500 | §6.12 | NF Service Resource に対するBinding(枝番は要確認) |
| TS 29.501 | §4.4.1 | リソースURIの構造(apiRoot / apiName / apiVersion。要確認) |
| TS 29.510 | §要確認 | NRFのNFProfile / NFService(nfSetIdList / nfServiceSetIdList) |
| TS 29.521 | §4.2.2 / §4.2.4 / §4.2.5 | Nbsf_Management Register / Discovery / Update(枝番は要確認) |
| TS 29.512 / TS 29.514 | — | Npcf_SMPolicyControl / Npcf_PolicyAuthorization |
| RFC 9113 | §8.2.1 | HTTP/2のHeaderフィールド名(小文字) |
Summary¶
- NF Instance は個別のNF実体、NF Set は同じContextにアクセスできる相互代替可能なNF Instance群。NF Service Set は1つのNF Instance内のService Instance群
- Binding Level は後続Requestの結び付け範囲であり、障害時の Reselection の許容範囲 を判断する出発点。NF Instance Level+NF Set併記は、通常は指定Instance、利用不可時のみSet内で再選択
- BSFのPCF Binding は主に「最初に担当PCFを見つける」ための台帳、SBIのBinding Indication(
3gpp-Sbi-Binding/3gpp-Sbi-Routing-Binding)は「後続Requestをどこへ運ぶか」のHeader。Producerによる3gpp-Sbi-Bindingの付与は任意 - SCP は Indirect Communication で Routing-Binding を見て再選択できるが、それだけで全障害が回復するわけではない
- PCF障害時は ①発見・ルーティング ②Context継続性 ③Binding整合性 の3段階で切り分ける。Routingの切替とPolicy Contextの継続は別問題
理解度チェック¶
Q1. PCF-AとPCF-Bが同一PCF Setに属し、NEFのRequestに 3gpp-Sbi-Routing-Binding: bl=nfset; nfset=set1.pcfset.5gc.mnc001.mcc001 が付いています。PCF-Aが障害になったときの説明として最も適切なのはどれか。A. NF Set Levelなので、PCF-BがContextを持たなくても必ず処理を継続できる / B. NF Set LevelはPCF-Aだけへの固定を意味するため、PCF-Bへの再選択は禁止される / C. NF Set Levelなので条件を満たせば同一Set内のPCF-Bを再選択できるが、既存Policy Contextを扱えることも必要である / D. このHeaderはN3 GTP-UのQFIを指定する
正解: C。NF Set Level の Binding では、同一NF Set内の別Instanceを選択・再選択できます(TS 23.501 §6.3.1.0)。ただし再選択はルーティングの話であり、PCF-Bが既存のPolicy Association Contextにアクセスできなければ処理は継続できません(A は誤り)。B は NF Instance Level の説明と混同しています。D はUプレーンのQoS Flow識別子とSBI Headerを混同しています。
Q2. BSFのPCF Bindingと、SBIの 3gpp-Sbi-Binding Headerの違いを、作成者と用途の観点で説明してください。
BSFのPCF Bindingは、PCFが Nbsf_Management_Register で登録する「UE / PDU Session ↔ 担当PCF」の対応で、NEF / AF などが 最初に 担当PCFを見つけるために Discovery します。3gpp-Sbi-Binding は、Producer(例: リソースを作成したPCF)や、Notificationの受け先を示すConsumer(例: SMF)が付けるHTTP Headerで、特定リソースに関する後続Request・通知をどの範囲のInstanceへ送るべきか を相手に伝えます。前者はBSFというNFの中の台帳、後者はメッセージに載る情報です。
Q3. Routing-Bindingが bl=nfinstance; nfinst=(PCF-AのID); nfset=(PCF SetのID) です。PCF-Aが正常なとき、SCPはSet内の負荷が軽いPCF-Bへ転送してよいですか。
いいえ。NF Instance Level では、通常は指定されたNF Instance(PCF-A)へ送ります。併記されたNF Setは、指定Instanceが利用できない場合の Reselection の範囲を示すものであり、bl=nfset に読み替えて負荷分散してよいという意味ではありません(TS 23.501 §6.3.1.0。表の細部は原文で要確認)。
Q4. SCP経由のRequestで、ConsumerはTarget-apiRootにPCF-Aを指定しましたが、201応答のLocationはPCF-Bのホストを指していました。何が起きたと考えられ、Consumerは以後どうすべきですか。
PCF-Aが利用できず、SCPがBindingの許容範囲内で同一PCF Set内のPCF-Bを再選択した可能性があります(3gpp-Sbi-Producer-Id があれば処理したProducerを確認できます。付与条件は要確認)。Consumerは、応答で返された Location や(付いていれば)新しい 3gpp-Sbi-Binding を保存し、以後の後続Requestはそれに基づいて送ることが想定されます。同時に、BSFのBindingが新Instanceと矛盾していないか(必要なら Nbsf_Management_Update が行われたか)も確認します。
Next Step¶
- SCPを使う通信モデルを Packet Capture で比較 → SBI Communication Model A–D / SCP / SCP
- 担当PCFを見つける台帳の詳細 → BSF / PCF Binding / BSF
- PCFとPolicy Associationの基本 → PCF / SM Policy Association / PCC Rule / PCF
- SBIのHTTP/2・ProblemDetailsの読み方 → N7 SBI解析
- AF / NEF側からの要求 → AF / N5 / Application Session / NEF / N33 / Event Exposure
- AMF Setとの対比 → GUAMI / AMF Region / Set / Pointer
- Context共有の格納先 → UDSF / NRF