コンテンツにスキップ

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 Clause 6.2.10、TS 29.514 Clause 4.1(要確認))。

例え話: AF は「イベント主催者」、PCF は「道路管理局」、SMF は「現場の交通整理責任者」です。主催者は「午後7時から、この会場とこの駐車場の間を、このくらいの台数が通る」と申請します(Application Session)。管理局は申請を審査し、「この区間をこの条件で優先レーンにする」という許可書(PCC Rule)を発行します。実際にコーンを置いて車線を作る(QoS Flow / PDR / QER)のは現場責任者です。主催者が自分でコーンを置くことはできません。


What — N5 と Npcf_PolicyAuthorization

参照点とサービス

観点 内容 規定
参照点 N5: AF ⇔ PCF TS 23.501 Clause 4.2.7(要確認)
サービス Npcf_PolicyAuthorization(PCFが提供) TS 23.502 Clause 5.2.5.3(要確認)、TS 29.514
Consumer / Producer AF = Service Consumer、PCF = Service Producer TS 29.514 Clause 4.1(要確認)
プロトコル HTTP/2 + JSON(SBI 共通) TS 29.500 / TS 29.501
API ルート {apiRoot}/npcf-policyauthorization/v1 TS 29.514 Clause 5.1(要確認)

通知(Notify)は方向が逆になり、PCF が AF の Callback URI(notifUri)へ POST します。このときだけ HTTP の Client / Server が入れ替わります。

Trusted AF と Untrusted AF

TS 23.501 Clause 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 Clause 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 Clause 4.2.2
Update AF → PCF PATCH /app-sessions/{appSessionId}(merge-patch) 200 OK / 204 No Content TS 29.514 Clause 4.2.3
Delete AF → PCF POST /app-sessions/{appSessionId}/delete 204 No Content(最終報告を返す場合は 200 OK) TS 29.514 Clause 4.2.4
Notify PCF → AF POST {notifUri}/notify(イベント)/ POST {notifUri}/terminate(終了要求) 204 No Content TS 29.514 Clause 4.2.5
Subscribe AF → PCF PUT /app-sessions/{appSessionId}/events-subscription 201 Created(新規)/ 200 OK・204(変更) TS 29.514 Clause 4.2.6
Unsubscribe AF → PCF DELETE /app-sessions/{appSessionId}/events-subscription 204 No Content TS 29.514 Clause 4.2.7

(オペレーションの節番号、各ステータスコードの使い分け、/delete を DELETE メソッドでなくカスタムオペレーション(POST)とする理由は、対象 Release の TS 29.514 Clause 4.2 / Clause 5.3 で要確認。Stage 2 は TS 23.502 Clause 5.2.5.3、要確認)

Delete が DELETE メソッドではない理由

App Session の削除時、AF は「最後の使用量報告が欲しい」等の購読情報を Body に入れて送れます。Body を伴うため、DELETE ではなく POST .../{appSessionId}/delete のカスタムオペレーションとして定義されています(理由付けは本章の解釈。定義は TS 29.514 Clause 5.3、要確認)。Trace で DELETE を探しても見つからないのはこのためです。

PCF からの terminate は「削除」ではない

PCF が POST {notifUri}/terminate を送るのは、「この App Session を終了してほしい」という AF への依頼 です(例: 対応する PDU Session が解放された)。App Session リソース自体は、AF がその後に Delete を送って消します(TS 29.514 Clause 4.2.5、要確認)。AF が terminate に応じて Delete を送らない実装だと、PCF 側に App Session が残り得ます。

AppSessionContextReqData の主要属性

Create の Body は AppSessionContext で、その中の ascReqData(AppSessionContextReqData)に要求内容が入ります(TS 29.514 Clause 5.6.2.2 / Clause 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 Clause 5.6.2 の MediaComponent 型、要確認)
通知の購読 evSubsc Create と同時に購読するイベント(EventsSubscReqData)
その他 aspId / sponId / sponStatus Sponsored Data Connectivity
resPrio / mpsId / mcsId 優先サービス(MPS / MCS)の指示

