目錄
GTP
GTP(GPRS Tunnelling Protocol,GPRS 隧道協議)是一組基於 IP 的通信協議,用於 GSM、UMTS 和 EPS 網絡中承載 GPRS(General Packet Radio Service,通用分組無線業務)。
在 EPS UP 中使用 GTP 的一個優勢是:GTP 固有的可鑒別隧道機制,以及 GTP 可以為 UE 提供的移動性能力。對於前者,一個 UE 的業務承載由 GTP TEID 和 IP 地址來進行鑒別;而對於后者,UE 通過 GTP 能持續的通過同一個 SGW 作為本地移動性的錨點,進而連接到 PDN。
GTP 包含了三種協議:
- GTP-C:在 CP 傳輸核心網的信令數據
- GTP-U:在 UP 傳輸 UE 的業務數據
- GTP’:傳送計費數據
GTP 協議目前有 3 個版本:
- Version 2:使用於 EPC 核心網;
- Version 1:使用於 GSM 和 UMTS 網絡,以及應用於 EPS 網絡中以傳輸用戶面數據;
- Version 0:是早期版本,被 1999 年標准化的 version 1 替代。
注意:不存在 GTPv2-U 協議。在 EPS 中的 GTP-U 仍使用 GTPv1-U。
GTP-C 協議(GTP 控制面)
GTP-C 協議是 GTP 的控制面部分,使用 UDP 端口 2123。在 EPS 中,GTPv2-C 協議負責在 S1、S5/S8 等接口上創建、維持和刪除 GTP-U 隧道。它被用於控制面路徑管理(Control Plane Path Management)、隧道管理(Tunnel Management)和移動性管理(Mobility Management)。它也控制轉發位置變更消息、SRNS 上下文、並在 EPS 網間切換中創建轉發隧道。
GTP-U 協議(GTP 用戶面)
GTP-U 協議是 GTP 的用戶面部分,使用 UDP 端口 2152。是一個的基於 IP 的隧道協議,它允許在各個 GTP-U Protocol Entity(協議實體)之間建立多個隧道。每個隧道由一個 GTP Header 中的 TEID(隧道端點標識符)標識,TEID 應當是一個動態分配的隨機數。在 EPS 中,使用 GTPv1-U 協議在 S1、S5/S8 等接口上交換用戶的業務數據。UE 所收發的 IP 數據包被打包在 GTPv1-U 的包中,並在 UP 的各個網元節點之間的隧道中傳輸。
GTP’ 協議(計費傳輸)
GTP’ 協議使用 TCP/UDP 端口 3386,被用於向 CGF(Charging Gateway Function,計費網關功能)傳輸計費數據。
GTPv2 Header

- 版本號: 標記 GTP 的版本,對於 GTPv2 來說,這個值始終是 “2”。
- 捎帶消息標志位(Piggybacking flag):如果被置為 1,則在這條消息后面會有另外一條帶有完整消息頭的 GTP 消息。協議里具體規定了每種消息可以攜帶的消息類型。
- TEID 標志位(TEID flag):如果被置為 1,則 TEID 字段存在。其實只有 Echo Request 和 Echo Response 消息不攜帶 TEID 字段。
- 消息類型(Message Type):指示 GTP 消息的類型。關於消息類型的定義,請參考 3GPP TS 29.060 第 7.1 節。
- 總長度(Total length):指包括消息頭和消息體的消息總長度,不包括消息頭前 4 個字節的必選字段。
- TEID(Tunnel endpoint identifier,隧道端點標識):用於區分 GTP 隧道中的不同連接。
- 序列號(Sequence number):可選字段,當 E、S 或 PN 位中的任意一個取值為 1 時,這個字段存在。僅當 S 位為 1 時,這個字段必須被解析。
