AF / N5 / Application Session — アプリの要求がQoS Flowになるまで¶
学習目標¶
この章を読み終えると、次のことができるようになります。
- N5 = Npcf_PolicyAuthorization(TS 29.514)であり、AFがService Consumer、PCFがService Producer であることを説明できる
- Application Session Context(
app-sessionsリソース)と、Create / Update / Delete / Subscribe / Unsubscribe / Notify の HTTP 上の見え方を説明できる - PCFが Application Session と SM Policy Association を対応付ける(Session Binding) 仕組みと、複数PCF構成で BSF が必要になる理由を説明できる
- Media Component / Media Sub-Component / Flow Description が、PCC Rule の SDF template を経て QoS Rule(N1)・QoS Flow(N2)・PDR / QER(N4) になるまでを図で説明できる
- 「AF Request が PCF に来ない」「PCF までは成功するが QoS Flow が作られない」「Traffic が PDR に Match しない」を区間ごとに切り分けられる
前提知識¶
- PCF / SM Policy Association / PCC Rule — PCC Rule の構成と、SMF による N1 / N2 / N4 への翻訳
- N7 SBI解析 — SBI の HTTP/2・JSON・ProblemDetails の読み方
- N5 / AF / PCF — 参照点とNFの概要
- 補助: PDR / PDI / SDF Filter / QoS Flow / QFI / 5QI / GFBR / MFBR / AMBR / ARP / VoNR / Policy
この章の焦点(Level ∞ マニアック)
N5 ページでは「信頼AFがPCFへQoS等を要求する窓口」と紹介し、Policy では AF 起点の流れを概観しました。この章では、AFが何をどんな形(JSON)で渡し、PCFがそれをどのPDU Sessionに結び付け、どんなPCC Ruleに変換し、最後にUPFのどのPDRになるのか を、Application Session のデータモデルと Trace 解析の観点で掘り下げます。外部AFがNEF経由で要求する場合は次章 NEF / N33 で扱います。
Why — アプリはQoS Flowを直接作れない¶
VoNR の通話、クラウドゲーム、ライブ映像など、アプリケーションには「このメディアにはこの帯域・この遅延が必要」という要求があります。しかし、その要求を知っているのは アプリ側(AF) で、QoS を実際に適用するのは UE・gNB・UPF です。
- AF は UE の PDU Session ID も QFI も SEID も知りません。知っているのは、たいてい UEのIPアドレスと、メディアの宛先・ポート・コーデック・帯域 です。
- UE・gNB・UPF を設定できるのは SMF だけで、SMF に QoS の方針(PCC Rule)を渡すのは PCF です(PCF / PCC)。
そこで、アプリの言葉(メディア・フロー・帯域)を PCF が受け取り、5GC の言葉(PCC Rule)に翻訳する入口 が必要になります。それが N5 / Npcf_PolicyAuthorization です(TS 23.501 §6.2.10、TS 29.514 §4.1(要確認))。
例え話: AF は「イベント主催者」、PCF は「道路管理局」、SMF は「現場の交通整理責任者」です。主催者は「午後7時から、この会場とこの駐車場の間を、このくらいの台数が通る」と申請します(Application Session)。管理局は申請を審査し、「この区間をこの条件で優先レーンにする」という許可書(PCC Rule)を発行します。実際にコーンを置いて車線を作る(QoS Flow / PDR / QER)のは現場責任者です。主催者が自分でコーンを置くことはできません。
What — N5 と Npcf_PolicyAuthorization¶
参照点とサービス¶
| 観点 | 内容 | 規定 |
|---|---|---|
| 参照点 | N5: AF ⇔ PCF | TS 23.501 §4.2.7(要確認) |
| サービス | Npcf_PolicyAuthorization(PCFが提供) | TS 23.502 §5.2.5.3(要確認)、TS 29.514 |
| Consumer / Producer | AF = Service Consumer、PCF = Service Producer | TS 29.514 §4.1(要確認) |
| プロトコル | HTTP/2 + JSON(SBI 共通) | TS 29.500 / TS 29.501 |
| API ルート | {apiRoot}/npcf-policyauthorization/v1 |
TS 29.514 §5.1(要確認) |
通知(Notify)は方向が逆になり、PCF が AF の Callback URI(notifUri)へ POST します。このときだけ HTTP の Client / Server が入れ替わります。
Trusted AF と Untrusted AF¶
TS 23.501 §6.2.10 は、オペレータが信頼する AF は関連NFと直接やり取りでき、直接アクセスを許可されない AF は NEF 経由の外部 Exposure フレームワークを使う と定めています。
flowchart LR
TAF["Trusted AF
例: IMSのP-CSCF"] == "N5
Npcf_PolicyAuthorization" ==> PCF["PCF"]
XAF["Untrusted AF
外部アプリ事業者"] -- "N33
AsSessionWithQoS 等" --> NEF["NEF"]
NEF -- "Npcf_PolicyAuthorization
(NEFがAFとして振る舞う)" --> PCF
PCF == "N7
Npcf_SMPolicyControl" ==> SMF["SMF"]
| 観点 | Trusted AF(N5直結) | Untrusted AF(NEF経由) |
|---|---|---|
| PCFが受け取るAPI | Npcf_PolicyAuthorization | 同じ Npcf_PolicyAuthorization(NEFが Consumer) |
| UE の指定 | UE IP アドレス等を直接指定 | 外部AFは UE IP / GPSI 等で指定し、NEF が認可・変換する |
| QoS の指定 | メディア情報(帯域・コーデック等)を詳細に渡せる | 多くは QoS Reference(事前合意したQoS)で指定 |
| 代表例 | P-CSCF(VoNR / VoLTE) | 外部の映像・ゲーム事業者 |
PCFから見ると、どちらも 同じ Application Session です。違いは手前の認可と識別子変換で、それは NEF / N33 で扱います。
What — Application Session Context¶
リソース構造¶
N5 の中心は、AF が PCF 上に作る Application Session Context(「App Session」とも呼ばれる)です(TS 29.514 §5.3、要確認)。
{apiRoot}/npcf-policyauthorization/v1
└─ /app-sessions ← Application Sessions(コレクション)
└─ /{appSessionId} ← Individual Application Session Context
├─ /delete ← 削除用カスタムオペレーション(POST)
└─ /events-subscription ← Events Subscription(個別リソース)
{notifUri}(AFが指定したCallback)
├─ /notify ← イベント通知(PCF → AF)
└─ /terminate ← 終了要求(PCF → AF)
サービスオペレーション¶
| オペレーション | 方向 | HTTP | 主な応答 | 規定 |
|---|---|---|---|---|
| Create | AF → PCF | POST /app-sessions(AppSessionContext) |
201 Created + Location: .../app-sessions/{appSessionId} |
TS 29.514 §4.2.2 |
| Update | AF → PCF | PATCH /app-sessions/{appSessionId}(merge-patch) |
200 OK / 204 No Content |
TS 29.514 §4.2.3 |
| Delete | AF → PCF | POST /app-sessions/{appSessionId}/delete |
204 No Content(最終報告を返す場合は 200 OK) |
TS 29.514 §4.2.4 |
| Notify | PCF → AF | POST {notifUri}/notify(イベント)/ POST {notifUri}/terminate(終了要求) |
204 No Content |
TS 29.514 §4.2.5 |
| Subscribe | AF → PCF | PUT /app-sessions/{appSessionId}/events-subscription |
201 Created(新規)/ 200 OK・204(変更) |
TS 29.514 §4.2.6 |
| Unsubscribe | AF → PCF | DELETE /app-sessions/{appSessionId}/events-subscription |
204 No Content |
TS 29.514 §4.2.7 |
(オペレーションの節番号、各ステータスコードの使い分け、/delete を DELETE メソッドでなくカスタムオペレーション(POST)とする理由は、対象 Release の TS 29.514 §4.2 / §5.3 で要確認。Stage 2 は TS 23.502 §5.2.5.3、要確認)
Delete が DELETE メソッドではない理由
App Session の削除時、AF は「最後の使用量報告が欲しい」等の購読情報を Body に入れて送れます。Body を伴うため、DELETE ではなく POST .../{appSessionId}/delete のカスタムオペレーションとして定義されています(理由付けは本章の解釈。定義は TS 29.514 §5.3、要確認)。Trace で DELETE を探しても見つからないのはこのためです。
PCF からの terminate は「削除」ではない
PCF が POST {notifUri}/terminate を送るのは、「この App Session を終了してほしい」という AF への依頼 です(例: 対応する PDU Session が解放された)。App Session リソース自体は、AF がその後に Delete を送って消します(TS 29.514 §4.2.5、要確認)。AF が terminate に応じて Delete を送らない実装だと、PCF 側に App Session が残り得ます。
AppSessionContextReqData の主要属性¶
Create の Body は AppSessionContext で、その中の ascReqData(AppSessionContextReqData)に要求内容が入ります(TS 29.514 §5.6.2.2 / §5.6.2.3、要確認)。
| 分類 | 属性(概念名) | 意味 |
|---|---|---|
| 必須 | notifUri |
PCF からの Notify を受ける AF の Callback URI |
suppFeat |
Supported Features(任意機能のネゴシエーション) | |
| どのPDU Sessionか | ueIpv4 / ueIpv6 / ueMac |
UE のアドレス。Session Binding の主キー |
dnn / sliceInfo / ipDomain |
DNN、S-NSSAI、IPv4 アドレス空間の区別 | |
supi / gpsi |
UE の識別子(任意) | |
| 何をしたいか | medComponents |
Media Component の Map(メディアごとのフロー・帯域) |
afAppId |
AF Application Identifier(アプリ単位の要求、Application detection と組合せ) | |
afRoutReq |
AF influence on traffic routing(エッジ誘導) | |
(medComponents 内の qosReference 等) |
事前合意したQoSの参照。MediaComponent の属性として指定する(主に NEF 経由の要求で使う。TS 29.514 §5.6.2 の MediaComponent 型、要確認) | |
| 通知の購読 | evSubsc |
Create と同時に購読するイベント(EventsSubscReqData) |
| その他 | aspId / sponId / sponStatus |
Sponsored Data Connectivity |
resPrio / mpsId / mcsId |
優先サービス(MPS / MCS)の指示 |
主要属性の抜粋であり、網羅ではありません。必須 / 任意 / 条件付きの区分と Release ごとの追加属性は TS 29.514 §5.6 で確認してください(要確認)。
Media Component / Media Sub-Component / Flow Description¶
AF が QoS を要求する単位は Media Component(メディア1本、例: 音声)で、その中にフロー単位の Media Sub-Component を持ちます。
medComponents (map)
└─ "1": MediaComponent ← 例: SDP の 1番目の m= 行(音声)
├─ medCompN: 1 ← Media Component Number(必須)
├─ medType: AUDIO ← AUDIO / VIDEO / DATA / CONTROL 等
├─ codecs: [...] ← SDP の codec 情報(AFがSDPから作る)
├─ marBwUl / marBwDl: "41 Kbps" ← Maximum Requested Bandwidth(UL / DL)
├─ mirBwUl / mirBwDl ← Minimum Requested Bandwidth(任意)
├─ fStatus: ENABLED ← Flow Status(ゲート)
└─ medSubComps (map)
├─ "1": MediaSubComponent ← 例: RTP
│ ├─ fNum: 1 ← Flow Number(必須)
│ ├─ fDescs: [ UL用, DL用 ] ← Flow Description(最大2つ)
│ └─ flowUsage: NO_INFO
└─ "2": MediaSubComponent ← 例: RTCP
├─ fNum: 2
├─ fDescs: [ ... ]
└─ flowUsage: RTCP ← RTCP / AF_SIGNALLING / NO_INFO
| 属性 | 意味 | PCFでの使われ方 |
|---|---|---|
medType / codecs |
メディア種別とコーデック | 5QI 等の QoS クラスの導出材料(TS 29.513 §7.3、要確認) |
marBwUl / marBwDl |
要求最大帯域 | MBR / GBR の導出材料(導出規則は TS 29.513 §7.3、要確認) |
fDescs |
IP フローの記述(IPFilterRule 形式の文字列) | PCC Rule の SDF template(flowInfos) |
fStatus |
ENABLED / ENABLED-UPLINK / ENABLED-DOWNLINK / DISABLED / REMOVED | PCC Rule の Gate status |
flowUsage |
RTCP、AF_SIGNALLING 等 | フローの用途。AF_SIGNALLING は IMS シグナリング用フローの指示に使う |
Flow Description の書式は Rx の Flow-Description AVP を引き継いだ IPFilterRule 形式です(TS 29.514 §5.6.3。エンコードは TS 29.212 §5.4.2 の Flow-Description AVP、元の定義は Rx の TS 29.214 §5.3.8。いずれも要確認。PDR / PDI / SDF Filter と同じ参照先)。
permit out 17 from 198.51.100.20 40000 to 10.45.0.2 50000 ← DL(相手 → UE)
permit out 17 from 10.45.0.2 50000 to 198.51.100.20 40000 ← UL(UE → 相手)
│ │ └ 送信元アドレス ポート └ 宛先アドレス ポート
│ └ プロトコル番号(17 = UDP)
└ 方向キーワード
Rx 由来の規約では、方向キーワードは out に固定し、UL / DL は送信元・宛先アドレスのどちらが UE かで区別する とされています(TS 29.212 §5.4.2 / TS 29.214 §5.3.8、要確認)。この「方向の書き方」は、N5 → N7(flowInfos の flowDirection)→ N4(SDF Filter)と変換されるたびに解釈が入るため、実装間の不一致が PDR 不一致の原因になり得ます(後述の Trouble Shooting)。
What — N5 と N7 の関係(Session Binding)¶
PCF は「どのPDU Sessionか」をどう知るか¶
AF が App Session を作っても、それだけでは どの UE のどの PDU Session に効かせるのか が決まりません。PCF は App Session を、自分が持っている SM Policy Association(N7) のどれかに結び付けます。これを Session Binding と呼びます(TS 23.503 §6.1.3.2、要確認)。
flowchart LR
AF["AF
App Session
ueIpv4=10.45.0.2
dnn=ims"] -- "N5" --> PCF["PCF"]
SMF["SMF
PDU Session
UE IP=10.45.0.2
DNN=ims, S-NSSAI"] -- "N7
SM Policy Association" --> PCF
PCF --> B{"Session Binding
UEアドレス + DNN 等が一致?"}
B -- "一致" --> R["PCC Rule を作り
その SM Policy へ UpdateNotify"]
B -- "不一致" --> X["App Session を拒否
例: PDU_SESSION_NOT_AVAILABLE"]
TS 23.503 §6.1.3.2 の Binding mechanism は、おおむね次の3段で整理されています(枝番は要確認)。
| 段階 | 内容 | 担当 |
|---|---|---|
| Session binding | AF session 情報を 1つの PDU Session に対応付ける。キーは UE の IPv4 アドレス / IPv6 prefix(Ethernet なら MAC)、UE identity(あれば)、DNN、S-NSSAI 等 | PCF(§6.1.3.2.2、要確認) |
| PCC rule authorization | AF の要求と加入者・事業者ポリシーから、PCC Rule の QoS を認可する | PCF(§6.1.3.2.3、要確認) |
| QoS Flow binding | PCC Rule を既存または新規の QoS Flow に対応付ける(binding parameter: 5QI / ARP 等) | SMF(§6.1.3.2.4、要確認) |
最後の QoS Flow binding が SMF の仕事 である点が重要です。PCF が「新しい QoS Flow を作れ」と命令するのではなく、PCF は PCC Rule を渡し、新しい QoS Flow を作るかどうかは SMF が binding parameter を見て決めます(PCF / PCC)。
複数 PCF 構成と BSF¶
PCF が複数ある網では、AF は その PDU Session の SM Policy Association を持つ PCF に App Session を作らなければなりません。別の PCF に届くと、Session Binding に失敗します。
SMF ──N7── PCF-B ← UE IP 10.45.0.2 の SM Policy Association を持つ
AF ──N5── PCF-A ✗ ← 対象 Session を知らない → 拒否
AF ──N5── PCF-B ✓ ← Binding 成功
AF が担当 PCF を見つける方法は、BSF への Nbsf_Management_Discovery(UE IP・DNN・S-NSSAI をキーに担当PCFを検索)、SCP 経由の Delegated Discovery、Rx を使う AF なら BSF の Diameter Proxy / Redirect、ローカル設定 などがあり、どれを使うかは 配備依存 です(TS 23.503 §6.1.1.2、要確認)。詳細は BSF / PCF Binding と SBI Communication Model を参照してください。
How — AF要求がQoS Flowになるまで(End-to-End)¶
Call Flow¶
TS 23.502 §4.16.5.2(PCF-initiated SM Policy Association Modification)と §4.3.3.2(Network requested PDU Session Modification)を組み合わせた代表例です(step 番号・順序は版により異なるため要確認)。
sequenceDiagram
participant AF
participant BSF
participant PCF
participant SMF
participant AMF
participant gNB
participant UPF
AF->>BSF: Nbsf_Management_Discovery
(UE IP, DNN, S-NSSAI)
BSF-->>AF: 200 OK (担当PCF)
AF->>PCF: Npcf_PolicyAuthorization_Create
POST app-sessions (medComponents, notifUri, evSubsc)
PCF->>PCF: Session Binding
PCC Rule 認可・生成
PCF-->>AF: 201 Created (Location: app-sessions/ID)
PCF->>SMF: Npcf_SMPolicyControl_UpdateNotify
(PCC Rule 追加)
SMF-->>PCF: 200 OK / 204 No Content
Note over SMF: QoS Flow binding
新QFI割当 or 既存QoS Flowへ
SMF->>AMF: Namf_Communication_N1N2MessageTransfer
(N1: PDU Session Modification Command
N2: PDU Session Resource Modify Request Transfer)
AMF->>gNB: NGAP PDU Session Resource Modify Request
gNB-->>AMF: PDU Session Resource Modify Response
AMF->>SMF: Nsmf_PDUSession_UpdateSMContext (N2 SM情報)
SMF->>UPF: PFCP Session Modification Request
(Create PDR / QER)
UPF-->>SMF: PFCP Session Modification Response
Note over SMF: UE の Modification Complete 受信後
PCC Rule の結果を報告
SMF->>PCF: Npcf_SMPolicyControl_Update
(Rule の結果報告)
PCF->>AF: Npcf_PolicyAuthorization_Notify
POST notifUri/notify (SUCCESSFUL_RESOURCES_ALLOCATION 等)
201 Created は「QoS Flow ができた」ではない
PCF が AF に返す 201 Created は、App Session が作られ、要求が認可された ことを示すにとどまります。SMF・gNB・UE・UPF での反映はその後に起き、失敗することもあります。結果を知るには、AF が SUCCESSFUL_RESOURCES_ALLOCATION / FAILED_RESOURCES_ALLOCATION 等のイベントを購読しておく必要があります(イベント名と、SMF→PCF の報告に使う Policy Control Request Trigger の詳細は TS 29.514 §5.6.3 / TS 29.512 §4.2.4、要確認)。
- TS 23.502 §4.3.3.2 では N4 Session Modification が条件付きで複数の step に現れ(N2 応答の後、UE の Complete の後など。step 番号は要確認)、N4 更新のタイミングに選択肢があります。実際にどのタイミングで更新するかは実装依存です。UE が CM-IDLE なら、N1/N2 を届ける前に Paging が必要です(TS 23.502 §4.2.3.3)。
- PCF が AF への応答を UpdateNotify の前に返すか後に返すかは、仕様上の順序と実装の両方を確認してください(要確認)。
Signal Flow¶
| # | メッセージ | 区間 | 意味 | 規定 |
|---|---|---|---|---|
| 1 | Nbsf_Management_Discovery | AF → BSF | 担当PCFの検索(配備依存。省略される構成もある) | TS 29.521 §4.2.4 |
| 2 | Npcf_PolicyAuthorization_Create | AF → PCF | App Session 作成。メディア情報・Callback・購読イベント | TS 29.514 §4.2.2 |
| 3 | 201 Created | PCF → AF | App Session ID(Location)を返す | TS 29.514 §4.2.2(要確認) |
| 4 | Npcf_SMPolicyControl_UpdateNotify | PCF → SMF | PCC Rule の追加・変更を SM Policy Association へ反映 | TS 23.502 §4.16.5.2 / TS 29.512 §4.2.3(要確認) |
| 5 | N1N2MessageTransfer → NGAP Modify / NAS Modification Command | SMF → AMF → gNB / UE | 新 QoS Flow(QFI, 5QI, GFBR/MFBR)と QoS Rule | TS 23.502 §4.3.3.2 / TS 38.413 §8.2.3 / TS 24.501 §6.3.2(要確認) |
| 6 | PFCP Session Modification | SMF → UPF | SDF Filter 付き PDR、QFI・GBR/MBR・Gate の QER | TS 29.244 §7.5.4 / §7.5.5 |
| 7 | Npcf_SMPolicyControl_Update | SMF → PCF | PCC Rule の適用結果(失敗時は ruleReports) | TS 29.512 §4.2.4(要確認) |
| 8 | Npcf_PolicyAuthorization_Notify | PCF → AF | リソース割当の成否等のイベント通知 | TS 29.514 §4.2.5 |
変換の連鎖 — Flow Description から PDR まで¶
[N5] AF: MediaComponent
├─ medType=AUDIO, codecs, marBwUl/Dl ─────┐
├─ fStatus=ENABLED ──────────────┐ │ PCF: QoSマッピング(TS 29.513 §7.3)
└─ medSubComp.fDescs ──┐ │ │ + 加入者・事業者ポリシー
▼ ▼ ▼
[N7] PCF: PccRule ── flowInfos(SDF template) / precedence
├─ refTcData → TrafficControlData.flowStatus(Gate)
└─ refQosData → QosData(5qi, arp, maxbrUl/Dl, gbrUl/Dl)
│
▼ SMF: QoS Flow binding(5QI / ARP 等)→ QFI 割当
┌───────────────────┼─────────────────────────┐
▼ ▼ ▼
[N1] QoS Rule [N2] QoS Flow Level [N4] PDR(PDI: SDF Filter, QFI 等)
(UL Packet Filter, QoS Parameters + QER(QFI, MBR/GBR, Gate Status)
Precedence, QFI) (QFI, 5QI, ARP, GFBR/MFBR)
| AF が渡すもの(N5) | PCC Rule(N7, TS 29.512) | UE(N1) | gNB(N2) | UPF(N4) |
|---|---|---|---|---|
fDescs(Flow Description) |
flowInfos(flowDescription + flowDirection) |
QoS Rule の Packet Filter(UL) | —(gNB は SDF を知らない) | PDR の SDF Filter |
| —(PCF が決める) | precedence |
QoS Rule precedence | — | PDR Precedence |
medType / codecs / marBw* |
QosData(5QI、ARP、MBR / GBR) | QoS Flow Description(5QI、GFBR / MFBR) | QoS Flow Level QoS Parameters | QER(MBR / GBR、QFI) |
fStatus |
TrafficControlData の flowStatus | — | — | QER の Gate Status |
(属性名は概念表現。TS 29.512 §5.6.2、TS 24.501 §9.11.4.12 / §9.11.4.13、TS 38.413 §9.3.1.12、TS 29.244 §8.2.5(SDF Filter)。いずれも節番号は要確認)
- PCC Rule を Media Component 単位で作るか、Media Sub-Component(フロー)単位で作るかは PCF 実装依存 です。
- AUDIO を 5QI=1 にするといった対応は TS 29.513 §7.3 のマッピングと事業者ポリシーで決まり、AF が 5QI を直接指定するのではありません(Rel-16 以降の QoS Reference 等による例外は要確認)。
How — VoNR の P-CSCF で見る¶
VoNR では、IMS の P-CSCF が Trusted AF として N5 を使います。SIP の SDP から Media Component を組み立てるのは P-CSCF の仕事です。
sequenceDiagram
participant UE
participant PCSCF as P-CSCF (AF)
participant PCF
participant SMF
UE->>PCSCF: SIP INVITE (SDP offer)
Note over PCSCF: 相手側から SDP answer を受信
(例: 183 Session Progress)
PCSCF->>PCF: Npcf_PolicyAuthorization_Create
(ueIpv4, dnn=ims, AUDIO, fDescs RTP/RTCP)
PCF-->>PCSCF: 201 Created
PCF->>SMF: UpdateNotify (5QI=1 GBR の PCC Rule)
Note over SMF: 新 QoS Flow (5QI=1) を追加
N1 / N2 / N4 を更新
PCF->>PCSCF: Notify (SUCCESSFUL_RESOURCES_ALLOCATION)
PCSCF->>UE: SIP 183 / UPDATE 等で呼が進む
Note over UE,PCSCF: 通話終了 (BYE)
PCSCF->>PCF: POST app-sessions/ID/delete
PCF->>SMF: UpdateNotify (PCC Rule 削除)
Note over SMF: 5QI=1 の QoS Flow を解放
| SDP の情報 | Media Component への対応(概念) |
|---|---|
m=audio 50000 RTP/AVP ...(何番目の m= 行か) |
medCompN(m= 行の順番)、medType=AUDIO |
c= のアドレスと m= のポート |
fDescs の UE 側 / 相手側のアドレス・ポート |
| RTP ポート + 1(RTCP) | 別の Media Sub-Component(flowUsage=RTCP) |
b=AS: / コーデック |
marBwUl / marBwDl、codecs |
a=sendrecv / a=sendonly 等 |
fStatus(ENABLED / ENABLED-UPLINK 等) |
(SDP から Media Component への変換規則は TS 29.513 §7.2 等、P-CSCF が N5 要求を出すタイミング(SDP offer / answer のどちらで出すか)は TS 29.513 / TS 23.228 と P-CSCF の設定に依存します。いずれも要確認)
IMS シグナリングの QoS Flow(5QI=5)は N5 なしでも存在する
5QI=5 の QoS Flow は、通常 IMS 用 PDU Session の Default QoS Flow(Default QoS Rule に紐づく Flow)です。PDU Session 確立時に、UDM の加入者データにある Subscribed default QoS を PCF が認可・変更した値(authorized default QoS)で作られます(TS 23.501 §5.7.2.7 / TS 23.503 §6.4、枝番は要確認)。これとは別に、P-CSCF が flowUsage=AF_SIGNALLING で SIP シグナリング用フローを N5 で明示的に要求する方式もあります(TS 29.514 §4.2.2 の signalling flow 提供に関する枝番、要確認。使うかどうかは構成依存)。N5 が主役になるのは、通話ごとに作って消す 5QI=1 の音声 QoS Flow です。
Packet Analysis (Wireshark)¶
N5 / N7 は SBI なので HTTP/2 です。SBI では TLS のサポートは必須ですが、PLMN 内で実際に適用するかはオペレータの判断 です(TS 33.501 §13.1、要確認)。TLS が適用されていれば復号鍵(キーログ等)が必要です。ラボの Open5GS / free5GC 等では平文の HTTP/2(h2c)で構成されることもあります(設定依存)。なお、外部AFが使う N33(Northbound API)は HTTP/1.1 と HTTP/2 の両方があり得ます(TS 29.122 §5.2.2、要確認。NEF / N33)。
Display Filter¶
フィールド名は Wireshark の版により異なる場合があります(要確認)。
| フィルタ | 用途 |
|---|---|
http2.headers.path contains "npcf-policyauthorization" |
N5(App Session の Create / Update / Delete / Subscribe) |
http2.headers.path contains "app-sessions" |
App Session リソースに絞る |
http2.headers.method == "PATCH" |
Update に絞る |
http2.headers.path contains "/notify" / "/terminate" |
PCF → AF の通知(Callback の URI 体系は AF 実装が決める点に注意) |
http2.headers.path contains "npcf-smpolicycontrol" |
N7(SMF → PCF の Create / Update)。PCF → SMF の UpdateNotify は SMF の Callback URI 宛てなので、このフィルタでは拾えないことがある |
http2.headers.status |
応答ステータス(201 / 4xx / 5xx) |
json |
JSON Body(medComponents、pccRules 等) |
ngap / nas-5gs |
N2 PDU Session Resource Modify / N1 PDU Session Modification Command(NAS の暗号化に注意) |
pfcp |
N4 Session Modification(Create PDR / QER) |
gtp |
N3 の QFI(PDU Session Container) |
Decode例(概念表現)¶
以下は TS 29.514 / TS 29.512 の OpenAPI に沿った 概念表現 で、属性名は要確認、値は架空例です(要キャプチャ)。
[N5] POST /npcf-policyauthorization/v1/app-sessions
AppSessionContext
└─ ascReqData
├─ ueIpv4: 10.45.0.2
├─ dnn: ims
├─ notifUri: https://pcscf.example/n5cb/abc123
├─ suppFeat: "..."
├─ evSubsc
│ └─ events: [ SUCCESSFUL_RESOURCES_ALLOCATION, FAILED_RESOURCES_ALLOCATION ]
└─ medComponents
└─ "1"
├─ medCompN: 1, medType: AUDIO
├─ marBwUl: "41 Kbps", marBwDl: "41 Kbps"
├─ fStatus: ENABLED
└─ medSubComps
├─ "1": fNum 1
│ fDescs: [ "permit out 17 from 198.51.100.20 40000 to 10.45.0.2 50000",
│ "permit out 17 from 10.45.0.2 50000 to 198.51.100.20 40000" ]
└─ "2": fNum 2, flowUsage: RTCP, fDescs: [ ...40001 / 50001... ]
→ 201 Created
Location: https://pcf-b.example/npcf-policyauthorization/v1/app-sessions/7f3c...
[N7] POST {SMFのnotificationUri}/update ← UpdateNotify
SmPolicyNotification
└─ smPolicyDecision
├─ pccRules
│ └─ "voice-1": flowInfos [ {flowDescription, flowDirection: DOWNLINK}, {..., UPLINK} ]
│ precedence: 50, refQosData: ["qos-voice"], refTcData: ["tc-voice"]
├─ qosDecs
│ └─ "qos-voice": 5qi 1, gbrUl/gbrDl, maxbrUl/maxbrDl, arp {priorityLevel, preemptCap, preemptVuln}
└─ traffContDecs
└─ "tc-voice": flowStatus ENABLED
[N4] PFCP Session Modification Request
├─ Create PDR (UL): PDI { Source Interface: Access, Local F-TEID, QFI 2, SDF Filter } → QER 2
├─ Create PDR (DL): PDI { Source Interface: Core, UE IP 10.45.0.2, SDF Filter } → QER 2
└─ Create QER 2: QFI 2, Gate Status OPEN, MBR / GBR
見る順番¶
flowchart LR
A["① N5
Create の応答
201 / 4xx / 5xx"] --> B["② N7
UpdateNotify の有無
PCC Rule の中身"]
B --> C["③ N2 / N1
Modify Request / Response
Modification Command"]
C --> D["④ N4
Create PDR / QER
SDF Filter と Precedence"]
D --> E["⑤ N3
実トラフィックの
5-tuple と QFI"]
E --> F["⑥ N5 Notify
成否イベント"]
区間ごとに 相関キーが入れ替わる 点に注意します。
| 区間 | 相関キー |
|---|---|
| AF ⇔ PCF | App Session ID(Location)、notifUri、UE IP |
| PCF ⇔ SMF | SM Policy ID、PCC Rule ID |
| SMF ⇔ gNB / UE | PDU Session ID、QFI、QoS Rule ID |
| SMF ⇔ UPF | SEID、PDR ID / QER ID |
| N3 | TEID、QFI、内側 IP の 5-tuple |
Trouble Shooting¶
| 症状 | 想定原因 | 確認ポイント | ログ | Packet | 解決方法 |
|---|---|---|---|---|---|
| AF Request が PCF に来ない | AF が担当PCFを見つけられない(BSF の 204、NRF / SCP 設定)、名前解決・TLS・HTTP/2 の失敗 | AF の宛先 PCF、BSF Discovery の結果、TLS handshake | AF / BSF / SCP ログ | http2、tls.alert_message |
宛先解決の経路(BSF / SCP / ローカル設定)を確認 |
| Create が 400 | JSON の必須属性欠落(notifUri、suppFeat 等)、書式不正(Flow Description、Bitrate の書式) |
ProblemDetails の invalidParams |
PCF ログ | http2、json |
AF の生成する JSON を修正 |
| Create が 403 | 要求サービスが認可されない(加入者・事業者ポリシー) | ProblemDetails の cause(例: REQUESTED_SERVICE_NOT_AUTHORIZED、要確認) |
PCF ログ | http2 |
PCF のポリシー設定を確認 |
| Create が 5xx(Binding 失敗) | AF が担当外の PCF に送った、UE IP / DNN の不一致、PDU Session が未確立・解放済み | cause(例: PDU_SESSION_NOT_AVAILABLE、要確認)、BSF の Binding |
PCF / BSF ログ | http2 |
BSF / PCF Binding の登録・検索を確認 |
| 201 なのに N7 UpdateNotify が出ない | PCF が要求を Session に結び付けたが変更不要と判断、PCF 内部エラー | PCF の決定ログ | PCF ログ | http2 |
PCF のポリシーと決定内容を確認(実装依存) |
| UpdateNotify は出たが新 QFI が無い | binding parameter(5QI / ARP 等)が既存 Flow と同じで 既存 QoS Flow に束ねられた(正常動作の場合あり) | PCC Rule の 5QI / ARP と既存 Flow | SMF ログ | json、pfcp |
期待どおりか判断。別 Flow が必要なら PCF の QoS 決定を見直す |
| QoS Flow の追加が途中で失敗 | gNB の Admission Control で拒否、UE の Modification Command Reject、UE が到達不能 | NGAP Modify Response の失敗リストと Cause、5GSM Cause | gNB / AMF / SMF ログ | ngap、nas-5gs |
無線リソース・UE 能力を確認。AF は FAILED_RESOURCES_ALLOCATION を購読しておく |
| Traffic が PDR に Match しない | SDP のアドレス・ポートと実トラフィックの不一致(NAT、メディア中継、ポート変更)、RTCP 未記述、方向の書き方の解釈違い、Precedence が default PDR より弱い | PDR の SDF Filter と N3 の 5-tuple、Precedence | SMF / UPF ログ | pfcp、gtp |
SDF Filter と実トラフィックを並べて比較(下記) |
| 通話終了後も QoS Flow が残る | AF が Delete を送らない、terminate 後の Delete 漏れ | N5 の delete の有無 | AF / PCF ログ | http2 |
AF のセッション終了処理を確認 |
AF Request が PCF に来ない — 下から順に¶
① AF は Request を送信しているか(AF ログ、送信側キャプチャ)
② 宛先 PCF は正しいか(BSF Discovery の 200 / 204、SCP のルーティング、ローカル設定)
③ TCP / TLS は確立しているか(TLS Alert、証明書)
④ HTTP/2 として届いているか(:path が /npcf-policyauthorization/v1/app-sessions か、API バージョン)
⑤ PCF の応答は何か(201 / 400 / 403 / 404 / 5xx と ProblemDetails)
PCF までは成功するが QoS Flow が作られない¶
201 Created の後に見るべきなのは N7 の UpdateNotify です。
AF ──201──► 成功 ← ここで安心しない
PCF ──UpdateNotify──► SMF ← 出ているか / PCC Rule の 5QI・ARP・flowInfos は期待どおりか
SMF ──► N2 / N1 / N4 ← 新 QFI が割り当てられたか、既存 Flow に束ねられたか
SMF ──Update(ruleReports)──► PCF ← 失敗報告が来ていないか
PCF ──Notify──► AF ← FAILED_RESOURCES_ALLOCATION が来ていないか
Traffic が PDR に Match しない — 比較表を作る¶
| 項目 | AF の Flow Description | PDR の SDF Filter(N4) | N3 の実トラフィック | 判定 |
|---|---|---|---|---|
| UE アドレス・ポート | 10.45.0.2 : 50000 | 10.45.0.2 : 50000 | 10.45.0.2 : 50000 | OK |
| 相手アドレス・ポート | 198.51.100.20 : 40000 | 198.51.100.20 : 40000 | 198.51.100.30 : 40000 | NG(メディア中継の実アドレスが異なる) |
| プロトコル | 17 | 17 | UDP | OK |
| RTCP | 記述あり | PDR あり | 40001 / 50001 | OK |
| Precedence | — | 50 | default PDR は 255 | OK(小さい方が優先) |
| UL の QFI | — | QFI 2 を期待 | QFI 1 で到着 | NG(UE の QoS Rule が未適用、または UE 側の分類不一致) |
(値は架空例。要キャプチャ)UL では、UE が QoS Rule の Packet Filter に従って QFI を付けます。UL PDR が QFI も条件にしている場合、UE 側の分類がずれていると UPF の PDR に Match しません。PDR の Match 規則の詳細は PDR / PDI / SDF Filter を参照してください。
3GPP仕様とVendor実装の境界¶
| 3GPPが定義するもの | Vendor / 運用が決めるもの |
|---|---|
| Npcf_PolicyAuthorization のリソース・オペレーション・データ型(TS 29.514) | PCF の Policy Engine、ルールの書き方、DB / Cache 構造 |
| Session Binding・PCC rule authorization・QoS Flow binding の考え方(TS 23.503) | PCC Rule を Media Component / Sub-Component のどちらの単位で作るか |
| メディア情報から QoS への標準的なマッピング(TS 29.513) | 最終的な 5QI / ARP / ビットレートの事業者ポリシー |
| BSF の Binding と Discovery(TS 29.521) | AF が PCF を見つける方法(BSF / SCP / ローカル設定)の選択 |
| N1 / N2 / N4 への反映手続き(TS 23.502 §4.3.3.2) | N4 と N2 の更新順序、Pod / Microservice 構成、CLI |
| Trusted AF は直接、それ以外は NEF 経由(TS 23.501 §6.2.10) | どの AF を Trusted とみなすか(オペレータ判断) |
EPC(4G)との比較¶
N5 は、4G の Rx(AF ⇔ PCRF、Diameter、TS 29.214)を SBI 化したものです。
| 4G Rx(Diameter) | 5G N5(Npcf_PolicyAuthorization) |
|---|---|
| AAR / AAA(初回) | Create: POST /app-sessions → 201 |
| AAR / AAA(変更) | Update: PATCH /app-sessions/{appSessionId} |
| STR / STA | Delete: POST /app-sessions/{appSessionId}/delete |
| RAR / RAA(PCRF → AF の通知) | Notify: POST {notifUri}/notify |
| ASR / ASA(PCRF → AF の終了要求) | Notify(終了要求): POST {notifUri}/terminate → AF が Delete |
| Specific-Action AVP(AAR 内) | Subscribe(evSubsc / events-subscription) |
| Media-Component-Description / Media-Sub-Component AVP | medComponents / medSubComps |
| Flow-Description AVP | fDescs(同じ IPFilterRule 形式) |
| Gx(PCRF → PCEF) | N7(PCF → SMF) |
| 専用ベアラ(TFT) | 専用 QoS Flow(QoS Rule / QFI) |
| DRA による PCRF Binding | BSF による PCF Binding |
(対応は本章の整理。Rx の AVP 定義は TS 29.214 §5.3、Diameter Command は §5.6(要確認))
5GC でも Rx が使われる構成
VoNR の初期展開などでは、P-CSCF が Diameter の Rx のまま 5GC の PCF と接続する構成があります。PCF の Rx サポートは TS 23.503 / TS 29.214 / TS 29.513 に関連する規定があります(節番号は要確認)。この場合、PCF の手前で BSF が Diameter Proxy / Redirect として担当PCFを解決することがあります(BSF / PCF Binding)。Trace で HTTP/2 の N5 が見つからないときは、Diameter(diameter)も確認します。
3GPP Specification¶
| 仕様 | 節 | 内容 |
|---|---|---|
| TS 23.501 | §6.2.10 | AF(Trusted AF は直接、それ以外は NEF 経由) |
| TS 23.501 | §4.2.7 | 参照点(N5 等。要確認) |
| TS 23.502 | §5.2.5.3 | Npcf_PolicyAuthorization サービス(Stage 2。要確認) |
| TS 23.502 | §4.16.5.2 | PCF-initiated SM Policy Association Modification(要確認) |
| TS 23.502 | §4.3.3.2 | UE or network requested PDU Session Modification(step 番号は要確認) |
| TS 23.502 | §4.2.3.3 | Network Triggered Service Request |
| TS 23.503 | §6.1.3.2 | Binding mechanism(Session binding / PCC rule authorization / QoS Flow binding。枝番は要確認) |
| TS 23.503 | §6.1.1.2 | BSF による PCF 発見(要確認) |
| TS 29.514 | §4.2.2〜§4.2.7 | Create / Update / Delete / Notify / Subscribe / Unsubscribe(枝番は要確認) |
| TS 29.514 | §5.3 / §5.6 | リソース定義 / データモデル(AppSessionContext、MediaComponent 等。要確認) |
| TS 29.513 | §7.2 / §7.3 | QoS パラメータマッピング(AF 側 / PCF 側。要確認) |
| TS 29.512 | §4.2.3 / §4.2.4 / §5.6.2 | UpdateNotify / Update / SmPolicyDecision 等のデータ型(要確認) |
| TS 29.521 | §4.2.4 | Nbsf_Management_Discovery |
| TS 29.212 | §5.4.2 | Flow-Description AVP(N5 の Flow Description のエンコード参照先。要確認) |
| TS 29.214 | §5.3.8 | Rx の Flow-Description AVP(元の定義。要確認) |
| TS 24.501 | §6.3.2 / §9.11.4.13 | Network-requested PDU session modification / QoS rules(要確認) |
| TS 38.413 | §8.2.3 / §9.3.1.12 | PDU Session Resource Modify / QoS Flow Level QoS Parameters(要確認) |
| TS 29.244 | §7.5.4 / §8.2.5 | PFCP Session Modification / SDF Filter(要確認) |
| TS 33.501 | §13.1 | SBI の TLS(要確認) |
Summary¶
- N5 = Npcf_PolicyAuthorization(TS 29.514)。AF が Consumer、PCF が Producer。Notify だけは PCF → AF の Callback
- AF は PCF 上に Application Session Context(
app-sessions/{appSessionId})を作り、Update(PATCH)・Delete(POST.../delete)・Subscribe(PUTevents-subscription)で管理する - AF が渡すのは Media Component / Flow Description / 帯域 というアプリの言葉。PCF が Session Binding でPDU Sessionに結び付け、PCC Rule に翻訳し、N7 UpdateNotify で SMF へ渡す
- 新しい QoS Flow を作るかは SMF の QoS Flow binding が決める。SMF が N1(QoS Rule)・N2(QoS Flow)・N4(PDR / QER)へ展開する
- 複数 PCF 構成では、AF は 担当PCF に届かなければならない → BSF。外部 AF は NEF 経由
201 Createdは QoS 適用完了ではない。UpdateNotify → N2 / N1 / N4 → N3 の実トラフィック → Notify まで追う
理解度チェック¶
Q1. AF があるアプリのトラフィックに特定の QoS を要求しました。正しい流れはどれか。A. AF が UPF へ直接 PFCP で QER を作成する / B. AF → PCF → SMF と Policy が伝わり、SMF が必要な PDR / QER 等を N4 で UPF へ設定する / C. AF が gNB へ NGAP を直接送り、gNB が UPF へ QER を通知する / D. AF が N3 GTP-U ヘッダの QFI を直接書き換える
正解: B。AF は N5(Npcf_PolicyAuthorization)で PCF に要求するだけで、UE・gNB・UPF を直接設定できません。PCF が PCC Rule を作って N7 で SMF に渡し、SMF が N4(PDR / QER)、N2(QoS Flow)、N1(QoS Rule)へ展開します(TS 23.502 §4.16.5.2 / §4.3.3.2)。PFCP の制御側は SMF(A は誤り)、NGAP の相手は AMF(C は誤り)、DL の QFI を付けるのは UPF、UL は UE / gNB 側です(D は誤り)。
Q2. P-CSCF の Create に PCF は 201 Created を返し、N7 UpdateNotify も送られました。しかし新しい QFI は割り当てられていません。PCC Rule の 5QI と ARP は、既存の default QoS Flow と同じでした。何が起きていますか。
SMF の QoS Flow binding により、binding parameter(5QI / ARP 等)が同じ PCC Rule が 既存の QoS Flow に束ねられた と考えられます(TS 23.503 §6.1.3.2.4、要確認)。新しい QoS Flow を作るかどうかを決めるのは PCF ではなく SMF です。音声用に専用 QoS Flow が必要なら、PCF の QoS 決定(例: 5QI=1、GBR)が期待どおりかを確認します。
Q3. PCF が3台ある網で、AF の Create が 5xx(cause: PDU_SESSION_NOT_AVAILABLE)で拒否されました。考えられる原因と確認先は?
AF が、その UE の SM Policy Association を持たない PCF に App Session を作ろうとした可能性があります。PCF は UE IP・DNN 等で Session Binding できず拒否します(cause 名とステータスコードは TS 29.514 で要確認)。AF が担当PCFを見つける経路(BSF への Nbsf_Management_Discovery、SCP、ローカル設定)と、担当PCFが BSF に Binding を Register しているかを確認します(BSF / PCF Binding)。UE IP の不一致や PDU Session の解放済みも疑います。
Q4. 4G の Rx の AAR(初回)、STR、RAR は、N5 ではそれぞれどのオペレーションに相当しますか。
AAR(初回)→ Create(POST /app-sessions)、STR → Delete(POST /app-sessions/{appSessionId}/delete)、RAR → Notify(PCF → AF の POST {notifUri}/notify)です。AAR による変更は Update(PATCH)、ASR は terminate 通知 に相当し、その後 AF が Delete を送ります。
Next Step¶
- 外部 AF が NEF 経由で同じ App Session を作る仕組み → NEF / N33 / Event Exposure
- AF が担当PCFを見つける仕組み → BSF / PCF Binding / SBI Communication Model
- PCC Rule が N1 / N2 / N4 に翻訳される詳細 → PCF / SM Policy Association / PCC Rule / N7 SBI解析
- SDF Filter と PDR の Match → PDR / PDI / SDF Filter / QoS Flow / QFI / 5QI
- P-CSCF を AF とする代表例 → VoNR / PDU Session Modification
- 概要ページ → AF / N5 / Policy