コンテンツにスキップ

BSF / PCF Binding — 複数PCFの中から「そのSessionのPCF」を見つける

難易度: 上級(マニアック) / 想定学習時間: 35分 / 前提: PCF / SM Policy Association / PCC Rule, AF / N5 / Application Session, NEF / N33 / Event Exposure / 主役: BSF, PCF, NEF/AF / 主Interface: Nbsf(SBI), N5

学習目標

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

  • BSF が「Policyを決めるNF」ではなく、既に選ばれたPCFへの到達を支援するNF であることを説明できる
  • NRF(利用可能なPCF候補の発見) と BSF(このPDU Sessionを担当するPCFの発見) の違いを説明できる
  • PcfBinding に含まれる情報(UE IP / IPv6 prefix、DNN、S-NSSAI、SUPI / GPSI、PCF FQDN / IP Endpoint / Instance ID / Set ID、Binding Level)を説明できる
  • Nbsf_Management の Register / Deregister / Discovery / Update / Subscribe と、HTTP上の見え方を説明できる
  • Discovery の 200 OK と 204 No Content の意味の違いを理解し、BSFが絡む障害を Trace で切り分けられる

前提知識

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

BSFページ では「BSFはセッションと担当PCFの対応を管理する台帳」と紹介しています。この章では、台帳に何が書かれ、誰がいつ書き込み、誰がどう引き、引けなかったときにTraceでどう見えるか を、TS 29.521 の API レベルで掘り下げます。


Why — なぜ「そのSessionのPCF」を探す仕組みが必要なのか

商用網では、PCFは冗長化・負荷分散のために 複数台 配置されるのが普通です。PDU Session確立時、SMFは NRF 等を使って PCF を1つ選び、SM Policy Association を作ります(PCF Discovery and Selection は TS 23.501 §6.3.7.1、要確認。TS 23.503 側の関連節も要確認)。

問題はその後です。アプリケーション側(AF)や NEF が「UE IP 10.1.1.10 の通信の QoS を上げたい」と要求するとき、要求は そのPDU SessionのSM Policy Associationを持っているPCF に届かなければ意味がありません。

           SMF ──── N7 ──── PCF-B   ← このSessionのSM Policy Associationを持つ
            │
       PDU Session
       UE IP = 10.1.1.10

External AF ─N33→ NEF ─→ PCF-A ?   ← 別のPCFに届くと、対象Sessionを知らない
                     └─→ PCF-B ✓   ← 正しいPCFに届けば、PCC Ruleを更新できる

AF / NEF は SMF がどのPCFを選んだかを知りません。NRFに聞いても返ってくるのは「PCFとして利用可能な候補」であって、「このSessionの担当PCF」ではありません。そこで、PDU Session(UEアドレス等)と担当PCFの対応関係 を保持し、検索できる NF が必要になります。それが BSF(Binding Support Function) です(TS 23.503 §6.1.1.2)。

例え話: NRFは「病院の医師名簿」で、どの科にどの医師がいるかは分かりますが、「Aさんの主治医は誰か」は分かりません。BSFは「受付のカルテ台帳」で、患者(PDU Session)ごとに主治医(PCF)が記録されています。外部からの問い合わせ(AF要求)は、名簿ではなくカルテ台帳を引いて主治医へ回さないと、話の通じない医師に届いてしまいます。

BSFはPolicyを決めない

QoS や課金の Policy を決めるのは PCF、それを PDU Session / UPF に反映するのは SMF です。BSF は 既に選択済みのPCFへの到達を支援する だけで、PCF を選び直したり、Policy の中身に関与したりはしません。


What — BSF と PCF Binding の位置づけ

NRF / BSF / PCF の役割の違い

NF 答える問い 主な情報 規定
NRF 利用可能な PCFの候補 はどれか?(BSF自体の発見にも使う) NF Profile(NF Type、Service、Endpoint、PcfInfo / BsfInfo 等) TS 29.510 §5.3.2.2(NFDiscover、要確認)
BSF このUE / PDU Sessionを今担当しているPCF はどれか? UEアドレス・DNN・S-NSSAI 等 ⇔ 選択済みPCF の対応(PcfBinding) TS 23.503 §6.1.1.2 / TS 29.521
PCF この通信にどの Policy を適用するか? PCC Rule、QoS Policy 等 TS 23.503 §6.2.1 / TS 29.512 §4.2 / TS 29.514 §4.2(いずれも要確認)

SMFの「最初のPCF選択」と、AF/NEFの「担当PCFの発見」を区別する

