コンテンツにスキップ

AF / N5 / Application Session — アプリの要求がQoS Flowになるまで

難易度: 上級(マニアック) / 想定学習時間: 40分 / 前提: PCF / SM Policy Association / PCC Rule, N7 SBI解析, N5 / 主役: AF, PCF, SMF / 主Interface: N5(Npcf_PolicyAuthorization), N7

学習目標

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

  • 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 しない」を区間ごとに切り分けられる

前提知識

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