BSF / PCF Binding — 複数PCFの中から「そのSessionのPCF」を見つける¶
学習目標¶
この章を読み終えると、次のことができるようになります。
- 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 で切り分けられる
前提知識¶
- PCF / SM Policy Association / PCC Rule — SMFとPCFの間の SM Policy Association
- AF / N5 / Application Session — AFがPCFへQoS等を要求する Npcf_PolicyAuthorization
- NEF / N33 / Event Exposure — 外部AFの要求をNEFが5GC内部へ橋渡しする仕組み
- 補助: BSF / PCF / NRF / N5 / Policy
この章の焦点(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 等を組み合わせて絞り込みます。
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¶
- PCF 冗長と Binding Level / Binding Indication の関係 → NF Set / Binding Indication / PCF冗長
- SCP が BSF を使って担当 PCF へ転送する間接通信 → SBI Communication Model A–D / SCP
- BSF を引く側の NF → NEF / N33 / Event Exposure / AF / N5 / Application Session
- 関連する NF / Interface → BSF / PCF / NRF / SCP / N5 / Policy