SMF が PDU Session 確立時に PCF を選ぶのは PCF Discovery and Selection(NRF やローカル設定を利用、TS 23.501 §6.3.7.1、要確認。TS 23.503 側の関連節も要確認)。一方、AF / NEF が 既に存在するSessionの担当PCF を探すのが BSF の出番です。どちらも「PCFを見つける」ですが、問いが違います。

NRF と BSF は対立するものではなく、2段階 で使われることがよくあります。

flowchart LR
    NEF["NEF / AF"] -- "① Nnrf_NFDiscovery
target-nf-type=BSF" --> NRF["NRF"] NRF -- "BSFの候補
(BsfInfo: IPv4範囲 / DNN 等)" --> NEF NEF -- "② Nbsf_Management_Discovery
UE IP / DNN / S-NSSAI" --> BSF["BSF"] BSF -- "PcfBinding
(PCF FQDN / Endpoint / Instance ID / Set ID)" --> NEF NEF -- "③ Npcf_PolicyAuthorization" --> PCF["PCF-B
(担当PCF)"]

BSF は NRF に NF Type BSF として登録でき、NF Profile の BsfInfo に担当する UE IPv4 アドレス範囲・IPv6 prefix 範囲・DNN・IP Domain 等を載せられます(TS 29.510、BsfInfo の定義節は要確認)。BSF を複数配置する網では、Consumer はまず NRF で「このUEアドレスを担当するBSF」を探し、そのBSFに Binding を問い合わせます。NRF を使わずローカル設定で BSF を固定する構成もあります(実装・配備依存)。

BSF の配備形態

TS 23.503 §6.1.1.2 は、BSF を 単独のNF として配備することも、他のNF(PCF、UDR、NRF、SMF 等)と同居 させることも認めています(列挙の正確な範囲・枝番は要確認)。なお TS 23.501 §6.2(Network Functions の機能記述)には BSF の独立節がなく、BSF の役割は TS 23.503 側に記述されています(NF辞典 の注記参照)。

さらに、BSF は次のような「ルーティング寄り」の振る舞いも持ち得ます。

振る舞い 内容 根拠 / 依存
SCP経由の間接通信での Binding 解決 NEF / AF が PCF を知らずに SCP へ要求を送り、SCP が BSF に Discovery して担当PCFへ転送する(Delegated Discovery) TS 23.501 §6.3.1.0 / §7.1.1、TS 23.503 §6.1.1.2(いずれも枝番は要確認)。詳細は SBI Communication Model
Diameter Proxy / Redirect Agent Rx(Diameter)を使う AF(例: P-CSCF)の要求を、BSF が担当PCFへ中継・リダイレクトする。PcfBinding に PCF の Diameter Host / Realm を含められるのはこのため TS 23.503 §6.1.1.2(枝番は要確認)
SCP / ルーティング製品への BSF 機能の統合 BSF 機能を SCP や DRA 系製品に組み込み、「BSF が SCP として振る舞う」ように見える製品構成 実装・配備依存(仕様上の独立NFとしての見え方とは異なり得る)

「BSF Podが見えない」=仕様違反ではない

BSF は独立NFでも、他NFとの同居でも、SCP / DRA 系製品の機能としても実装できます。商用網で BSF 専用の Pod / VM が見当たらないことだけでは、仕様違反や機能欠落とは判断できません。まず「どのNFが Nbsf_Management を提供しているか」を NRF 登録やConfigで確認します。

PcfBinding — 台帳に書かれていること

BSF が保持する Binding 情報は、TS 29.521 の PcfBinding データ型で表現されます(TS 29.521 §5.6.2.2、節番号は要確認)。代表的な属性を、役割ごとに整理します。

分類 属性(概念名) 意味
UEアドレス(検索キー) ipv4Addr / ipv6Prefix / macAddr48 UEの IPv4アドレス、IPv6 prefix、または Ethernet PDU Session の MACアドレス。少なくとも1つが必要(条件の詳細は要確認)
ipDomain IPv4アドレス空間を区別する識別子。プライベートIPv4の重複 を解消するために使う
addIpv6Prefixes / addMacAddrs 追加の IPv6 prefix / MAC(Release により追加、要確認)
Sessionの属性 dnn DNN(必須)
snssai S-NSSAI(必須)
ユーザ識別子 supi / gpsi SUPI / GPSI(任意)
担当PCFの宛先 pcfFqdn / pcfIpEndPoints 担当PCFの FQDN、または IP Endpoint(アドレス・ポート)。どちらかで到達できる必要がある(条件は要確認)
pcfDiamHost / pcfDiamRealm Rx(Diameter)用の PCF Host / Realm
担当PCFの識別 pcfId PCF の NF Instance ID
pcfSetId PCF の NF Set ID
bindLevel Binding Level。NF_INSTANCE(このインスタンスに紐づく)/ NF_SET(Set 内の任意のPCFで処理可能)
recoveryTime PCF の再起動時刻。Consumer が「登録元PCFが再起動した」ことを検知する手がかり(要確認)
その他 suppFeat Supported Features(Update 等の任意機能のネゴシエーション)