主要属性の抜粋であり、網羅ではありません。必須 / 任意 / 条件付きの区分と Release ごとの追加属性は TS 29.514 Clause 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 Clause 7.3、要確認)
marBwUl / marBwDl 要求最大帯域 MBR / GBR の導出材料(導出規則は TS 29.513 Clause 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 Clause 5.6.3。エンコードは TS 29.212 Clause 5.4.2 の Flow-Description AVP、元の定義は Rx の TS 29.214 Clause 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 Clause 5.4.2 / TS 29.214 Clause 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 Clause 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 Clause 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(Clause 6.1.3.2.2、要確認)
PCC rule authorization AF の要求と加入者・事業者ポリシーから、PCC Rule の QoS を認可する PCF(Clause 6.1.3.2.3、要確認)
QoS Flow binding PCC Rule を既存または新規の QoS Flow に対応付ける(binding parameter: 5QI / ARP 等) SMF(Clause 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 Clause 6.1.1.2、要確認)。詳細は BSF / PCF Binding と SBI Communication Model を参照してください。


How — AF要求がQoS Flowになるまで(End-to-End)

Call Flow

TS 23.502 Clause 4.16.5.2(PCF-initiated SM Policy Association Modification)と Clause 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 Clause 5.6.3 / TS 29.512 Clause 4.2.4、要確認)。

  • TS 23.502 Clause 4.3.3.2 では N4 Session Modification が条件付きで複数の step に現れ(N2 応答の後、UE の Complete の後など。step 番号は要確認)、N4 更新のタイミングに選択肢があります。実際にどのタイミングで更新するかは実装依存です。UE が CM-IDLE なら、N1/N2 を届ける前に Paging が必要です(TS 23.502 Clause 4.2.3.3)。
  • PCF が AF への応答を UpdateNotify の前に返すか後に返すかは、仕様上の順序と実装の両方を確認してください(要確認)。

Signal Flow

# メッセージ 区間 意味 規定
1 Nbsf_Management_Discovery AF → BSF 担当PCFの検索(配備依存。省略される構成もある) TS 29.521 Clause 4.2.4
2 Npcf_PolicyAuthorization_Create AF → PCF App Session 作成。メディア情報・Callback・購読イベント TS 29.514 Clause 4.2.2
3 201 Created PCF → AF App Session ID(Location)を返す TS 29.514 Clause 4.2.2(要確認)
4 Npcf_SMPolicyControl_UpdateNotify PCF → SMF PCC Rule の追加・変更を SM Policy Association へ反映 TS 23.502 Clause 4.16.5.2 / TS 29.512 Clause 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 Clause 4.3.3.2 / TS 38.413 Clause 8.2.3 / TS 24.501 Clause 6.3.2(要確認)
6 PFCP Session Modification SMF → UPF SDF Filter 付き PDR、QFI・GBR/MBR・Gate の QER TS 29.244 Clause 7.5.4 / Clause 7.5.5
7 Npcf_SMPolicyControl_Update SMF → PCF PCC Rule の適用結果(失敗時は ruleReports) TS 29.512 Clause 4.2.4(要確認)
8 Npcf_PolicyAuthorization_Notify PCF → AF リソース割当の成否等のイベント通知 TS 29.514 Clause 4.2.5

変換の連鎖 — Flow Description から PDR まで

