📱

3GPP仕様書リーディングガイド(5GS編)

2021/10/21に公開

はじめに

モバイル通信技術の標準化団体である3GPPでは標準化の結果を仕様書という形で公開しています。この3GPP仕様書を読み解くのは最初は非常に大変です。仕様書の数が多く、略語が多く、参照が複雑に絡み合ってどこから手を付けたらよいのかわからなくなります。
この記事では、3GPP初心者の方が仕様書の番号を理解し、興味のある仕様書をどう見つけらた良いのか、5GSを例に紹介したいと思います。

3GPP仕様書の仕組みを理解する

仕様書番号を理解する

全ての3GPP仕様書は5桁の数字で構成される仕様書番号を持ちます。
5GSのアーキテクチャを規定する仕様書である3GPP TS 23.501を例に見てみます。

この23.501が仕様書番号で、最初の2桁がシリーズを表し、さらに後ろの3桁でシリーズ内の仕様を特定します。

シリーズ

最初の2桁のシリーズは技術分野を表します。例えば、コアネットワークの仕様書としては、ハイレベルなアーキテクチャは23シリーズ、コアネットワークのプロトコルは29シリーズ、UEとネットワーク間のプロトコルは24シリーズといった具合です。また、無線技術の仕様では、LTEが36シリーズ、5G NRが38シリーズにまとめられています。
以下は、こちらで公開されているシリーズと技術分野の分類の対応表です。赤で囲っているところが3G以降のシリーズです。

ステージ

上の図のカッコ内にあるstage 1, 2, 3は、それぞれサービス仕様、アーキテクチャ&動作手順、プロトコル&シグナリングを表しており、標準化サイクルの中でこの順序で標準化が進んでいくことが多いです。ウォーターフォール型開発が要件定義、基本設計、詳細設計の順番に進んでいくのと同じとイメージして頂いてもよいかもしれません。
各stageの構成と内容を具体的に書くと以下のようになります。

  • stage 1: 標準仕様のシステムの全体像や概要、実際のユーザがそのシステムを利用する状況とそれにより解決しようとする課題(=ユースケース)を分析し、要求条件とそれが導き出される背景などを記載する。また、セキュリティ、課金、プライバシーなどシステムの共通的な機能の要求条件も記載する。
  • stage 2:アーキテクチャとしてあるシステムに特有な機能構成(機能ブロックとブロック間の関係を示した図)と各機能ブロックの機能要件、プロトコル構成(OSI参照モデルベース)、機能ブロック間のインタフェースおよび参照点、コールフローなどが定義される。機能ブロックは「エンティティ」とよばれる(口語では単にBox(箱)と言ったりもする)。
  • stage 3:プロトコルとその詳細パラメータおよび動作条件など製品実装のために十分に詳細な仕様が規定される。コールフローが描かれる場合もあるが、stage 2のコールフローよりも特定の機能ブロック間の通信に着目して、詳細パラメータや信号の具体例が示されることもある。

EPCや5GC、IMSなどコアネットワークの仕様の標準化はこのstageの方法論を採用しています。一方で、無線レイヤやネットワーク管理、コーデックなどの標準化では(私はあまり詳しくないですが)おそらく異なる標準化プロセスを採用しているものと思われます。
仕様書のステージを把握することは、仕様書のスコープ、仕様書間の関係、全体像を把握することにつながるので、自分がどのステージの仕様書を読んでいるかは常に意識することをおすすめします。3G以降の仕様では22 series、23 series、24 seriesがstage 1、stage 2、stage 3に対応します。
まとめると以下のような対応になります。

  • stage 1:サービス仕様(22 series)
  • stage 2:アーキテクチャ&動作手順(23 series)
  • stage 3:プロトコル&シグナリング(24 series, 29 series)

コアネットワークの設計、開発者はこれらのシリーズの仕様書を参照することが多くなると思います。

なお、調べてみるとこの標準化におけるステージという方法論はISDNの標準化の過程でITU-T I.130にまとめられ体系化されたもののようです。

リリース

3GPPでは「リリース」という単位で仕様書を公開しています。この仕様書は変更や更新があった場合にバージョン番号とともに更新されます。
LTEはリリース8で標準化され、5Gはリリース15で標準化されました。現在はリリース18の標準化が開始されたところで、5Gの機能拡張や性能向上について議論されています。なお、このリリース18から標準化される5G機能群は5G-Advancedとよばれます。
3G PortalでTS 23.501の情報をみると、この仕様書がリリース15で作成されたのがわかります。