主要属性の抜粋であり、網羅ではありません。属性の必須 / 任意 / 条件付きの区分と、Release ごとの追加属性は TS 29.521 の該当版で確認してください。

UE IP だけで一意になるとは限らない

異なる DNN / S-NSSAI / IP Domain では、プライベート IPv4 アドレスが重複し得ます。Discovery は UE アドレスに DNN・S-NSSAI・IP Domain 等を組み合わせて絞り込みます。

UE IPv4: 10.1.1.10
  ├─ DNN=internet,   S-NSSAI=SST1/SD 010203 → PCF-B
  └─ DNN=enterprise, S-NSSAI=SST1/SD 0A0B0C → PCF-C

PDU Session 向け Binding と UE 向け Binding は別物

本章の主題は PDU Session 向けの PCF Binding(リソース pcfBindings)です。Release 17 以降、AM / UE Policy を担う PCF for the UE の Binding(リソース pcfUeBindings、SUPI 等をキーとする)も Nbsf_Management で扱えるようになりました(Release・節番号は要確認)。同じ PCF が両方を担当する実装でも、検索対象とリソースは別 なので混同しないようにします。


How — Binding の登録・検索・利用

Nbsf_Management のサービスオペレーション

オペレーション Consumer → BSF 主な用途 Stage 2 Stage 3
Register PCF → BSF Binding の新規登録 TS 23.502 §5.2.13.2.2 TS 29.521 §4.2.2
Deregister PCF → BSF Binding の削除 TS 23.502 §5.2.13.2.3 TS 29.521 §4.2.3
Discovery NEF / AF / SCP 等 → BSF 条件に一致する Binding(担当PCF)の検索 TS 23.502 §5.2.13.2.4 TS 29.521 §4.2.4
Update PCF → BSF 既存 Binding の変更(UEアドレス追加、PCF切替等) TS 23.502 §5.2.13.2.5 TS 29.521 §4.2.5
Subscribe / Unsubscribe / Notify Consumer ⇔ BSF Binding の登録・削除イベントの購読と通知 TS 23.502 §5.2.13.2.6 以降(要確認) TS 29.521 §4.2.6〜§4.2.8(要確認)

Update は Rel-16 で、Subscribe / Notify は Rel-17 で追加された機能で、利用には Supported Features のネゴシエーションが関係します(Release・Feature 名は要確認)。

HTTP 上の見え方(PDU Session Binding)

{apiRoot}/nbsf-management/v1 を API のルートとします(TS 29.521 §5.1 / §5.3、節番号は要確認)。

オペレーション Method Resource 主な応答
Register POST /pcfBindings 201 Created + Location: .../pcfBindings/{bindingId} + PcfBinding
Discovery GET /pcfBindings?ipv4Addr=...&dnn=...&snssai=... 200 OK + PcfBinding / 204 No Content / 400(MULTIPLE_BINDING_INFO_FOUND 等)
Update PATCH /pcfBindings/{bindingId} 200 OK + 更新後の PcfBinding(Body の型は PcfBindingPatch、要確認)
Deregister DELETE /pcfBindings/{bindingId} 204 No Content

Register で返る bindingId(Location ヘッダ) を PCF が覚えておき、Update / Deregister ではそれを使います。Discovery は 個別リソースではなくコレクションへのクエリ なので、Consumer は bindingId を知らなくても検索できます。

Discovery の 204 は「エラー」でも「404」でもない

TS 29.521 §4.2.4.2 は、Discovery の条件に一致する Binding が無い場合の応答を 204 No Content と定めています(枝番は要確認)。これは「BSFが故障した」「PCFが存在しない」ことを意味せず、「この条件で登録された Binding は(このBSFには)無い」 という正常な検索結果です。一方、検索条件が不足している場合や、条件に複数の Binding が一致して一意に決まらない場合は 400 Bad Request(cause 例: MULTIPLE_BINDING_INFO_FOUND)になります。Update / Deregister で存在しない bindingId を指定した場合の 404 Not Found とも区別します(各 cause の定義節は要確認)。

