GPRS核心网-GTP-C协议解析

时间:2024-11-14 09:24:46

GPRS隧道协议(GTP)是3GPP标准定义的隧道协议,用于在3G /4G/5G网络中承载通用分组无线服务(GPRS)。

GTP用于在服务网关(S-GW)和分组数据网络网关(P-GW)以及S-GW和移动性管理实体(MME)之间为用户设备建立GTP隧道。如图-EPC架构:

在这里插入图片描述

GTP包含哪些单独的协议?

GTP包括在UDP / IP上传输的控制平面(GTP-C),用户平面(GTP-U)和计费(从GTP-C派生的GTP)流量。

GTP-C-在核心GPRS网络中的S-GW和P-GW之间执行信令,以激活和停用用户会话,调整服务质量参数或更新从另一个S-GW到达的漫游用户的会话。GTP-C支持以IPv4格式传输控制数据包。它用于各种EPC(演进的分组核心)信令接口,例如S5,S8和S11。还承载各种类型的控制平面信令消息。GTP-C端口号是2123。

GTP-U-在核心GPRS网络内以及在无线访问网络(RAN)和核心网络之间传输用户数据。GTP-U支持IPv4和IPv6用户数据,但传输是IPv4。它跨多个信令接口(例如S1,S5和S8)封装和路由用户平面流量。GTP-U消息是用户平面消息或信令消息。GTP-U端口号是2152。

什么是MME

MME是移动管理实体,是一个用于信令控制的网元,主要做移动的管理,此外还需要做会话相关的控制处理。

MME主要的功能是:

1、NAS信令处理
2、 3GPP内不同节点之间的移动性管理
3、PGW和SGW选择
4、漫游控制

什么是PGW

PGW是PDN网关,所谓PDN就是公共数据网,可以理解成核心网后端的网络系统,PDN负责用户数据包与其他网络的处理。

PGW功能描述:

1、基于用户包过滤
2、IP地址分配
3、上下行传输层数据包标记
4、上下行的承载绑定、校验。

什么是SGW

SGW是服务网关,它是数据面的网元,所谓数据面可以理解成数据传输的通道,负责本地网络用户数据的处理部分。

SGW功能描述

1、(基站)eNodeB之间的切换的本地
2、数据包路由和转发
3、上下行传输层数据包标记
4、用户和QCI力度的统计,主要用于运营商间计费
5、基于用户、PDN和QCI力度的上下行的计费。

EPC网元之间的接口

上面已经描述了MME、SGW、PGW。接下来介绍EPC协议围绕这三个网元之间的接口讲解。分别是eNodeB和MME之间的(S1-MME),eNodeB和SGW之间的(S1-U),MME和SGW之间的(S11),SGW和PGW之间的协议(S5)

在这里插入图片描述
S1-MME接口承载的协议是S1-AP/SCTP/IP,S1-U承载的协议是GTPv1-U,S5接口承载的协议是GTPv2-C。

GTPv2消息格式

各个版本的差异主要是协议功能,即传输的内容的差异,新版本一般来说比旧版本承载更多的信息。

控制平面GTP使用可变长度的标头。 控制平面GTP报头长度应为4个八位位组的倍数。
下面是GTPv2-C标头的格式。

在这里插入图片描述

Create Session Request
在这里插入图片描述

Create Session Response

在这里插入图片描述

对协议分析还原而言,知道如何识别,再知道如何解析协议格式,那么,就可以去实现解析了。

GTP消息类型

作为移动网络的协议,GTP当然是由3GPP组织来定义的,GTP v2参考3GPP TS 29.274,GTP v1参考3GPP TS 29.060。

int main(int argc, char* argv[])
{
    char errbuf[1024];
    pcap_t *desc = 0;

    char *filename = argv[1];
    if (argc != 2)
    {
        printf("usage: ./dissect_dns [pcap file]\n");
        return -1;
    }

    return 0;
}

编译运行:

在这里插入图片描述

总结

在LTE中,GTP(GPRS隧道协议)隧道用于通过基于GTP的接口进行通信的两个节点之间,以将流量分离为不同的通信流。

通过TEID(隧道端点标识符),IP地址和UDP端口号在每个节点中标识GTP隧道。

GTP隧道的接收端在本地分配发送方必须使用的TEID值。GTPv2包括一个更新的控制平面,该控制平面使控制消息能够在MME,S-GW,PDN GW等之间传递。最后,对于具体协议的实现,请参考3gpp相关的资料。

参考:
TS 29.281
TS 29.060

欢迎关注微信公众号【程序猿编码】,需要GTP-C源码和报文的添加本人微信号(17865354792)