NEF / N33 / Event Exposure — 外部AFに5GCをどこまで見せるか¶
学習目標¶
この章を読み終えると、次のことができるようになります。
- NEF が「外部要求をそのまま転送するProxy」ではなく、認可・情報隠蔽・識別子変換 を行う境界であることを、TS 23.501 §6.2.5 に沿って説明できる
- N33(AF⇔NEF) と N5(AF⇔PCF) の違いと、外部AF → NEF → PCF の経路で何が変換されるかを説明できる
- AF session with required QoS と Event Exposure の Call Flow を描き、区間ごとの 相関キー(UE IP、AF Identifier、Transaction Reference ID、App Session ID 等)を挙げられる
- 「API呼び出しは2xxで成功したのにQoSが効かない/通知が来ない」事象を、4つの区間 に分けて切り分けられる
前提知識¶
- AF / N5 / Application Session — AFがPCFへ要求する Npcf_PolicyAuthorization の基本(この章の直前の章)
- NEF / N33 / AF / N5 — 各NF・参照点の概要
- 補助: NEF・CAPIF(能力公開とCAPIFの概念) / SUPI / SUCI / 5G-GUTI(内部識別子) / QoS / PCF / BSF
この章の焦点(Level ∞ マニアック)
NEF・N33ページでは「NEFは外部AFの受付窓口」と紹介しています。この章では、受付が何を確認し、何を隠し、何に翻訳して、どの内部NFへ取り次ぐのか、そして「受付で受理された」ことと「実際に効いた/通知された」ことの間に何段の処理があるのかを、Call FlowとTrace解析の観点で掘り下げます。CAPIFの詳細は NEF・CAPIF に譲ります。
Why — 外部AFに5GCを「そのまま」見せてはいけない理由¶
外部のアプリケーション事業者(外部AF)は、次のようなことを5GCに頼みたいと考えます。
- 「このUEの、この映像フローを優先してほしい」(QoS要求)
- 「このIoT端末が圏内に戻ったら教えてほしい」(イベント通知)
- 「この端末の想定移動パターンを伝えておきたい」(パラメータ提供)
しかし、内部NF(PCF / UDM / AMF / SMF)のSBIを外部へ直接開くと、次の問題が起きます。
| 問題 | 例 |
|---|---|
| 識別子の漏えい | 外部AFが SUPI(加入者の恒久ID)や内部のNF Endpointを知ってしまう |
| 認可の欠如 | どのAFが、どのUE・どのAPIを、どの頻度で使ってよいかを管理できない |
| トポロジの露出 | どのPCFがどのUEを担当しているか等、内部構成が外から見える |
| 識別子の不一致 | 外部AFが知っているのは電話番号・外部ID・UEのIPアドレスで、5GC内部の鍵(SUPI・PDU Session)とは一致しない |
そこで、外部との境界に NEF(Network Exposure Function) を置き、外部AFは N33 でNEFとだけ話す形にします(TS 23.501 §5.20 / §6.2.5)。
例え話: NEFは「銀行の窓口係」です。お客さん(外部AF)は口座番号ではなく名前や会員番号(GPSI / 外部ID)で依頼し、窓口係が本人確認と権限確認(認可)をしてから、行内の口座番号(SUPI)や担当部署(PCF / UDM)に翻訳して取り次ぎます。行内の口座番号や担当者の内線番号は、お客さんには見せません。窓口で「受け付けました」と言われても、振込が実際に完了したかは別の通知で確認する必要があります。
What — NEFの役割(TS 23.501 §6.2.5)¶
NEFの機能¶
TS 23.501 §6.2.5(Rel-16以降は §6.2.5.0 NEF functionality、枝番は要確認)は、NEFの機能をおおむね次のように定めています。
| 機能 | 内容 | この章での例 |
|---|---|---|
| Capability / Event の Exposure | 内部NFの能力・イベントを、AF等へ公開する | Event Exposure(UE到達可能性など) |
| 外部から内部への安全な情報提供 | 外部アプリが提供する情報(Expected UE Behaviour 等)を受け付ける。NEFはAFを 認証・認可 し、throttling(流量制御) を補助できる | Parameter Provisioning |
| 内部⇔外部の情報変換 | AF-Service-Identifier と DNN / S-NSSAI 等の対応付け、ネットワークやユーザの機微情報の マスキング(ネットワークポリシーに従う) | QoS要求、Traffic Influence |
| UDRへの構造化データ格納・参照 | 他NFから受けた情報を Nudr で UDR に格納・取得する | Traffic Influence(UE IPで特定しない要求) |
| PFD管理 / Analytics Exposure 等 | PFD(Packet Flow Description)管理、NWDAFの分析結果の外部公開 等(NEFインスタンスごとにサポート範囲は異なる) | — |
NEFは単純なProxyではない
外部AFのAPI 1種類に対して、NEFが話しかける内部NFは APIと手続きごとに異なります。QoS要求はPCF(BSFでPCFを特定)、イベント購読は主にUDM経由でAMF/SMF、UE IPで特定しないTraffic InfluenceはUDRへ、というように行き先が変わります。「NEFは全部PCFへ転送する」と考えると、切り分けを誤ります。
識別子変換と情報隠蔽¶
外部AFが知っている識別子と、5GC内部の識別子は一致しません。NEFはこの差を埋めますが、内部識別子を外部へ返すわけではありません。
flowchart LR
subgraph EXT["外部AFが知っているもの"]
E1["GPSI
(External Identifier / MSISDN)"]
E2["UE IPアドレス
(+ IP Domain)"]
E3["AF Identifier
AF-Service-Identifier"]
end
subgraph NEF["NEF(境界)"]
N1["認可
(このAFはこのAPI・このUEを扱えるか)"]
N2["識別子変換・マスキング"]
end
subgraph INT["5GC内部の鍵"]
I1["SUPI
(UDMがGPSIと対応付け)"]
I2["担当PCF / PDU Session
(BSFのBindingで特定)"]
I3["DNN / S-NSSAI"]
end
E1 --> N1 --> N2 --> I1
E2 --> N1
N2 --> I2
E3 --> N1
N2 --> I3
| 外部の識別子 | 内部で何に対応するか | 誰が対応付けるか |
|---|---|---|
| GPSI(External Identifier または MSISDN、TS 23.501 §5.9.8) | SUPI | GPSI⇔SUPIの対応は加入者データとして UDM/UDR が持つ。NEFはGPSIのままUDMへ渡すか、UDMに変換を問い合わせる(手続きにより異なる、要確認) |
| UE IPアドレス(+ IP Domain / DNN / S-NSSAI) | 当該PDU Sessionを担当する PCF | BSF のBinding情報(Nbsf_Management_Discovery)で特定。詳細は BSF / PCF Binding |
| AF-Service-Identifier | DNN / S-NSSAI 等 | NEF(オペレータ設定に基づく、TS 23.501 §6.2.5) |
| QoS Reference | 事前合意された QoS パラメータ | PCF(オペレータとAF事業者の合意に基づく設定、内容は実装・契約依存) |
- External Identifier の形式は
<Local Identifier>@<Domain Identifier>です(TS 23.003 §19.7.2、要確認)。 - NEFは網ポリシーに従い、網情報・ユーザ情報のうち機微な部分を マスキング します(TS 23.501 §6.2.5)。外部向けのUE識別子は GPSI です(TS 23.501 §5.9.8)。たとえばBSFの応答(PCF Binding)にはSUPIが含まれ得ますが、それをそのまま外部AFへ渡す設計にはしません。外部AFへ返すのは 公開が許可された情報だけ です。
N33 / N5 / NEF⇔PCF — 参照点の違い¶
flowchart LR
XAF["外部AF
(オペレータが直接アクセスを許可しないAF)"] == "N33
Northbound API" ==> NEF["NEF"]
TAF["信頼されたAF
(オペレータ網内など)"] == "N5
Npcf_PolicyAuthorization" ==> PCF["PCF"]
NEF -- "NEF⇔PCF
Npcf_PolicyAuthorization
(NEFがAFとして振る舞う)" --> PCF
NEF -- "Nbsf_Management" --> BSF["BSF"]
NEF -- "Nudm_EventExposure 等" --> UDM["UDM"]
UDM -- "Namf_EventExposure" --> AMF["AMF"]
PCF -- "N7
Npcf_SMPolicyControl" --> SMF["SMF"]
| 観点 | N33 | N5 | NEF⇔PCF |
|---|---|---|---|
| 両端 | 外部AF ⇔ NEF | AF ⇔ PCF | NEF ⇔ PCF |
| 使うAPI | Northbound API(TS 29.522。T8由来のAPIを含む) | Npcf_PolicyAuthorization(TS 29.514) | Npcf_PolicyAuthorization(TS 29.514) |
| 識別子 | GPSI / UE IP / AF Identifier(外部向け) | UE IP、AF Application Identifier 等 | NEFが変換済みの内部向け情報 |
| 参照点名 | N33(TS 23.501 §4.2.7) | N5(TS 23.501 §4.2.7) | N30(TS 23.501 §4.2.7、要確認) |
TS 23.501 §6.2.10 は、オペレータが信頼するAFは関連NFと直接やり取りでき、直接アクセスを許可されないAFはNEF経由の外部Exposureフレームワークを使う と定めています。ポイントは、NEFはPCFに対しては「AFとして」Npcf_PolicyAuthorizationを呼ぶ ことです。PCFから見えるのは同じ Policy Authorization の App Session であり、その先(PCF → SMF → gNB / UPF)は AF / N5 / Application Session で学んだ流れと同じです。
「AFは必ずNEFを通る」は誤り
信頼されたAF(例: IMSのP-CSCF)はN5でPCFへ直接アクセスします。また、Rel-17以降はTime Sensitive Communication関連のQoS要求で、NEFがPCFではなく TSCTSF と連携する分岐があります(TS 23.502 §4.15.6.6、要確認)。どの経路を使うかは、AFの信頼度とAPI・Releaseで決まります。
Northbound API — N33で使われるAPI¶
N33のAPIは TS 29.522(5G System; Network Exposure Function Northbound APIs)で規定されます。TS 29.522 は、4G SCEFの T8 API(TS 29.122) の一部を再利用・拡張し、5GS向けの新しいAPIを追加する構成です(どのAPIがどちらの仕様で定義されるかの詳細は版により要確認)。特に AsSessionWithQoS と MonitoringEvent は、API定義(リソース・属性・OpenAPI)の本体が TS 29.122(T8) にあり、TS 29.522 から参照・再利用される形です。TraceをOpenAPIと照合するときは TS 29.122 側を見ます。
| Northbound API(リソース名の例) | TS 23.502 上のNEFサービス | 主な取次先(内部NF) | 主な手続き(TS 23.502) |
|---|---|---|---|
AsSessionWithQoS(3gpp-as-session-with-qos) |
Nnef_AFsessionWithQoS | BSF → PCF(Rel-17以降はTSCTSFの場合あり) | §4.15.6.6(要確認) |
MonitoringEvent(3gpp-monitoring-event) |
Nnef_EventExposure | UDM → AMF / SMF 等 | §4.15.3(要確認) |
TrafficInfluence(3gpp-traffic-influence) |
Nnef_TrafficInfluence | PCF(UE IP指定時)または UDR | §4.3.6(要確認) |
ParameterProvision(3gpp-parameter-provision、名称要確認) |
Nnef_ParameterProvision | UDM | §4.15.6.2(要確認) |
AnalyticsExposure(3gpp-analyticsexposure、名称要確認) |
Nnef_AnalyticsExposure | NWDAF | TS 23.288(節番号要確認) |
- リソースURIは
{apiRoot}/3gpp-<API名>/v1/{scsAsId}/subscriptionsの形が基本です(TS 29.122 / TS 29.522、版は要確認)。{scsAsId}は 要求元AFの識別子 で、NEFの認可判定の入口になります。 - 内部向けの
nnef-...で始まるAPI(TS 29.591 NEF Southbound Services など。サービスごとに定義仕様が異なり、例えば Nnef_PFDManagement は TS 29.551)とは別物です。N33のTraceで:pathを探すときは3gpp-...を目印にします。 - NEFが内部NFを呼ぶ際は、通常の5GC内部SBI(
npcf-policyauthorization、nbsf-management、nudm-ee、namf-evts等)になります。
CAPIFの位置づけ¶
N33のAPIを「どう発見させ、どうオンボーディングし、どう認可するか」を共通化する枠組みが CAPIF(TS 23.222)です。NEFはCAPIFにおける AEF(API Exposing Function) として振る舞えます(TS 23.501 §6.2.5.1、要確認)。CAPIFを使う場合、AFはまずCAPIF Core Functionでオンボーディング・API発見・認可を経てから、NEF(AEF)のNorthbound APIを呼びます。概念は NEF・CAPIF を参照してください。
N33自体のセキュリティ(TLS、OAuth 2.0に基づく認可)は TS 33.501 §12(NEFのセキュリティ、枝番は要確認)で規定されます。
How — Call Flow①:外部AFがQoSを要求する(AF session with required QoS)¶
外部AFが「このUEのこのフローに、事前合意したQoSを付けてほしい」と要求する手続きです(TS 23.502 §4.15.6.6 Setting up an AF session with required QoS、要確認)。以下はNEFがBSFでPCFを特定し、PCFと直接連携するケースの概念図です。
sequenceDiagram
participant AF as 外部AF
participant NEF
participant BSF
participant PCF
participant SMF
participant AMF
participant RAN as gNB / UPF
AF->>NEF: POST 3gpp-as-session-with-qos
(UE IP, Flow description, QoS Reference, notificationDestination)
NEF->>NEF: AF認可 / 入力チェック
Transaction Reference ID 割当
NEF->>BSF: Nbsf_Management_Discovery
(UE IP, DNN, S-NSSAI 等)
BSF-->>NEF: PCF Binding(担当PCFのアドレス)
NEF->>PCF: Npcf_PolicyAuthorization_Create
(Media / Flow情報, QoS Reference, 通知先=NEF)
PCF->>PCF: 要求の認可 / PCC Rule 決定
PCF-->>NEF: 201 Created(App Session ID)
NEF-->>AF: 201 Created(Subscription = Transaction Reference ID)
PCF->>SMF: Npcf_SMPolicyControl_UpdateNotify
(PCC Rule 追加・変更)
SMF->>AMF: Namf_Communication_N1N2MessageTransfer
(N2 SM情報, N1 SM情報)
AMF->>RAN: NGAP PDU Session Resource Modify Request(gNB)
SMF->>RAN: N4 PFCP Session Modification Request(UPF)
Note over SMF,RAN: QoS Flow の追加・変更、RANのAdmission Control
PCF-->>NEF: Npcf_PolicyAuthorization_Notify
(リソース割当の成否、QoS通知 等)
NEF-->>AF: Notify(notificationDestination 宛)
Response の順序と分岐は Release・実装で異なる
上図は理解のための簡略図です。AFへのResponseをPCFの判定前後どちらで返すか、NEFがPCFの通知を購読する手順、TSCTSF経由の分岐などは、対象Releaseの TS 23.502 §4.15.6.6 と実装で確認してください(要確認)。PCF → SMF 以降は PDU Session Modification の手続きです。
Signal Flow¶
| # | 区間 | メッセージ(SBI) | 要点 |
|---|---|---|---|
| 1 | AF → NEF | AsSessionWithQoS 作成(Nnef_AFsessionWithQoS_Create) | UE IP、Flow description または External Application Identifier、QoS Reference(Releaseにより個別QoSパラメータ)、通知先URI |
| 2 | NEF 内部 | 認可・Transaction Reference ID 割当 | AFがこのAPI・このUE/DNNを扱えるか(ポリシーは実装・契約依存) |
| 3 | NEF → BSF | Nbsf_Management_Discovery(TS 29.521) | UE IPから担当PCFを特定。Bindingが無ければここで止まる |
| 4 | NEF → PCF | Npcf_PolicyAuthorization_Create(TS 29.514) | NEFがAFとして App Session を作る |
| 5 | PCF → SMF | Npcf_SMPolicyControl_UpdateNotify(TS 29.512) | PCC Rule をSM Policy Associationへ反映(PCF起点のSM Policy Association変更、TS 23.502 §4.16.5.2、要確認) |
| 6 | SMF → AMF → gNB / SMF → UPF | Namf_Communication_N1N2MessageTransfer → NGAP PDU Session Resource Modify(N2はAMF経由)、PFCP Session Modification(N4) | QoS Flow(QFI / 5QI)、PDR / QER の追加・変更 |
| 7 | PCF → NEF → AF | Npcf_PolicyAuthorization_Notify → Nnef_AFsessionWithQoS_Notify | リソース割当の成否やQoS保証可否の通知(購読したイベントのみ) |
Correlation 情報 — 区間ごとの相関キー¶
AF→NEF→PCF→SMF→gNB/UPF と区間を進むたびに、使われる識別子が入れ替わります。どこで何をキーに追うかを表にしておくと、Traceの横断が速くなります。
| 区間 | 相関キー | 備考 |
|---|---|---|
| AF ⇔ NEF | scsAsId(AF Identifier)、作成されたSubscriptionのURI(Transaction Reference ID 相当、要確認)、notificationDestination |
AFが後でUpdate / Revokeに使うのはSubscriptionのURI |
| NEF ⇔ BSF | UE IPアドレス(+ IP Domain / DNN / S-NSSAI) | 重複するプライベートIP空間ではIP Domain等が必要 |
| NEF ⇔ PCF | App Session ID(Locationヘッダで返るリソースURI)、通知先URI | NEF内部でTransaction Reference IDと対応付ける(実装依存) |
| PCF ⇔ SMF | SM Policy Association(SM Policy ID)、PCC Rule ID | PCF / PCC |
| SMF ⇔ gNB | PDU Session ID、QFI | QoS Flow / QFI / 5QI |
| SMF ⇔ UPF | SEID、PDR ID / QER ID | PDR / PDI |
例え話: 荷物の追跡番号が、運送会社をまたぐたびに付け替えられるイメージです。AFの受付番号(Transaction Reference ID)→ PCFの伝票番号(App Session ID)→ SMFの管理番号(PCC Rule / QFI)。どの区間でどの番号を見るかを知らないと、途中で荷物を見失います。
201 Created は「QoSが効いた」ではない
AF→NEFの 201 Created は、Subscription(AF session)のリソースが作られた ことを示すに過ぎません。PCF→SMFへの反映、RANでのAdmission Control、UPFでのPDRマッチは、その後に別々に起きます。結果を知るには、AFが リソース割当成否の通知(Successful / Failed resources allocation 等、イベント名は要確認)を購読しておき、Notifyを受け取る必要があります。
How — Call Flow②:Event Exposure(イベント購読と通知)¶
外部AFが「このUEが到達可能になったら知らせてほしい」と購読する例です(TS 23.502 §4.15.3、NEF経由の情報フローは §4.15.3.2.3、要確認)。
代表的な Monitoring Event¶
| イベント(TS 23.502 §4.15.3.1) | 主に検出するNF | 概要 |
|---|---|---|
| UE Reachability | AMF | UEがデータ / SMSを受けられる状態になったこと |
| Loss of Connectivity | AMF | UEとの接続が失われたと判断されたこと |
| Location Reporting | AMF | UEの現在 / 最終既知の位置(公開粒度はポリシーで制限され得る) |
| Change of SUPI-PEI association | UDM | 加入者と端末(PEI)の組合せの変化 |
| Roaming Status | UDM | ローミング状態の変化 |
| PDU Session Status / Downlink Data Delivery Status | SMF | PDU Sessionの状態、下りデータ配送の状態 |
イベント一覧と検出NFの対応は Release により追加・変更があります(要確認)。API上の列挙値(例: UE_REACHABILITY、LOSS_OF_CONNECTIVITY、LOCATION_REPORTING)は TS 29.122 / TS 29.522 で定義されます。
Call Flow¶
sequenceDiagram
participant AF as 外部AF
participant NEF
participant UDM
participant AMF
AF->>NEF: POST 3gpp-monitoring-event
(External ID または MSISDN, monitoringType=UE_REACHABILITY,
notificationDestination, 最大報告数, 期限)
NEF->>NEF: AF認可 / 入力チェック
NEF->>UDM: Nudm_EventExposure_Subscribe
(GPSI, イベント, 通知先=NEF)
UDM->>UDM: GPSI→SUPI 変換 / 加入者として許可されるか確認
UDM->>AMF: Namf_EventExposure_Subscribe
(SUPI, イベント, 通知先=NEF)
AMF-->>UDM: 201 Created
UDM-->>NEF: 201 Created
NEF-->>AF: 201 Created(Subscription URI)
Note over AMF: UEがRegistration / Service Request 等で到達可能になる
AMF->>NEF: Namf_EventExposure_Notify(UDMを経由しない)
NEF->>NEF: 内部の購読とAFのSubscriptionを対応付け
外部向け識別子に変換
NEF->>AF: Notify(notificationDestination 宛)
Signal Flow¶
| # | 区間 | メッセージ | 要点 |
|---|---|---|---|
| 1 | AF → NEF | MonitoringEvent 作成(Nnef_EventExposure_Subscribe) | UEはGPSI(External ID / MSISDN)または External Group ID で指定 |
| 2 | NEF → UDM | Nudm_EventExposure_Subscribe(TS 29.503) | 通知先としてNEFのURIを渡す |
| 3 | UDM → AMF | Namf_EventExposure_Subscribe(TS 29.518) | UDMがGPSIをSUPIに変換して、サービングAMFへ購読を作る |
| 4 | 応答 | 201 Created が AMF → UDM → NEF → AF と戻る | イベントによっては、購読時点の状態が即時報告として返る場合がある(要確認) |
| 5 | AMF → NEF | Namf_EventExposure_Notify | 通知先がNEFなので、UDMを経由せずNEFへ直接届く(TS 23.502 §4.15.3.2.3、要確認) |
| 6 | NEF → AF | MonitoringEvent の通知(Nnef_EventExposure_Notify) | NEFはSUPIではなく外部向け識別子で報告する |
イベントの種類で経路が変わる
UDM自身が検出するイベント(Roaming Status など)はUDMからNEFへ通知され、SMFが検出するイベントはSMF側の購読が関与します。AMFがNEFへ直接通知するのも、「UDMが購読時にNEFを通知先に指定した」結果です。上図は UE Reachability(AMF検出) の場合の簡略図です。
Subscribe成功とNotify受信成功は別
購読が201で作られても、(1) イベント条件がまだ満たされていない、(2) 購読の 期限切れ や 最大報告数 への到達で購読が終了している、(3) 内部(UDM→AMF)の購読が後から削除された、またはAMF変更時の引き継ぎに失敗した(AMF変更時は UE Context の転送で Event Subscription が新AMFへ引き継がれる。登録時は TS 23.502 §4.2.2.2.2、AMF変更を伴うN2 Handover時は §4.9.1.3 等、要確認)、(4) AFのCallback(notificationDestination)へ到達できない、といった理由で通知は届きません。
Packet Analysis (Wireshark)¶
- N33(Northbound API) のHTTPの使い方は TS 29.122 / TS 29.522 の「Usage of HTTP」(§5.2.2、要確認)に従います。外部AF向けのため HTTP/1.1 と HTTP/2 の両方があり得ます(どちらが必須・任意かは版により要確認)。
http2.*だけでフィルタすると HTTP/1.1 で流れるN33を取りこぼします。 - 網外のAFとのN33は TLS で保護されます(TS 33.501 §12、枝番要確認)。
- 内部SBI(NEF⇔BSF / PCF / UDM、PCF⇔SMF 等)は HTTP/2 です(TS 29.500)。TLSのサポートは必須ですが、実際に使うかどうかは事業者の判断です(TS 33.501 §13.1、要確認)。
TLSで保護されている区間の中身を見るには、TLSの復号鍵(キーログ等)が必要です。
Display Filter¶
フィールド名はWiresharkの版により異なる場合があります(要確認)。
| フィルタ | 用途 |
|---|---|
http2 |
内部SBI全体、および HTTP/2 で流れるN33 |
http.request.uri contains "3gpp-" |
HTTP/1.1 で流れるN33(Northbound API) |
http2.headers.path contains "3gpp-as-session-with-qos" |
N33:QoS要求(AsSessionWithQoS) |
http2.headers.path contains "3gpp-monitoring-event" |
N33:Event購読(MonitoringEvent) |
http2.headers.path contains "nbsf-management" |
NEF⇔BSF:PCF Binding の照会 |
http2.headers.path contains "npcf-policyauthorization" |
NEF⇔PCF:App Session |
http2.headers.path contains "npcf-smpolicycontrol" |
PCF⇔SMF:SM Policy の更新(Notify は SMF側のCallback URIになる点に注意) |
http2.headers.path contains "nudm-ee" / "namf-evts" |
NEF⇔UDM / UDM⇔AMF:Event Exposure |
http2.headers.status |
応答のステータスコード(201 / 4xx / 5xx) |
tls.handshake.type == 1 |
N33のTLS ClientHello(TLS接続の開始確認) |
tls.alert_message |
TLS Alert(証明書不一致などhandshake失敗の確認) |
Notify は Callback URI に飛ぶ
Notify系のリクエストは、購読時に渡した Callback URI(notificationDestination、notifUri 等)宛てに送られます。そのパスは購読側(AFやNEF)が決めるため、3gpp-... や npcf-... を含まないことがあります。Notifyを探すときは、購読Requestのボディに入っていた Callback URI で検索します。
Decode例(概念表現)¶
以下は表示構造の概念表現で、値はすべて架空例です(IPは文書用アドレス / プライベートアドレス、属性名と必須・任意は版により要確認、要キャプチャ)。N33部分は HTTP/2 で流れた場合の表現です。HTTP/1.1 の場合は :method / :path の代わりにリクエスト行(POST /3gpp-... HTTP/1.1)と Host ヘッダになります。
[N33] AF -> NEF
HEADERS :method: POST
:path: /3gpp-as-session-with-qos/v1/af-video-01/subscriptions
DATA (JSON)
{
"notificationDestination": "https://af.example.com/qos-notify/123",
"ueIpv4Addr": "10.45.0.23",
"flowInfo": [
{ "flowId": 1,
"flowDescriptions": [ "permit out 17 from 198.51.100.10 to 10.45.0.23" ] }
],
"qosReference": "video-premium",
"events": [ "SUCCESSFUL_RESOURCES_ALLOCATION", "FAILED_RESOURCES_ALLOCATION" ]
}
[N33] NEF -> AF
HEADERS :status: 201
location: https://nef.example.net/3gpp-as-session-with-qos/v1/af-video-01/subscriptions/sub-0001
[NEF -> BSF]
HEADERS :method: GET
:path: /nbsf-management/v1/pcfBindings?ipv4Addr=10.45.0.23
-> 200 OK { "dnn": "internet", "pcfFqdn": "pcf-2.example.net", "supi": "...(外部へは返さない)" }
[NEF -> PCF]
HEADERS :method: POST
:path: /npcf-policyauthorization/v1/app-sessions
-> 201 Created location: .../app-sessions/as-77
[N33] AF -> NEF
HEADERS :method: POST
:path: /3gpp-monitoring-event/v1/af-iot-02/subscriptions
DATA (JSON)
{
"externalId": "[email protected]",
"monitoringType": "UE_REACHABILITY",
"reachabilityType": "DATA",
"notificationDestination": "https://af.example.com/mon-notify/9",
"maximumNumberOfReports": 1,
"monitorExpireTime": "2026-10-19T00:00:00Z"
}
見る順番¶
flowchart LR
A["① AF⇔NEF
TLS / 認可
Request → 201 or 4xx"] --> B["② NEF内部
識別子変換・認可
(ログで確認)"]
B --> C["③ NEF⇔内部NF
BSF / PCF または UDM / AMF
のRequest / Response"]
C --> D["④ 内部NF以降
PCF→SMF→N2/N4
または Event検出→Notify→Callback"]
Trouble Shooting¶
障害を4区間に分ける¶
flowchart LR
S1["区間1
AF ⇔ NEF
(N33)"] --> S2["区間2
NEF内部
(認可・変換)"]
S2 --> S3["区間3
NEF ⇔ 内部NF
(BSF / PCF / UDM / AMF)"]
S3 --> S4["区間4
内部NF以降
(PCF→SMF→gNB/UPF、
Event検出→Notify)"]
| 区間 | 確認対象 | 典型的な原因 |
|---|---|---|
| 1. AF ⇔ NEF | TLS、OAuth 2.0 トークン、scsAsId、リクエストボディ |
証明書・トークン不備、AFにAPI権限がない、必須属性の欠落・形式誤り |
| 2. NEF 内部 | 認可ポリシー、識別子変換、QoS Reference の扱い、Transaction Reference ID の管理 | AFとUE / DNNの組合せが許可されていない、変換ルールの設定漏れ(実装依存) |
| 3. NEF ⇔ 内部NF | Nbsf_Management_Discovery、Npcf_PolicyAuthorization、Nudm_EventExposure の応答 | Bindingが見つからない、PCFが要求を認可しない、UDMが購読を拒否 |
| 4. 内部NF以降 | PCF→SMFのPolicy更新、N2 / N4 の設定結果、Event検出、Notify、Callback | RAN Admission失敗、Flow descriptionが実トラフィックと不一致、イベント未発生、Callback不達 |
症状と切り分け¶
| 症状 | 想定原因 | 確認ポイント | ログ | Packet | 解決方法 |
|---|---|---|---|---|---|
| AFがNEFへ接続できない(HTTP応答が無い) | TLS相互認証の不備(証明書の失効・信頼チェーン不一致)、TLSバージョン・暗号スイート不一致 | 証明書、TLS設定 | NEF / LB のTLSログ | tls.alert_message、tls.handshake |
証明書と信頼チェーンを修正。HTTPの401 / 403 にはならない(handshake段階で終わる) |
| AFのPOSTが 401 / 403 | 401: OAuth 2.0 トークンの不備(欠落・期限切れ・署名不正)。403: AFに当該API・対象UEの権限がない、またはトークンのscope不足(insufficient_scope)。使い分けは RFC 6750 §3.1、3GPP側のエラー処理は TS 29.122 §5.2.6(要確認) | 401: トークン自体の有効性 / 403: トークンのscope、scsAsId の権限 |
NEFのアクセスログ | http2.headers.status / http.response.code |
AFの登録・権限設定を確認(CAPIF利用時はオンボーディング状態も) |
| AFのPOSTが 400 | 必須属性の欠落、Flow descriptionの書式誤り、UE識別子の指定方法の誤り | リクエストボディとOpenAPI定義の照合 | NEFログ | http2(DATA) |
API定義(TS 29.122 / TS 29.522)に合わせて修正 |
| NEF→BSFの照会で担当PCFが見つからない | PDU Session未確立、AFが N6のNAT後のアドレス を送っている、IP Domain / DNN の不一致、PCFがBSFへ未登録 | AFが送ったUE IPと、SMFが割り当てたUE IPの一致 | NEF / BSFログ | nbsf-management |
5GCが割り当てたUE IPを渡す運用にする(構成依存)、BSF登録を確認 → BSF / PCF Binding |
| NEF→PCFのCreateが 4xx | PCFが要求を認可しない(QoS Reference未定義、加入者ポリシーで不許可、対象PDU Sessionなし) | ProblemDetails の cause(値は TS 29.514、要確認) |
PCFログ | npcf-policyauthorization |
PCF側のQoS Reference定義・加入者ポリシーを確認 |
| 201なのにQoSが効かない | PCF→SMFが未反映、RANのAdmission失敗、Flow descriptionと実トラフィックの不一致(方向・ポート・アドレス) | Npcf_SMPolicyControl_UpdateNotify、N2 PDU Session Resource Modify Response、PDRのSDF Filter | PCF / SMF / gNBログ | npcf-smpolicycontrol、ngap、pfcp |
下の「例A」の順で確認 |
| Subscribe成功なのに通知が来ない | イベント未発生、内部購読の失敗・削除、期限切れ・最大報告数到達、Callback不達 | 内部購読の応答、購読パラメータ、Notifyの有無とCallbackの応答 | NEF / UDM / AMFログ | nudm-ee、namf-evts、Callback URI |
下の「例B」の順で確認 |
| 通知が重複する / 想定外に多い | 同一条件での重複購読、再送、障害後の再購読 | Subscription一覧、通知の相関ID | NEFログ | http2 |
不要な購読を削除。再送・重複排除の挙動は実装依存 |
例A:QoS Request は 2xx なのに QoS が効かない¶
AF→NEF の Request は 201 Created か?(区間1)
↓
NEFの認可・変換は成功したか?(区間2:NEFログ)
↓
NEF→BSF で担当PCFを特定できたか? NEF→PCF の Create は 201 か?(区間3)
↓
PCF→SMF に Npcf_SMPolicyControl_UpdateNotify が出たか? PCC Rule の内容は?(区間4)
↓
SMF→gNB の PDU Session Resource Modify は成功したか?(RAN Admission)
SMF→UPF の PFCP Session Modification で PDR / QER は作られたか?
↓
実トラフィックが PDR の SDF Filter にマッチしているか?(方向・ポート・アドレス)
↓
N3 の QFI、UPF の QER、RAN の QoS を確認
HTTPの成功だけで、QoS保証やパケット転送が成立したとは判断しません。リソース割当の成否通知をAFが購読していれば、区間4の失敗はAFへの Notify としても現れます。
例B:Event Subscription は成功したのに通知が来ない¶
AF→NEF の Subscribe は 201 か?(区間1)
↓
NEF→UDM、UDM→AMF の内部 Subscribe は成功しているか?(区間3)
↓
対象イベントは実際に起きたか?(例: UEが本当に到達可能になったか、AMFのログ・NGAP/NAS)
↓
購読の期限・最大報告数・対象UE(External ID / MSISDN)の指定は正しいか?
↓
AMF→NEF の Notify は出ているか? NEF→AF の Notify は出ているか?
↓
Callback URI への TLS / HTTP 応答は正常か?(AF側が 2xx を返しているか)
Captureでは、Subscribe Request / Response、内部Subscribe、Event Notify、Callback を、Subscription URI と Callback URI をキーに相関させます。
3GPP仕様とVendor実装の境界¶
| 3GPPが定義するもの | Vendor / 運用が決めるもの |
|---|---|
| NEFの役割(Exposure、認証・認可、throttlingの補助、情報変換・マスキング) | NEFのPod構成、API Gateway の内部構造、Cache / DB 設計 |
| Northbound API のリソース・属性・通知(TS 29.122 / TS 29.522) | Rate Limit の具体値、AFごとの許可ポリシーの持ち方 |
| AF session with required QoS / Event Exposure の手続き(TS 23.502) | QoS Reference の具体的な中身(オペレータとAF事業者の合意) |
| N33のセキュリティ要件(TLS、OAuth 2.0 に基づく認可、TS 33.501 §12) | 証明書・トークンの運用、CAPIFを使うかどうか |
| BSFによるPCF特定、Policy Authorization の手順 | NAT配下のUE IPの扱い、IP Domainの設計 |
| Event Exposure の通知先・期限・最大報告数の意味 | Retry 実装、重複排除、CLI / ログ名、HA / Scaling 方式 |
認証・認可や流量制御そのものは3GPPが想定する機能です。「アルゴリズムや具体値は実装依存」であって、「認可やthrottlingが仕様外」という意味ではありません。
EPC(4G)との比較¶
| 項目 | 4G EPC | 5GC |
|---|---|---|
| 公開機能 | SCEF(Service Capability Exposure Function) | NEF |
| 外部の利用者 | SCS / AS | AF(外部) |
| 外部向けAPI | T8(TS 29.122) | N33 Northbound API(TS 29.522。T8 APIを再利用・拡張) |
| 加入者情報・イベント購読 | SCEF ⇔ HSS(S6t、Diameter) | NEF ⇔ UDM(Nudm、SBI) |
| モビリティ系イベント | HSS経由でMMEに設定(S6a)、MMEからSCEFへ通知(T6a、Diameter) | UDM経由でAMFに購読、AMFからNEFへ通知(Namf、SBI) |
| QoS要求 | SCEFがAFとして Rx でPCRFへ(TS 23.682 §5.11、要確認) | NEFがAFとして Npcf_PolicyAuthorization でPCFへ |
| イベント監視の手続き | Monitoring Events(TS 23.682 §5.6、要確認) | Event Exposure(TS 23.502 §4.15.3) |
| 相互運用 | — | SCEF+NEF 統合ノードによるEPC/5GC共通の公開(TS 23.501 §4.3.5、要確認) |
骨格は4GのSCEFと同じく「外部には窓口だけを見せ、内部プロトコルへ翻訳する」です。5GCでは内部側もSBI(HTTP/2)に統一され、BSFによるPCF特定やCAPIFとの組合せが加わりました。
3GPP Specification¶
| 仕様 | 節 | 内容 |
|---|---|---|
| TS 23.501 | §4.2.7 | 参照点(N5 / N33 / NEF⇔PCF 等。要確認を含む) |
| TS 23.501 | §5.20 | External Exposure of Network Capability |
| TS 23.501 | §5.9.8 | GPSI |
| TS 23.501 | §6.2.5(§6.2.5.0 / §6.2.5.1) | NEF の機能 / CAPIF のサポート(枝番要確認) |
| TS 23.501 | §6.2.10 | AF(信頼されたAFの直接アクセスとNEF経由の区別) |
| TS 23.501 | §4.3.5 | SCEF+NEF による Service Exposure の相互運用(要確認) |
| TS 23.502 | §4.15.3 | Event Exposure using NEF(§4.15.3.1 Monitoring Events / §4.15.3.2.3 NEF経由の情報フロー、枝番要確認) |
| TS 23.502 | §4.15.6.6 | Setting up an AF session with required QoS(要確認) |
| TS 23.502 | §4.15.6.2 / §4.3.6 | Parameter Provisioning / AF influence on traffic routing(要確認) |
| TS 23.502 | §5.2.6 | NEF のサービス(Nnef_EventExposure、Nnef_AFsessionWithQoS 等。枝番要確認) |
| TS 23.003 | §19.7.2 | External Identifier の形式(要確認) |
| TS 23.222 | — | CAPIF(Common API Framework) |
| TS 29.522 | — | NEF Northbound APIs(N33) |
| TS 29.122 | — | T8 Reference Point for Northbound APIs(MonitoringEvent、AsSessionWithQoS 等) |
| TS 29.591 | — | NEF Southbound Services(内部向け nnef-...。サービスにより TS 29.551 等の別仕様) |
| TS 29.514 / TS 29.512 / TS 29.521 | — | Npcf_PolicyAuthorization / Npcf_SMPolicyControl / Nbsf_Management |
| TS 29.503 / TS 29.518 | — | Nudm(EventExposure を含む) / Namf(EventExposure を含む) |
| TS 33.501 | §12 | NEF のセキュリティ(N33のTLS・認可。枝番要確認) |
| TS 33.501 | §13.1 | SBA内部のトランスポートセキュリティ(TLSのサポート必須・使用は事業者判断、要確認) |
| TS 29.500 | — | 5GC SBI の技術的実現(HTTP/2) |
| TS 23.682 | §5.6 / §5.11 | 4G SCEF の Monitoring Events / AS session with required QoS(EPC比較用、要確認) |
節番号の粒度
TS 23.502 §4.15 配下の枝番、TS 23.501 §4.2.7 の参照点名(NEF⇔PCF等)、TS 23.682 の節番号は、版によって番号・構成が異なる可能性があります。精密に引用する際は対象Releaseの原文で確認してください。
Summary¶
- NEF は外部AFに5GCの能力を公開する境界で、認可・情報隠蔽(マスキング)・識別子変換 を担う。単純なProxyではなく、APIごとに取次先が異なる(TS 23.501 §6.2.5)
- N33 は外部AF⇔NEF(Northbound API、TS 29.522 / TS 29.122)、N5 はAF⇔PCF(Npcf_PolicyAuthorization)。NEFはPCFに対して AFとして Npcf_PolicyAuthorization を呼ぶ
- 外部AFが知るのは GPSI(External ID / MSISDN)・UE IP。SUPIや担当PCFは内部の情報で、UDM(GPSI⇔SUPI)やBSF(UE IP⇔PCF)で解決し、外部へは返さない
- QoS要求(AF session with required QoS)と Event Exposure は別の手続きで、内部の接続先も異なる(BSF / PCF と UDM / AMF)
- API の 2xx ≠ QoS 適用成功 ≠ 通知受信成功。障害は AF⇔NEF / NEF内部 / NEF⇔内部NF / 内部NF以降 の4区間に分け、区間ごとの相関キーで追う
- 4Gでは SCEF + T8 が同じ役割を担っていた。5GCでは内部もSBI化され、CAPIFと組み合わせられる
理解度チェック¶
Q1. 外部AFがNEF経由で、あるUEの到達可能性イベントを購読しました。Subscribeは成功しましたが通知が届きません。最も適切な初動はどれか。A. Subscribeが成功していればAMFは必ずNotifyを送っているので、AF側だけを調べる / B. NEFがUPFへPFCP QERを作成したかを確認する / C. NEFから内部NFへの購読、対象イベントの発生、通知経路とCallbackのHTTP / TLS応答を順に確認する / D. GTP-U TEIDの不一致が原因と断定する
正解: C。Event Exposureは、NEF→UDM→AMF の内部購読、イベント検出、AMF→NEF→AF の通知という複数段で成り立ちます(TS 23.502 §4.15.3、要確認)。Aは「Subscribe成功=通知成功」と混同しています。B・DはN4 / N3(ユーザプレーン)の話で、イベント購読には関与しません。
Q2. AsSessionWithQoS の作成が 201 Created で返りました。これで「このフローのQoSが保証された」と言えますか。
言えません。201は AF sessionのリソースがNEFで作られた ことを示すだけです。その後、PCF→SMFへのPolicy反映(Npcf_SMPolicyControl_UpdateNotify)、gNBでのAdmission Control(PDU Session Resource Modify)、UPFでのPDR / QER設定、実トラフィックのSDF Filterへのマッチが別々に起きます。結果を知るには、リソース割当の成否通知を購読してNotifyを確認し、必要に応じて区間4のTraceを確認します。
Q3. 信頼されたAFはN5でPCFへ直接要求できます。外部AFがNEF経由で要求する場合、PCFから見て何が違い、何が同じですか。
PCFから見ると、NEFが AFとして Npcf_PolicyAuthorization を呼んでくるので、App Sessionとしての扱い(PCC Rule決定、SMFへの反映)は同じです。違うのは、その手前でNEFが AFの認可、識別子変換(AF IdentifierやQoS Referenceの扱い、BSFによる担当PCFの特定)、内部情報のマスキング を行っている点です。外部AFは内部のPCFのアドレスやSUPIを知りません。
Q4. 外部AFがAsSessionWithQoSでUE IPを指定しましたが、NEF→BSFの照会で担当PCFが見つかりません。AFが指定したIPはインターネット側から見えるUEのアドレスでした。何が起きていると考えられますか。
N6側でNAT(アドレス変換)が行われている場合、AFから見えるアドレスは NAT後のアドレス で、SMFがPDU Sessionに割り当てたUE IP(BSFのBindingに登録されているIP)とは異なります。そのためBSFはBindingを見つけられません。5GCが割り当てたUE IP(と必要ならIP Domain)をAFへ渡す構成・運用にする必要があります(具体的な方法は構成依存)。PDU Session未確立やPCFのBSF未登録も同じ症状になるため、併せて確認します(BSF / PCF Binding)。
Next Step¶
- NEFがUE IPから担当PCFを見つける仕組み → BSF / PCF Binding(次章)
- NEFの先でPCFが受け取るApp Session → AF / N5 / Application Session / PCF / SM Policy Association / PCC Rule
- SBIの応答とProblemDetailsの読み方 → N7 SBI解析
- 能力公開とCAPIFの全体像 → NEF・CAPIF
- 関連NF・参照点 → NEF / N33 / AF / N5 / NWDAF(Analytics Exposure)