既存 Binding と衝突する Register

TS 29.521 には、Register 時に既存 Binding が見つかった場合に BSF が 403 Forbidden(cause: EXISTING_BINDING_INFO_FOUND)を返す規定があります。ただし、その判定キーは UE アドレスの衝突ではなく、Rel-17 の「同じ UE ID・DNN・S-NSSAI の組に同じ PCF を選ぶ」機能(PcfBinding の paraCom 属性、Supported Feature SamePcf)に関わる SUPI・DNN・S-NSSAI の組 である可能性があります(適用 Feature・Release・節番号は TS 29.521 §4.2.2 / §5.7.3 で要確認)。同じ UE アドレスの Binding が既にある状態で Register が来たときに、BSF が置き換えるか拒否するか も、本章では要確認 とします。

Call Flow — 登録 → 検索 → Policy 適用

以下は、PDU Session が確立して PCF-B が選択された後、外部 AF が NEF 経由で QoS を要求する場合の 概念的な順序 です。実際のタイミングや追加メッセージはシナリオ・Release により異なります。

sequenceDiagram
    participant SMF
    participant PCFB as PCF-B
    participant BSF
    participant NRF
    participant NEF
    participant AF
    participant UPF
    SMF->>PCFB: Npcf_SMPolicyControl_Create
(SUPI, DNN, S-NSSAI, UE IPv4) PCFB-->>SMF: 201 Created (SM Policy Decision) PCFB->>BSF: Nbsf_Management_Register
POST /pcfBindings (PcfBinding) BSF-->>PCFB: 201 Created
Location: .../pcfBindings/{bindingId} Note over SMF,UPF: しばらく後、アプリ側からQoS要求 AF->>NEF: N33 AF Session with QoS 要求
(UE IPv4, 要求QoS) NEF->>NRF: Nnrf_NFDiscovery (target-nf-type=BSF) NRF-->>NEF: BSF候補 (NF Profile / BsfInfo) NEF->>BSF: Nbsf_Management_Discovery
GET /pcfBindings?ipv4Addr=...&dnn=...&snssai=... BSF-->>NEF: 200 OK (PcfBinding: PCF-B FQDN / Endpoint) NEF->>PCFB: Npcf_PolicyAuthorization_Create PCFB-->>NEF: 201 Created PCFB->>SMF: Npcf_SMPolicyControl_UpdateNotify
(PCC Rule 更新) SMF->>UPF: PFCP Session Modification Request UPF-->>SMF: PFCP Session Modification Response Note over PCFB,BSF: PDU Session Release 時 PCFB->>BSF: Nbsf_Management_Deregister
DELETE /pcfBindings/{bindingId} BSF-->>PCFB: 204 No Content

図のポイントは、Binding を登録するのは PCF、検索するのは NEF / AF(あるいは SCP) である点です。SMF は BSF に登録しません。Trusted AF は NEF を介さずに担当 PCF を見つけ、N5 で直接要求できます(N5)。見つけ方は、BSF への Discovery、SCP 経由、Rx を使う AF なら BSF の Diameter Proxy / Redirect、ローカル設定などがあり、どれを使うかは 配備依存 です。NEF 経由の要求の流れの詳細は NEF / N33 を参照してください。

PCF はいつ登録・更新・削除するか

TS 23.503 §6.1.1.2(枝番は要確認)の考え方を整理すると次のとおりです。

タイミング PCF の動作 オペレーション
SM Policy Association 確立時に、UE の IPv4 アドレス / IPv6 prefix(Ethernet なら MAC)が分かっている Binding を登録 Register
UE アドレスが後から割り当て・追加・変更された(例: IPv4 を後で割当、IPv6 multi-homing で prefix 追加) Binding を更新(Update 非対応時に削除+再登録で代替するかは要確認) Update / Deregister + Register
SM Policy Association が終了した(PDU Session Release 等) Binding を削除 Deregister

BSF を使うかどうかは網の構成次第

PCF が1台しかない、あるいは AF / NEF が担当PCFを他の手段(ローカル設定等)で確実に決められる網では、BSF を配備しない構成もあり得ます。「どの条件で PCF が BSF に登録するか」は、仕様の条件に加えてオペレータの設定にも依存します(実装・設定依存)。

Signal Flow