3GPPであるリリースの標準化が完了すると、それ以降のそのリリースの仕様への機能追加が禁止されます。そのため機能追加をするには次のリリースで行う必要があります。これをフリーズといいます。

3GPPは、最新版の仕様書をリリース単位でまとめてこちらに公開しています。

バージョン

次に実際に仕様書をダウンロードしてみて仕様書のバージョンについて理解しましょう。
3G PortalでTS 23.501にアクセスします。Versionsタブを押すと現在存在する仕様書がリリース毎にまとめられているのが見えます。各リリースには複数のバージョンがあります。

これを見ると、x(メジャー).y(マイナー).z(パッチ)のようなバージョニングをしています。
xのメジャーバージョンにリリース番号が入ることが見て取れます。このバージョニングはTSとTRの両方で使われています。
yは3GPPの承認機関であるTSG (Techinical Specification Group)によって1つ以上のCR(Change Request)が承認されると、それを仕様書に反映してyの値がインクリメントされます。一般的に3GPPのTSGのプレナリー会合単位でその反映作業をします。
次に、zは技術的な変更を含まないエディトリアルな修正で、MCC(3GPPのサポートチーム)の判断で実施されインクリメントされます。
yがインクリメントされるとzはゼロにリセットされます。また、リリース番号のxがインクリメントされるとyもゼロにリセットされます。

通常、xにはリリース番号が入りますが、上のように0,1,2,という数値が入ることもあります。これはTSGで仕様書が承認される前の段階で、0は新規ドラフト、1はTSGに策定状況の報告用、2はTSGへの承認要求用のバージョンであることを意味しています。
なので、V1.0.0を安定した完成度の高いバージョンと思うのは間違いなので注意しましょう。


仕様書の中身を読む

ここからは仕様書の中身を読んでいきましょう。5GSの仕様書を例に取り上げますが、それ以外の仕様書でも同じ考え方が適用できます。
まず最初に初心者の方が圧倒されるのがその仕様書の数です。5GSだけでも数十もの仕様書があり、どこから読んだらいいのかわからないのが普通です。そこで、さきほど紹介してきた「ステージ」の考え方が役に立ちます。ステージ1,2,3はそのまま仕様書の分類になります。知りたいことや目的に応じてどのステージの仕様書を読むかあたりを付けてから仕様書を探します。
以下に5GSに関係する代表的なステージ1,2の仕様書を挙げます。
Stage 1
TS 22.261 Service requirements for the 5G system
Stage 2
TS 23.501 System architecture for the 5G System (5GS); Stage 2
TS 23.502 Procedures for the 5G System (5GS); Stage 2
TS 23.503 Policy and charging control framework for the 5G System (5GS); Stage 2
TS 33.501 Security architecture and procedures for 5G system

先ずステージ1のTS 22.261で5GS全体のサービス要求条件が規定されています。標準化で一番先に規定されるところです。ステージ1の仕様書は標準化をする人にとってはまあまあ大切なのですが、ふわっとしたことが書いてあるので一般には見る機会は少ないかもしれません。
ステージ2のTS 23.501、TS 23.502、TS 23.503、TS 33.501は重要です。
最初の3つは23シリーズで、シリーズでみたようにステージ2の仕様書であることがわかります。
一方、TS 33.501はシリーズとしてはSecurity aspectsになります。モバイルシステムにおけるセキュリティは多岐にわたるため、独立した仕様書になっています。TS 33.501は5GSにおける全体のセキュリティアーキテクチャと動作を規定するスコープが広い仕様書になります。TS 23.501のように仕様書にStage 2と記載はありませんが、ステージ2に位置づけられる仕様書です。

仕様書の構成

3GPPの仕様書の構成は、表紙→Contents(目次)→Foreword→(Introduction)→Scope→Reference→Definitions and abbreviations→本文→Annex (normative/informative) と決まっています。3GPPのドキュメントは仕様書に限らずこちらでテンプレートが公開されています。

仕様書の読む順番

仕様書は好きに読んだらいいと思います。
しかし、本記事のタイトルは3GPP仕様書リーディングガイドですし、自分が読むときの順番くらいは紹介しておきます。
最初に仕様書を開いたら先ずScopeを確認します。
仕様書を開く時点で自分の知りたいこと、目的があるはずなので、それに照らし合わせて読むに値するか評価するわけです。

