GPRS トンネリング プロトコル( GTP ) は、 GSM、UMTS、LTE、および5G NR無線ネットワーク内で汎用パケット無線サービス(GPRS)を伝送するために使用されるIPベースの通信プロトコルのグループです。3GPP アーキテクチャでは、GTP およびプロキシ モバイル IPv6ベースのインターフェイスがさまざまなインターフェイス ポイントで指定されています。
GTP は、GTP-C、GTP-U、 GTP'という個別のプロトコルに分解できます。
GTP-C は、GPRS コア ネットワーク内で、ゲートウェイ GPRS サポート ノード(GGSN) とサービング GPRS サポート ノード(SGSN)間のシグナリングに使用されます。これにより、SGSN はユーザーに代わってセッションをアクティブ化したり ( PDP コンテキストのアクティブ化)、同じセッションを非アクティブ化したり、サービス品質パラメータを調整したり、別の SGSN から到着したばかりの加入者のセッションを更新したりすることができます。
GTP-U は、GPRS コア ネットワーク内および無線アクセス ネットワークとコア ネットワーク間でユーザー データを伝送するために使用されます。伝送されるユーザー データは、 IPv4、IPv6、またはPPP形式のパケットになります。
GTP' ( GTP プライム) は、GTP-C および GTP-U と同じメッセージ構造を使用しますが、独立した機能を備えています。GSM または UMTS ネットワークの課金データ機能 (CDF) から課金ゲートウェイ機能 (CGF) に課金データを運ぶために使用できます。ほとんどの場合、これは、GGSN などの多数の個別のネットワーク要素から、課金データをネットワーク オペレータの課金センターにもっと便利に配信する集中型コンピュータへの転送を意味します。
3GPP ネットワーク内の RNC、SGSN、GGSN、CGF によって、さまざまな GTP バリアントが実装されます。GPRS モバイル ステーション (MS) は、GTP を意識することなく SGSN に接続されます。
GTP は、 UDPまたはTCPで使用できます。バージョン 0 の X.25トンネリングを除き、UDP が推奨または必須です。GTPバージョン 1 は、UDP でのみ使用されます。
一般的な特徴
GTP のすべてのバリアントには、共通する特定の機能があります。メッセージの構造は同じで、UDP/TCP ヘッダーの後に GTP ヘッダーが続きます。
ヘッダ
GTP バージョン 1
GTPv1ヘッダーには以下のフィールドが含まれている: [1]
- バージョン
- これは 3 ビットのフィールドです。GTPv1 の場合、この値は 1 になります。
- プロトコルタイプ (PT)
- GTP (値 1) と GTP' (値 0) を区別する 1 ビットの値。
- 予約済み
- 1 ビットの予約フィールド (0 である必要があります)。
- 拡張ヘッダーフラグ (E)
- 拡張ヘッダーのオプション フィールドがあるかどうかを示す 1 ビットの値。
- シーケンス番号フラグ(S)
- シーケンス番号のオプション フィールドがあるかどうかを示す 1 ビットの値。
- N-PDU番号フラグ(PN)
- N-PDU 番号のオプション フィールドがあるかどうかを示す 1 ビットの値。
- メッセージタイプ
- GTPメッセージの種類を示す8ビットのフィールド。3GPP TS 29.060セクション7.1でさまざまなタイプのメッセージが定義されています。
- メッセージの長さ
- ペイロードの長さをバイト単位で示す 16 ビットのフィールド (必須の 8 バイト GTP ヘッダーに続くパケットの残りの部分)。オプションのフィールドが含まれます。
- トンネルエンドポイント識別子 (TEID)
- 同じ GTP トンネル内の異なる接続を多重化するために使用される 32 ビット (4 オクテット) フィールド。
- シーケンス番号
- (オプションの) 16 ビット フィールド。このフィールドは、E、S、または PN ビットのいずれかがオンの場合に存在します。このフィールドは、S ビットがオンの場合にのみ解釈する必要があります。
- N-PDU番号
- (オプション) 8 ビット フィールド。このフィールドは、E、S、または PN ビットのいずれかがオンの場合に存在します。このフィールドは、PN ビットがオンの場合のみ解釈する必要があります。
- 次の拡張ヘッダータイプ
- (オプション) 8 ビット フィールド。このフィールドは、E、S、または PN ビットのいずれかがオンの場合に存在します。このフィールドは、E ビットがオンの場合のみ解釈する必要があります。
次の拡張ヘッダーは次のとおりです。
- 延長長さ
- 8 ビットのフィールド。このフィールドは、長さ、内容、および次の拡張ヘッダー フィールドを含むこの拡張ヘッダーの長さを 4 オクテット単位で指定します。したがって、拡張の長さは常に 4 の倍数である必要があります。
- コンテンツ
- 拡張ヘッダーの内容。
- 次の拡張ヘッダー
- 8 ビットのフィールド。次の拡張の種類を示します。次の拡張が存在しない場合は 0 になります。これにより、複数の次の拡張ヘッダーを連鎖させることができます。
GTP バージョン 2
これは進化型GTPまたはeGTPとも呼ばれます。GTPv2-Cヘッダーには次のフィールドが含まれています: [2]
GTPv2-U プロトコルは存在せず、LTE の GTP-U も GTPv1-U を使用します。
- バージョン
- これは 3 ビットのフィールドです。GTPv2 の場合、この値は 2 になります。
- ピギーバックフラグ
- このビットが 1 に設定されている場合、独自のヘッダーを持つ別の GTP-C メッセージが現在のメッセージの最後に存在します。最上位の GTP-C メッセージに応じて、どのタイプのメッセージをピギーバックできるかに制限があります。
- TEIDフラグ
- このビットが 1 に設定されている場合、TEID フィールドはメッセージ長とシーケンス番号の間に存在します。エコーとエコー応答を除くすべてのメッセージには TEID が存在する必要があります。
- メッセージの長さ
- このフィールドは、GTP-C ヘッダーの必須部分 (最初の 4 オクテット) を除いたメッセージの長さをオクテット単位で示します。TEID (存在する場合) とシーケンス番号は長さのカウントに含まれます。
接続メカニズム
共通のメッセージ構造とは別に、1 つの GSN から別の GSN への接続を検証するための共通のメカニズムもあります。これには 2 つのメッセージが使用されます。
- エコー要求
- エコー応答
GSN は、アクティブな接続を持つ他のすべての GSN に、60 秒ごとにエコー要求を送信できます。相手側が応答しない場合は、ダウンしているものとして扱われ、その相手側へのアクティブな接続は削除されます。
前述の2つのメッセージ以外に、すべてのGTPバリアントに共通するメッセージはありません[3]。つまり、ほとんどの場合、それらは実質的に3つの完全に独立したプロトコルを形成します。
GTP-C - GTP制御
GTP-C プロトコルは、GTP 標準の制御セクションです。加入者がPDP コンテキストを要求すると、SGSN は加入者の要求の詳細を示すPDP コンテキスト作成要求GTP-C メッセージを GGSN に送信します。GGSN は、PDP コンテキスト作成応答GTP-C メッセージで応答します。このメッセージは、実際にアクティブ化された PDP コンテキストの詳細を示すか、失敗を示してその失敗の理由を示します。これは、ポート 2123 上の UDP メッセージです。
eGTP -C (または、GTPv2-C) プロトコルは、複数の Sx インターフェイス上のトンネルの作成、維持、削除を担当します。これは、コントロール プレーン パス管理、トンネル管理、およびモビリティ管理に使用されます。また、再配置メッセージの転送、SRNS コンテキスト、および LTE 間ハンドオーバー中の転送トンネルの作成も制御します。
GTP-U - GTP ユーザー データ トンネリング
GTP-U は、実際には、エンドポイントの各セット間で多数のトンネルを許可する、比較的単純な IP ベースのトンネリング プロトコルです。UMTS で使用する場合、各加入者は、アクティブな PDP コンテキストごとに 1 つずつ、1 つ以上のトンネルを持つことになります。また、サービス品質要件が異なる特定の接続用に個別のトンネルを持つこともできます。
個別のトンネルは、GTP-U メッセージ内の TEID (トンネル エンドポイント識別子) によって識別されます。これは、動的に割り当てられた乱数である必要があります。この乱数が暗号化品質であれば、特定の攻撃に対するセキュリティ対策となります。ただし、3GPP 標準の要件では、ユーザー データを含むすべての GTP トラフィックは、インターネットに直接接続されずに、安全なプライベート ネットワーク内で送信される必要があります。これは、UDP ポート 2152 で発生します。
GTPv1 -Uプロトコルは、Sx インターフェイスを介した GTP トンネルを介してユーザー データを交換するために使用されます。UE (ユーザー エンドポイント) の IP パケットは GTPv1-U パケットにカプセル化され、P-GW と eNodeB 間でトンネル化され、S1-U および S5/S8 インターフェイスを介して UE に送信されます。
GTP' - 充電転送
GTPプロトコルは、課金データを課金ゲートウェイ機能に転送するために使用されます。GTP は TCP/UDP ポート 3386 を使用します。
GPRSコアネットワーク内
GTP は、GPRS コア ネットワークで使用される主要なプロトコルです。このプロトコルにより、GSM または UMTS ネットワークのエンド ユーザーは、GGSN の 1 つの場所からインターネットに接続しているかのように、場所を移動しながらインターネットに接続し続けることができます。これは、加入者の現在の SGSN から加入者のセッションを処理している GGSN に加入者のデータを転送することによって実現されます。GPRS コア ネットワークでは、3 つの形式の GTP が使用されます。
- 各 PDP コンテキストごとに分離されたトンネルでユーザー データを転送するための GTP-U
- 制御上の理由による GTP-C:
- PDPコンテキストの設定と削除
- GSN到達可能性の検証
- 更新。たとえば、加入者が 1 つの SGSN から別の SGSN に移動する場合など。
- GSN から課金機能への課金データの転送用の GTP'。
GGSN と SGSN (総称して GSN) は、UDP ポート 2123 で GTP-C メッセージをリッスンし、ポート 2152 で GTP-U メッセージをリッスンします。この通信は単一のネットワーク内で行われますが、国際ローミングの場合は、おそらくGPRS ローミング交換(GRX) を介して国際的に行われる場合もあります。
課金ゲートウェイ機能(CGF) は、 TCP/UDP ポート 3386 で GSN から送信されたGTPメッセージをリッスンします。コア ネットワークは、課金情報を CGF に送信します。課金情報には、通常、PDP コンテキストのアクティブ化時間やエンド ユーザーが転送したデータの量が含まれます。ただし、1 つのネットワーク内で行われるこの通信は標準化されておらず、ベンダーや構成オプションによっては、独自のエンコーディングや完全に独自のシステムを使用する場合もあります。
IuPSインターフェースでの使用
GTP-U は GPRS コア ネットワークと RAN 間の IuPS で使用されますが、GTP-C プロトコルは使用されません。この場合、RANAPが制御プロトコルとして使用され、SGSN と無線ネットワーク コントローラ(RNC)間に GTP-U トンネルを確立します。
プロトコルスタック
GTP はUDPまたはTCPで使用できます。GTP バージョン 1 は UDP でのみ使用されます。
2018 年現在、[update]バージョン 0、1、2 の 3 つのバージョンが定義されています。バージョン 0 とバージョン 1 は構造が大きく異なります。バージョン 0 では、シグナリング プロトコル (PDP コンテキストをアクティブ化してトンネルを設定するプロトコル) が 1 つのポートでトンネリング プロトコルと組み合わされています。バージョン 1 とバージョン 2 はそれぞれ実質的に 2 つのプロトコルで、1 つは制御用(GTP-C と呼ばれる)、もう 1 つはユーザーデータ トンネリング用 (GTP-U と呼ばれる) です。GTP バージョン 2 は、GTP-C のみがバージョン 1 と異なります。これは、3GPP がバージョン 2 で EPS 用の GTP-C の機能強化を定義し、ベアラ処理を改善したためです。
GTP-U は、UMTS ネットワークで RNC から SGSN にユーザー データを転送するためにも使用されます。ただし、この場合、シグナリングは GTP-C ではなく RANAP を使用して行われます。
過去の GTP バージョン
GTP のオリジナル バージョン (バージョン 0) は、現在のバージョン (バージョン 1、2) とはかなり異なります。
- トンネルの識別はランダムではありませんでした。
- X.25 を転送するためのオプションが提供されました。
- 固定ポート番号 3386 がすべての機能に使用されました (GTPv1 のように課金だけではない)。
- UDP の代わりに TCP がトランスポート オプションとして許可されましたが、これのサポートはオプションでした。
- サービス品質などのサブスクリプション関連の分野はさらに制限されていました。
バージョン 0 の非ランダム TEID は、攻撃者がローミング パートナーのネットワークにアクセスしたり、GPRS バックボーンにパケットをリモート送信する他の方法を見つけたりした場合に、セキュリティ上の問題を引き起こします。バージョン 0 は使用されなくなり、ほぼすべてのネットワークでバージョン 1 に置き換えられています。ただし、幸いなことに、異なるポート番号を使用すると、単純な IP アクセス リストを通じてバージョン 0 を簡単にブロックできます。
GTP標準化
GTPはもともとETSI内で標準化されました(GSM標準09.60 [4])。UMTS標準の作成に伴い、これは3GPPに移され、2005年現在、[update]3GPP標準29.060として維持されています。[5] GTPは同じメッセージ形式を使用しますが、その特殊な用途は、転送する課金データの標準化された形式とともに標準32.295でカバーされています。
TS 29.060のそれ以降のバージョンでは、GTPv1/v0インターワーキング[6]が廃止され、GSNが上位バージョンをサポートしていない場合でもフォールバックは行われません。
GTPv2 (進化型パケット サービス用) は 2008 年初頭にドラフトとなり、同年 12 月にリリースされました。GTPv2 は、以前の「バージョンがサポートされていません」メカニズムを介して GTPv1 へのフォールバックを提供しますが、GTPv0 へのフォールバックは明示的にサポートしていません。
参照
注記
- ^ 3GPP TS 29.060 セクション 6
- ^ 3GPP TS 29.274 セクション 5
- ^ 3GPP TS 29.060 セクション 7
- ^ 「3GPP TS 09.60 バージョン 7.10.0 リリース 1998」(PDF) . etsi.org .
- ^ 「3GPP TS 29.060 v16.0.0」(PDF)。etsi.org 。
- ^ 「3GPP TS 29.060 v16.0.0 セクション 4.2」(PDF) . etsi.org .
参考文献
- GSM 標準 09.60、ETSI、1996 ~ 1998、この標準は GTP のオリジナル バージョン 0 をカバーしています。
- 3GPP TS 29.060 V6.9.0 (2005-06)、第 3 世代パートナーシップ プロジェクト、650 Route des Lucioles - Sophia Antipolis、Valbonne - フランス、2005 ~ 06 年。これは、GTP バージョン 1 のすべての GTP バリアントを定義する主要な標準です。
- 3GPP TS 32.295 V6.1.0 (2005-06)、第3世代パートナーシップ プロジェクト、650 Route des Lucioles - Sophia Antipolis、Valbonne - フランス、2005~06 年。この標準では、充電に GTP を使用することを規定しています。
- 3GPP TS 29.274 V8.1.0 (2009-03)、第 3 世代パートナーシップ プロジェクト、650 Route des Lucioles - Sophia Antipolis、Valbonne - FRANCE、2009 ~ 03 年。進化した GPRS の GTPv2。
外部リンク
- GTP 標準の本拠地である 3GPP の Web サイト
- GPRS トンネリング プロトコル バージョン 2 (GTPv2) または進化型 GTP (eGTP) の無料オープン ソース実装