# メッセージ 区間 意味 規定
1 Npcf_SMPolicyControl_Create SMF → PCF SM Policy Association の確立 TS 23.502 §4.16.4 / TS 29.512 §4.2.2(要確認)
2 Nbsf_Management_Register(POST) PCF → BSF Binding 登録。201 + Location TS 23.502 §5.2.13.2.2 / TS 29.521 §4.2.2
3 Nnrf_NFDiscovery NEF → NRF BSF の発見(ローカル設定なら省略) TS 29.510 §5.3.2.2(要確認)
4 Nbsf_Management_Discovery(GET) NEF / AF → BSF 担当PCFの検索。200 / 204 / 400 TS 23.502 §5.2.13.2.4 / TS 29.521 §4.2.4
5 Npcf_PolicyAuthorization_Create NEF / AF → PCF AF Session の作成(QoS 要求) TS 29.514 §4.2.2 / TS 23.502 §4.15.6.6(要確認)
6 Npcf_SMPolicyControl_UpdateNotify PCF → SMF PCC Rule の更新を SMF へ通知 TS 29.512 §4.2.3 / TS 23.502 §4.16.5.2(要確認)
7 PFCP Session Modification SMF → UPF QoS / ゲートの UPF への反映 TS 29.244 §7.5.4 / §7.5.5(要確認)
8 Nbsf_Management_Deregister(DELETE) PCF → BSF Binding 削除。204 TS 23.502 §5.2.13.2.3 / TS 29.521 §4.2.3

Packet Analysis (Wireshark)

Display Filter

フィルタ 用途
http2 SBI 全体。TLS の場合は復号鍵が必要
http2.headers.path contains "nbsf-management" Nbsf_Management のリクエストに絞る
http2.headers.path contains "pcfBindings" PDU Session Binding のリソースに絞る
http2.headers.status == "204" 応答コード(204 等)で絞る
http2.headers.path contains "npcf-policyauthorization" Discovery 後の NEF / AF → PCF の要求
http2.headers.path contains "nnrf-disc" NRF への Discovery(BSF の発見)
json JSON Body(PcfBinding / ProblemDetails)

HTTP/2 ヘッダのフィールド名(http2.headers.path / http2.headers.status 等)や型は Wireshark の版で異なるため断定しません(要確認)。SBI は通常 TLS で保護されるため、中身を見るには TLS 鍵ログによる復号 か、NF 側の Trace / ログ が必要です(Packet Analysis の Tips)。

Decode例(概念表現)

以下は表示構造の概念表現で、値はすべて架空例です(要キャプチャ)。

[PCF-B → BSF] HEADERS
  :method: POST
  :path: /nbsf-management/v1/pcfBindings
  content-type: application/json
[PCF-B → BSF] DATA  (JSON: PcfBinding)
  {
    "supi": "imsi-001010000000001",
    "ipv4Addr": "10.1.1.10",
    "dnn": "internet",
    "snssai": { "sst": 1, "sd": "010203" },
    "pcfFqdn": "pcf-b.example.invalid",
    "pcfIpEndPoints": [ { "ipv4Address": "192.0.2.20", "port": 443 } ],
    "pcfId": "6f1c2c1e-....",
    "pcfSetId": "set1.pcfset.5gc.mnc001.mcc001",
    "bindLevel": "NF_SET"
  }
[BSF → PCF-B] HEADERS
  :status: 201
  location: https://bsf.example.invalid/nbsf-management/v1/pcfBindings/abc123

[NEF → BSF] HEADERS
  :method: GET
  :path: /nbsf-management/v1/pcfBindings?ipv4Addr=10.1.1.10&dnn=internet&snssai=...
[BSF → NEF] HEADERS
  :status: 200            ← 一致あり。DATA に PcfBinding
  (または :status: 204   ← 一致なし。DATA なし)
  (または :status: 400   ← DATA に ProblemDetails, cause = MULTIPLE_BINDING_INFO_FOUND)

snssai のようなオブジェクト型のクエリパラメータは、JSON をエンコードした形で :path に現れます。エンコード後の表示は見づらいので、デコードした値を DNN / S-NSSAI の期待値と並べて 確認します。

見る順番