これはTS 23.501のScopeですが、この仕様書は5GSのステージ2の仕様書であり、関連する仕様書としてTS 23.502やTS 23.503などがあることがわかります。
読むに値しそうと判断した場合は、Contents(目次)を流し読みします。ここで仕様書の構造とともに、自分の知りたいことがどのあたりに書いてありそうかを判断します。キーワードを入れて検索してもよいですが、仕様書の構造として何章に何が書いてあるなど大雑把に知っておくと、後々の検索の精度が上がります。
読むに値しないと判断した場合でも、ScopeやOverviewにある参照先が次に開くべき仕様書の手がかりになります。


これはTS 29.502(SMFが提供するSession Managementサービスの仕様書)のScopeです。全体像がわからない段階でSMFの機能概要を調べようとして誤ってこの仕様書を開いてしまい、自分の知りたいことが書いて無いことに気づいたとします。その場合でも、対応するステージ2の仕様書の記載があるため、次にTS 23.501かTS 23.502を開けばよいとわかります。
Scopeと目次を読んで全体像を把握したら、次は4章の頭から読むか、キーワードを検索して知りたいところをピンポイントで読みます。

仕様の強さ

仕様書の本文の仕様には強さとも言える種類があります。
TR 21.801 Annex Eにまとめられています。
簡潔にまとめると以下になります。

仕様の種類 動詞の活用形/助動詞 説明
要件(Requirement) shall 厳格に規定通りに動作しなければならいことを示す
推奨(Recommendation) should 複数の選択肢がある時の推奨動作を示す
許可(Permission) may 他の規定に違反しない限り許可される動作を示す
可能性と能力(Possibility and capability) can 物質的、物理的、因果的なものも含む可能性と能力を示す
必然(Inevitability) will 仕様書外の仕様書の規定によって期待される動作を示す
事実(Fact) be 事実を示す

仕様書を最初に読む際には、先ずは必須の機能に相当する要件(Requirement)と推奨(Recommendation) から理解していくのをおすすめします。
許可(Permission)で規定される仕様はオプションの機能に相当するため、機能の取捨選択をする際には重要になってきます。そのため、機能を使う側(オペレータ)と作る側(ベンダ)で以下のように捉え方が異なるかもしれません。

  • 使う側(オペレータ):この機能はオプションだから自社のサービス要件と照らし合わせて、必要かどうか判断しよう。
  • 作る側(ベンダ):この機能はオプションだから急いで実装する必要はない。使う側からの要望があったら実装しよう。

Annexについて

以下はTS 23.501 (Rel-17)の目次のAnnex部の抜粋です。
AnnexにはAnnex (normative)とAnnex (informative)の2種類あることが見て取れます。

両者の違いであるnormativeとinformativeとは何でしょうか?
TR 21.801では、normative elementとinformative elementを次のように定義しています。

  • normative element(規範的要素):TS(技術仕様書)への準拠を主張するために必要な規定を示した要素。
  • informative element(情報提供要素):TS(技術仕様書)またはTR(技術レポート)の理解または使用を助けるための追加情報を提供する要素。

この定義に基づきAnnex (normative)とAnnex (informative)には以下の内容が記述されます。

  • Annex (normative):規定そのものであるが、編集上本文から取り出して記述するもの。
  • Annex (informative):本文及び付属資料に関連する事柄を補足する参考資料。

ポイントは、Annex (normative)は仕様そのもので、Annex (informative)はあくまで参考資料であるということです。
Annex (informative)の内容を仕様だと思い込んでしまう方もいますが、誤解です。参考資料を引用して「3GPP仕様書にこうかいてあるから、従わなければならない」と主張すると恥ずかしいことになるので、読者の方は気をつけて頂ければと思います。
また、ある標準仕様に「準拠した」または「適合した(conformance)」製品ということは、Normativeな記述の内容に合致した動作、機能をすることを意味し、必ずしもInformativeな記述に従っていることを意味しないので、この点も注意いただければと思います。

なお、参考までにITU-Tと国内標準であるTTCにおいて何が対応するか紹介しておきます。

3GPP ITU-T TTC
Annex (normative) Annex 付属資料
Annex (informative) Appendix 付録

ステージ3の仕様書

次にステージ3の仕様書を見ていきましょう。
5GSでは大きく、非SBI(Service Based Interface)の仕様書とSBIの仕様書とに分けられます。

以下では、非SBIとSBIのそれぞれの仕様書を紹介します。

非SBIの仕様書

