代码改变世界

移动通信网络中的 GTP 协议

2020-01-06 23:33  云物互联  阅读(6909)  评论(0编辑  收藏  举报

目录

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