flowchart TD
    A["① SMF → PCF
Npcf_SMPolicyControl_Create
どのPCFが選ばれたか"] --> B["② PCF → BSF
POST /pcfBindings
登録内容 (UE IP / DNN / S-NSSAI)"] B --> C["③ BSF → PCF
201 Created / Location / bindingId"] C --> D["④ NEF・AF → BSF
GET /pcfBindings
検索条件"] D --> E["⑤ BSF → NEF・AF
200 + PcfBinding / 204 / 4xx"] E --> F["⑥ NEF・AF → PCF
Npcf_PolicyAuthorization
宛先は ① のPCFと一致するか"] F --> G["⑦ PCF → SMF → UPF
UpdateNotify / PFCP Modification"]

確認のコツは、① で SMF が選んだ PCF と、⑤ で BSF が返した PCF と、⑥ で実際に要求が届いた PCF が、同じものか を突き合わせることです。HTTP/2 では :method・:path・:status・stream ID、JSON Body、ProblemDetails の cause を見ます(ProblemDetails の読み方は N7 SBI解析 を参照)。


Trouble Shooting

症状 想定原因 確認ポイント ログ Packet 解決方法
A. AF の QoS 要求が既存 Session に反映されない 要求が担当外の PCF に届いた / PCF は受けたが SMF・UPF へ反映されていない ① SMF が選んだ PCF、⑤ BSF の応答の PCF、⑥ 要求の宛先 PCF が一致するか。その後の UpdateNotify・PFCP NEF / PCF / SMF ログ http2(npcf-smpolicycontrol / nbsf-management / npcf-policyauthorization)、pfcp 不一致の箇所(Binding 登録・Discovery 条件・NEF の宛先決定)を修正し、反映経路を最後まで追う
B. PDU Session は成功したが Discovery が 204 Binding 未登録(PCF の BSF 利用設定・登録失敗)/ 検索条件の不一致(DNN・S-NSSAI・IP Domain・IPv6 prefix 長)/ UE アドレス割当・変更が未反映 / 登録先と検索先の BSF が違う ② の POST が出ているか・201 か。登録内容と検索条件の差分。NRF から得た BSF が同じか PCF / BSF / NEF ログ http2.headers.path contains "pcfBindings" 「PCF が無い」と即断しない。登録・条件・BSF 選択を順に潰す
C. 同じ UE IP で複数 Binding が見つかる(400 MULTIPLE_BINDING_INFO_FOUND) プライベート IPv4 の DNN / Slice 間重複 / 古い Binding の削除漏れ(PCF 障害・Release 時の Deregister 失敗) Discovery の条件に DNN・S-NSSAI・IP Domain が入っているか。BSF 内の同一アドレスの Binding 一覧(recoveryTime 等で古さを判断) BSF ログ、BSF の Binding 一覧(CLI は実装依存) json(ProblemDetails.cause) 検索条件を十分に付ける。IP Domain を設計する。古い Binding の掃除(自動か手動かは実装依存)
D. PCF 切替後も旧 PCF へ要求が飛ぶ 新 PCF が Binding を Update していない / bindLevel が NF_INSTANCE のまま / NEF・AF・SCP 側のキャッシュ / Binding Indication・NF Set 設計の不整合 Binding の pcfId・pcfSetId・bindLevel・recoveryTime。旧 PCF 宛ての要求の応答(タイムアウト・エラー) PCF / BSF / NEF / SCP ログ http2(PATCH /pcfBindings の有無) Binding の更新契機と NF Set 冗長の設計を見直す(NF Set / Binding Indication)。キャッシュの扱いは実装依存
BSF への Register 自体が失敗(403 等) 既存 Binding の検出(EXISTING_BINDING_INFO_FOUND。判定キーは SUPI・DNN・S-NSSAI の組〔paraCom〕に関わる可能性、要確認)/ 認可(OAuth2 トークン)の問題 応答の ProblemDetails。既存 Binding の登録元 PCF PCF / BSF ログ json 応答の cause と既存 Binding の内容を確認し、古い Binding を削除。拒否条件の詳細は要確認
NEF が BSF を見つけられない NRF に BSF が未登録 / BsfInfo のアドレス範囲・DNN が UE アドレスと合わない NRF の Discovery 応答(空か) NEF / NRF ログ http2.headers.path contains "nnrf-disc" BSF の NF Profile(BsfInfo)を修正、またはローカル設定を確認

BSF が HA を自動的に完成させるわけではない

ケース D のように、PCF の障害切替後も正しく到達できるかは、BSF だけでなく PCF の NF Set 構成、Binding Level、Binding の更新契機、Consumer 側の再選択・キャッシュ の組み合わせで決まります。BSF はあくまで「今の担当」を記録する台帳で、台帳の書き換えを誰がいつ行うかを設計しないと、古い担当を指し続けます。


3GPP仕様とVendor実装の境界

3GPP が定義するもの Vendor / 運用が決めるもの
BSF の役割、PCF が Binding を登録・更新・削除する考え方(TS 23.503 §6.1.1.2) BSF を独立 NF にするか、PCF / NRF / SCP / DRA 製品と同居させるか
Nbsf_Management の API(リソース、Method、応答コード、cause) Binding DB の製品、Pod 構成、Replica 同期方式、内部キャッシュ
PcfBinding の属性(UE アドレス、DNN、S-NSSAI、PCF 宛先、Instance ID / Set ID、Binding Level) Binding 一覧を見る CLI、ログ形式、Dashboard
Discovery の 200 / 204 / 400 の意味 古い Binding の自動掃除、監視設計(衝突時の振る舞いの細部のうち仕様上の規定範囲は要確認)
BsfInfo による BSF 発見(TS 29.510 §5.3.2.2 系、要確認) NRF を使うかローカル設定で BSF を固定するか

BSF が絡む障害では、「Binding が仕様どおり登録・検索されたか(3GPP の信号)」と「BSF 製品内部のデータ同期やキャッシュの問題(実装)」 を分けて考えます。前者は Trace で確認でき、後者は製品ログ・ベンダーサポートの領域です。


EPC(4G)との比較

項目 4G EPC 5GC
ポリシー決定点 PCRF PCF
同一 Session を同じポリシー決定点へ揃える仕組み DRA(Diameter Routing Agent)による PCRF Binding(Gx / Rx を同じ PCRF へ)。TS 29.213 §7 系の PCRF addressing / TS 23.203 §7.6(いずれも要確認) BSF(Nbsf_Management)による PCF Binding
方式 Diameter のルーティング(Proxy / Redirect) SBI の検索 API(Consumer が担当 PCF を知って直接送る)。BSF が Diameter Proxy / Redirect として振る舞う構成も可(TS 23.503 §6.1.1.2 / TS 29.513、枝番は要確認)
Binding のキー UE IP アドレス、APN、ユーザ識別子 等 UE IP / IPv6 prefix / MAC、DNN、S-NSSAI、IP Domain 等
AF 側の IF Rx(Diameter) N5(Npcf_PolicyAuthorization)、または NEF 経由(N33)

4G の DRA は「メッセージを中継しながら同じ PCRF へ振り分ける」ルーティング要素でしたが、5G の BSF は基本的に 「担当 PCF を教える」検索サービス として整理されています。ただし SCP 経由の間接通信や Diameter Proxy としての振る舞いを組み合わせると、DRA に近い見え方にもなります。


3GPP Specification

仕様 節 内容
TS 23.503 §6.1.1.2 AF 要求を担当 PCF へ Binding する仕組み、BSF の役割・配備形態(§6.1.1.2.1 / §6.1.1.2.2 の枝番は要確認)
TS 23.501 §6.3.7.1 PCF Discovery and Selection(SMF 等による最初の PCF 選択。要確認。TS 23.503 側の関連節も要確認)
TS 23.501 §6.3.1.0 / §7.1.1 NF / NF Service の発見と、SCP を介した間接通信(要確認)
TS 23.502 §5.2.13.2.2〜§5.2.13.2.5 Nbsf_Management_Register / Deregister / Discovery / Update
TS 23.502 §5.2.13.2.6 以降 Nbsf_Management_Subscribe / Unsubscribe / Notify(要確認)
TS 23.502 §4.16.4 / §4.16.5.2 / §4.15.6.6 SM Policy Association Establishment / PCF 起点の Modification / AF session with required QoS(要確認)
TS 29.521 §4.2.2 / §4.2.3 / §4.2.4 / §4.2.5 Register(POST)/ Deregister(DELETE)/ Discovery(GET。200・204 は §4.2.4.2、枝番は要確認)/ Update(PATCH)
TS 29.521 §4.2.6〜§4.2.8 Subscribe / Unsubscribe / Notify(要確認)
TS 29.521 §5.6.2.2 PcfBinding データ型(要確認)
TS 29.510 §5.3.2.2 Nnrf_NFDiscovery(NFDiscover)。NF Profile の BsfInfo(定義節も含め要確認)
TS 29.512 / TS 29.514 §4.2.2 / §4.2.3、§4.2.2 Npcf_SMPolicyControl(N7)Create / UpdateNotify、Npcf_PolicyAuthorization(N5)Create(要確認)
TS 29.244 §7.5.4 / §7.5.5 PFCP Session Modification Request / Response(要確認)
TS 29.513 — Policy and Charging signalling flows。BSF を使う Binding 手順、Diameter Proxy / Redirect の流れ(Binding 関連節は要確認)
TS 29.213 / TS 23.203 §7 系 / §7.6 EPC の PCRF addressing(DRA)/ PCRF discovery and selection(比較用。要確認)

Summary

  • BSF は、PDU Session(UE アドレス・DNN・S-NSSAI 等)と 担当 PCF の対応(PcfBinding)を保持し、検索可能にする NF。Policy は決めない
  • NRF は「利用可能な PCF(や BSF)の候補」、BSF は「このSessionを今担当する PCF」を答える。2 段階で使われることが多い
  • Binding を 登録・更新・削除するのは PCF、検索するのは NEF / AF / SCP。Nbsf_Management は Register / Deregister / Discovery / Update(+ Rel-17 以降の Subscribe / Notify)
  • Discovery の 204 No Content は「一致する Binding が無い」という正常応答。400 MULTIPLE_BINDING_INFO_FOUND は条件が曖昧で一意に決まらないことを示す
  • PcfBinding は PCF の宛先(FQDN / Endpoint)と識別(Instance ID / Set ID / Binding Level) を持ち、PCF 冗長時の到達性に関わる
  • 障害解析では、SMF が選んだ PCF = BSF が返した PCF = 要求が届いた PCF かを Trace で突き合わせる

理解度チェック

Q1. NEF が UE IP 10.1.1.10 に対する QoS 要求を処理するため BSF へ Discovery を実行したところ、204 No Content が返りました。SMF と PCF の SM Policy Association は確立済みです。最も適切な説明はどれか。A. 204 は BSF の故障を示すので UPF を再起動すべき / B. SM Policy Association が存在すれば BSF への Binding 登録も必ず成功している / C. 一致する Binding が見つからなかった可能性があり、PCF から BSF への登録状況と UE IP・DNN・S-NSSAI 等の検索条件を確認する / D. 204 は QoS 要求が UPF に正常適用されたことを示す

正解: C。TS 29.521 §4.2.4.2 では、Discovery の条件に一致する Binding が無い場合に 204 No Content を返します。BSF の故障(A)や QoS 適用完了(D)を意味しません。また、SM Policy Association の確立と BSF への Register は別のメッセージなので、前者の成功が後者の成功を保証するわけではありません(B)。PCF の POST /pcfBindings と 201 の有無、登録内容と検索条件の差分、登録先と検索先の BSF が同じかを確認します。

Q2. 「PCF は NRF に登録されているのだから、NEF は NRF に聞けば担当 PCF が分かるはずだ」という意見の誤りを説明してください。

NRF が返すのは、NF Type や Service、Slice 等の条件に合う 利用可能な PCF の候補 です。どの PCF が 特定の PDU Session の SM Policy Association を持っているか は、SMF の選択結果であり NRF は知りません。その対応を保持するのが BSF です。なお NRF は「BSF を見つける」ためには使えます(BsfInfo による BSF の発見)。

Q3. Discovery に UE IPv4 アドレスだけを指定したところ 400 Bad Request(cause: MULTIPLE_BINDING_INFO_FOUND)が返りました。考えられる原因と対処は何ですか。

同じ IPv4 アドレスに複数の Binding が一致しています。異なる DNN / S-NSSAI / IP Domain でプライベート IPv4 が重複している場合と、PCF 障害や Release 時の Deregister 失敗で古い Binding が残っている場合が考えられます。対処は、Discovery に DNN・S-NSSAI・IP Domain 等を付けて一意に絞ること、IP Domain の設計を見直すこと、古い Binding を掃除すること(掃除の仕組みは実装依存)です。

Q4. PCF Set 内で PCF-B が障害となり PCF-C に切り替わった後も、NEF が PCF-B へ要求を送り続けています。Binding のどの属性を確認しますか。

pcfId(NF Instance ID)、pcfSetId(NF Set ID)、bindLevel(NF_INSTANCE か NF_SET か)、recoveryTime、および宛先の pcfFqdn / pcfIpEndPoints を確認します。Binding Level が NF_INSTANCE のまま新 PCF が Update していなければ、BSF は旧 PCF を返し続けます。NF_SET なら Consumer が Set 内の別 PCF を選び直せる余地があります。加えて NEF / SCP 側のキャッシュ(実装依存)や NF Set・Binding Indication の設計も確認します。BSF だけで HA が完成するわけではありません。


Next Step