以下は上の図でSBIではないインタフェースで用いられているプロトコルの仕様書です。なお、EPCで使われていたGTPv2-CはSBIに置き換わったものの、4Gとのインタワークにおいて依然重要なプロトコルであるため押さえておきましょう。
TS 24.501 Non-Access-Stratum (NAS) protocol for 5G System (5GS); Stage 3
TS 29.274 3GPP Evolved Packet System (EPS); Evolved General Packet Radio Service (GPRS) Tunnelling Protocol for Control plane (GTPv2-C); Stage 3
TS 29.281 General Packet Radio System (GPRS) Tunnelling Protocol User Plane (GTPv1-U)
TS 29.244 Interface between the Control Plane and the User Plane nodes
TS 38.410 NG-RAN; NG general aspects and principles

SBIの仕様書

TS 29.500ではSBIでのプロトコルと機能について、TS 29.501ではSBIのAPIについての原則とガイドラインについて規定しています。
TS 29.500 5G System; Technical Realization of Service Based Architecture; Stage 3
TS 29.501 5G System; Principles and Guidelines for Services Definition; Stage 3

以下に各NFから提供されるSBIのAPIの仕様書をまとめてみました。
(リリース15の仕様書をもとに作成したので、今はより多くのAPIがあります。)

AMF API

コンシューマー サービス サービスオペレーション 3GPP仕様書
AMF Namf_Communication UEContextTransfer
RegistrationStatusUpdate
CreateUEContext
ReleaseUEContext
N2InfoNotify
NonUeN2MessageTransfer
TS 29.518
AMF
PCF
Namf_Communication N1MessageNotify TS 29.518
PCF Namf_Communication N1N2MessageSubscribe
N1N2MessageUnSubscribe
TS 29.518
AMF
SMF
PCF
SMSF
Namf_Communication N1N2MessageTransfer TS 29.518
SMF
PCF
NEF
UDM
Namf_Communication AMFStatusChangeSubscribe
AMFStatusChangeUnSubscribe
AMFStatusChangeNotify
TS 29.518
SMF Namf_Communication EBIAssignment TS 29.518
SMF
SMSF
Namf_Communication N1N2TransferFailureNotification TS 29.518
SMF
UDM
Namf_EventExposure Notify
Subscribe
Unsubscribe
TS 29.518
UDM Namf_Location ProvidePositioningInfo
EventNotify
ProvideLocationInfo
TS 29.518

SMF API

コンシューマー サービス サービスオペレーション 3GPP仕様書
AMF Nsmf_PDUSession SmContextCreateData
SmContextUpdateData
SmContextUpdatedData
SmContextReleaseData
SmContextRetrieveData
SmContextStatusNotification
TS 29.502
PCF
NEF
Nsmf_EventExposure Notify
Subscribe
Unsubscribe
TS 29.508

PCF API

コンシューマー サービス サービスオペレーション 3GPP仕様書
AMF Npcf_AMPolicyControl Create
Update
Delete
TS 29.507
PCF Npcf_AMPolicyControl UpdateNotify(Roaming)
TS 29.507
PCF Npcf_SMPolicyControl UpdateNotify(Roaming)
TS 29.512
SMF Npcf_SMPolicyControl Create
Update
Delete
TS 29.512
AMF Npcf_UEPolicyControl Create
Update
UpdateNotify
Delete
TS 29.525
NEF/AF Npcf_PolicyAuthorization Create
Update
Delete
Notify
Subscribe
Unsubscribe
TS 29.514

UDM API

コンシューマー サービス サービスオペレーション 3GPP仕様書
AMF
SMF
NEF
Nudm_SubscriberDataManagement(SDM) Get
Subscribe
Unsubscribe
Notification
Info
ModifySubscription
TS 29.503
AMF
SMF
NEF
Nudm_UEContextManagement(UECM) Registration
DeregistrationNotification
Deregistration
Get
Update
P-CSCF-RestorationNotification
TS 29.503
AUSF Nudm_UEAuthentication Get
ResultConfirmationInform
TS 29.503
NEF Nudm_ParameterProvision Update TS 29.503
NEF Nudm_NIDDAuthorization TS 29.503
NEF Nudm_EventExposure Subscribe
Unsubscribe
Notify
ModifySubscription
TS 29.503

NSSF API

コンシューマー サービス サービスオペレーション 3GPP仕様書
AMF Nnssf_NSSelection Get TS 29.531
AMF
PCF
Nnssf_NSSAIAvailability Update
Subscribe
Unsubscribe
Notify
Delete
TS 29.531

NRF API

