目录
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 时,这个字段必须被解析。