[N5] AF: MediaComponent
     ├─ medType=AUDIO, codecs, marBwUl/Dl ─────┐
     ├─ fStatus=ENABLED ──────────────┐        │  PCF: QoSマッピング(TS 29.513 Clause 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 Clause 5.6.2、TS 24.501 Clause 9.11.4.12 / Clause 9.11.4.13、TS 38.413 Clause 9.3.1.12、TS 29.244 Clause 8.2.5(SDF Filter)。いずれも節番号は要確認)

  • PCC Rule を Media Component 単位で作るか、Media Sub-Component(フロー)単位で作るかは PCF 実装依存 です。
  • AUDIO を 5QI=1 にするといった対応は TS 29.513 Clause 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 Clause 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 Clause 5.7.2.7 / TS 23.503 Clause 6.4、枝番は要確認)。これとは別に、P-CSCF が flowUsage=AF_SIGNALLING で SIP シグナリング用フローを N5 で明示的に要求する方式もあります(TS 29.514 Clause 4.2.2 の signalling flow 提供に関する枝番、要確認。使うかどうかは構成依存)。N5 が主役になるのは、通話ごとに作って消す 5QI=1 の音声 QoS Flow です。


Packet Analysis (Wireshark)

N5 / N7 は SBI なので HTTP/2 です。SBI では TLS のサポートは必須ですが、PLMN 内で実際に適用するかはオペレータの判断 です(TS 33.501 Clause 13.1、要確認)。TLS が適用されていれば復号鍵(キーログ等)が必要です。ラボの Open5GS / free5GC 等では平文の HTTP/2(h2c)で構成されることもあります(設定依存)。なお、外部AFが使う N33(Northbound API)は HTTP/1.1 と HTTP/2 の両方があり得ます(TS 29.122 Clause 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 Clause 4.3.3.2) N4 と N2 の更新順序、Pod / Microservice 構成、CLI
Trusted AF は直接、それ以外は NEF 経由(TS 23.501 Clause 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 Clause 5.3、Diameter Command は Clause 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 Clause 6.2.10 AF(Trusted AF は直接、それ以外は NEF 経由)
TS 23.501 Clause 4.2.7 参照点(N5 等。要確認)
TS 23.502 Clause 5.2.5.3 Npcf_PolicyAuthorization サービス(Stage 2。要確認)
TS 23.502 Clause 4.16.5.2 PCF-initiated SM Policy Association Modification(要確認)
TS 23.502 Clause 4.3.3.2 UE or network requested PDU Session Modification(step 番号は要確認)
TS 23.502 Clause 4.2.3.3 Network Triggered Service Request
TS 23.503 Clause 6.1.3.2 Binding mechanism(Session binding / PCC rule authorization / QoS Flow binding。枝番は要確認)
TS 23.503 Clause 6.1.1.2 BSF による PCF 発見(要確認)
TS 29.514 Clause 4.2.2〜Clause 4.2.7 Create / Update / Delete / Notify / Subscribe / Unsubscribe(枝番は要確認)
TS 29.514 Clause 5.3 / Clause 5.6 リソース定義 / データモデル(AppSessionContext、MediaComponent 等。要確認)
TS 29.513 Clause 7.2 / Clause 7.3 QoS パラメータマッピング(AF 側 / PCF 側。要確認)
TS 29.512 Clause 4.2.3 / Clause 4.2.4 / Clause 5.6.2 UpdateNotify / Update / SmPolicyDecision 等のデータ型(要確認)
TS 29.521 Clause 4.2.4 Nbsf_Management_Discovery
TS 29.212 Clause 5.4.2 Flow-Description AVP(N5 の Flow Description のエンコード参照先。要確認)
TS 29.214 Clause 5.3.8 Rx の Flow-Description AVP(元の定義。要確認)
TS 24.501 Clause 6.3.2 / Clause 9.11.4.13 Network-requested PDU session modification / QoS rules(要確認)
TS 38.413 Clause 8.2.3 / Clause 9.3.1.12 PDU Session Resource Modify / QoS Flow Level QoS Parameters(要確認)
TS 29.244 Clause 7.5.4 / Clause 8.2.5 PFCP Session Modification / SDF Filter(要確認)
TS 33.501 Clause 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 Clause 4.16.5.2 / Clause 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 Clause 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