コンシューマー サービス サービスオペレーション 3GPP仕様書
5GC NFs Nnrf_NFManagement NFRegister
NFUpdate
NFDeregister
NFStatusSubscribe
NFStatusNotify
NFStatusUnSubscribe
TS 29.510
5GC NFs Nnrf_NFDiscovery Request TS 29.510
5GC NFs Nnrf_AccessToken Get TS 29.510

UDR API

コンシューマー サービス サービスオペレーション 3GPP仕様書
UDM
PCF
NEF
Nudr_DataRepository Query
Create
Delete
Update
Subscribe
Unsubscribe
Notify
TS 29.504
TS 29.505
TS 29.519

AUSF API

コンシューマー サービス サービスオペレーション 3GPP仕様書
AMF Nausf_UEAuthentication Authenticate TS 29.509
AMF Nausf_SoRProtection Protect TS 29.509
AMF Nausf_UPUProtection Protect TS 29.509

CHF API

コンシューマー サービス サービスオペレーション 3GPP仕様書
SMF Nchf_ConvergedCharging Create
Update
Release
Notify
TS 32.291
PCF Nchf_SpendingLimitControl Subscribe
Unsubscribe
Notify
TS 29.594

動作仕様からプロトコル仕様を読み解く

ここまでで各プロトコルやSBIで提供されているサービスについてどの仕様書をみたらよいかがわかりました。
次は、動作仕様からプロトコル仕様を特定する実例を見てみます。
以下の図はTS 23.502で規定される登録手順です。UEが電源を入れて5Gコアに一番最初に行う手順が登録手順です。

先ず、UEからRANを経由してAMFに送られているRegistration RequestはNASのメッセージなので、TS 24.501を開きます。そこでregistrationで検索していくと5.5.1節でこの登録手順の詳細が書かれていることがわかるので、そこを読んでいきます。(これは読むべき仕様書と該当箇所の見つけ方のガイドなので、中身の解説はないです)

次に、コールフローを見ていくとNew AMFからOld AMFにNamf_Communication_UEContextTransferというメッセージを送信しているのがわかります。これはAMFが公開しているCommunicationというサービスの中のUEContextTransferというAPIを叩いているという意味です。
これを上のAMF APIの表からTS 29.518で規定されていることがわかります。

このような調子で仕様書と目的の規定箇所を特定して読んでいきます。
end to endで理解するのにはなかなか骨の折れる作業なのです…

仕様書だけで5GSの動作の全体像を把握するのは非常に困難ですので、もし入手可能であればコールログを入手してWireshark等で解析すると同時に仕様書を読むと理解が一気に深まると思います。
入手が難しい方は、私のgithubのリポジトリにfree5GCを動作させて取得したpcapをおいてありますのでご活用下さい。

その他の仕様書

5GSの仕様書は本当に多岐に渡ります。
私はもともとSA2やCT1を専門に3GPPに参加していたので、アーキテクチャやプロトコル仕様は少しわかるのですが、それ以外にも、SA3のセキュリティやSA4のコーデック、SA5のネットワーク管理など、いろいろなワーキンググループで多様な仕様書が作られています。
5GSでは、ネットワークスライシングがEPSになかった目玉機能の一つと言われることが多いため、最後に少しだけ紹介しておきます。
TS 28.530 Management and orchestration; Concepts, use cases and requirements
このTS 28.530ではネットワークスライシングに必要なネットワーク管理とオーケストレーションのコンセプト、ユースケース、要件を規定してるものです。
TS 28.530を中心として、以下のような仕様書でより詳細な仕様が規定されています。ネットワークスライシングに興味のある方は調べてみてはいかがでしょうか。
TS 28.531 Management and orchestration; Provisioning
TS 28.532 Management and orchestration; Generic management services
TS 28.533 Management and orchestration; Architecture framework

おわりに 自分のための仕様書の地図を持とう

今回紹介しただけでも数十の仕様書が登場しました。
仕様を調査する必要があるとき、馴染みのある仕様書でなければ番号を思い出すのは困難です。
その時のために、自分のための仕様書の地図を持つことをおすすめします。
自分にとって重要な仕様書の番号をアーキテクチャ図に書き込んで印刷しておいたり、単に付箋に箇条書きして貼っておくだけでも役に立ちます。
私の場合は、5Gだけでなく2G~4Gの仕様書を参照することがありますので、3GPP全体のアーキテクチャを包含する仕様書の地図を作っています。twitterで公開していますので、よかったらご確認ください(コメントも大歓迎です)。

それでは3GPP仕様書という大海原を楽しんでいただければと思います!

Discussion