コンテンツにスキップ

NEF / N33 / Event Exposure — 外部AFに5GCをどこまで見せるか

難易度: 上級(マニアック) / 想定学習時間: 35分 / 前提: AF / N5 / Application Session, NEF, N33 / 主役: AF(外部), NEF, PCF, BSF, UDM, AMF / 主Interface: N33

学習目標

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

  • 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つの区間 に分けて切り分けられる

前提知識

この章の焦点(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