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

article/2025/11/7 16:54:08

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)


http://chatgpt.dhexx.cn/article/FRMnutdk.shtml

相关文章

网络协议 终章 - GTP 协议:复杂的移动网络

前面都是讲电脑上网的情景,今天我们就来认识下使用最多的移动网络上网场景。 移动网络的发展历程 你一定知道手机上网有 2G、3G、4G 的说法,究竟这都是什么意思呢?有一个通俗的说法就是:用 2G 看 txt,用 3G 看 jpg&…

gtp传输java_一种GTP数据包传输方法、相关装置及存储介质与流程

本申请实施例涉及通信领域,尤其涉及一种GTP数据包传输方法、相关装置及存储介质。 背景技术: 通用分组无线服务隧道协议(General Packet Radio Service Tunnelling Protocol,GTP)是一种用于传输分组数据的通信协议。目前,己使用的GTP协议可被分为通用分组无线服务(General …

GTP协议

GTP协议 (2010-08-27 17:20:54) 转载▼ 标签: 杂谈 分类: 计算机网络 摘要:本文分析GPRS的GSN之间的GTP协议,阐述GTP协议的含义及用法。 关键词:GPRS GTP 协议 一、 引言 在GPRS系统的GSN(GPRS Support …

GTP协议格式分析

点击上方↑↑↑蓝字 [ 协议分析与还原 ] 关注我们 “ 分析GTP协议。” 本文对比较枯燥的协议资料进行学习,有需要可继续阅读,找到自己关注的知识点,暂时无需要可直接拉到文末表示阅读结束,让微信记下热爱学习的你的痕迹。 如果说T…

关于GTPv1协议解析

概述: ***(简单说一下,不重点讲述啦) GPRS 隧道协议 (GTP) 是一种隧道协议,用于 GPRS、UMTS、LTE 和 5G 网络。它分为两个独立的协议:GTP-C 和 GTP-U。GTP-C用于GPRS核心网络中,用于不同网络节…

GTP-U协议总结

1、​参考资料 3gpp TS 29.060 V17.1.0-GPRS Tunnelling Protocol (GTP) TS 29.281 V17.1.0-GPRS Tunnelling Protocol User Plane (GTPv1-U) 2、GTP协议 GTP(GPRS隧道协议(GPRSTunnelingProtocol)),可以分解成三种独立的协议&#xff0…

【5G核心网】 GTP协议

GTP 可以提供移动性的功能。 使用 GTP,网络的终端能够在网络中移动位置,各个端点集之间可以建立多个隧道,从而根据业务不同可以提供不同的 Qos,可以隐藏 IP,安全性更高。 1. 定义概念 GTP-U Message: GTP-U&#xff…

GTP协议的分析

一、 引言 在GPRS系统的GSN(GPRS Support Node,包括SGSN和GGSN)之间采用GTP(GPRS Tunnel Protocol)协议,GTP在整个GPRS协议栈中起着举足轻重的作用,GTP协议承载在TCP或UDP协议之上,分…

JS JQuery添加、替换、删除元素class属性

1、先声明一个div和两个class样式&#xff0c;用来测试&#xff1a; <html><head><meta charset"utf-8"><title></title><script src"https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script><s…

jquery动态添加和删除class属性

在用jquery时&#xff0c;遇到一个问题&#xff0c;就是如何动态得添加和删除class的属性&#xff0c;下面是我的解决代码&#xff1a; <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitio…

用jQuery的.addClass()方法给元素加class

Target Elements by Class Using jQuery 你看到我们是怎么给所有的按钮做弹回效果了吗&#xff1f;我们用 $("button")来选中按钮&#xff0c;然后用.addClass("animated bounce")给按钮加CSS class。 你只需要用jQuery的.addClass()方法&#xff0c;就可…

js 关于动态添加class样式的学习

如果&#xff0c;我这里有一个需求。如下的页面代码 <body> <input type"button" value"红" id"btn1"/> <p id"p1"> 2016年圣诞前的一个星期天下午&#xff0c;我推开窗&#xff0c;加州明媚的阳光洒在街道上&…

jQuery通过id属性来获取元素,通过.addClass()方法来添加class.

Target Elements by ID Using jQuery 你还可以根据id属性来获取元素 首先用$("#target3")来选择id为target3的button元素。 注意&#xff0c;就像CSS一样&#xff0c;在id的名字前加上 #。 然后使用jQuery的.addClass()方法来添加 animated和fadeOutclass. 例如…

js给元素添加class样式

图中&#xff0c;左侧和右侧都需要添加不同的class类样式 结构&#xff1a; <div class"left"><div class"img_bg leftOne" click"clickLeft(企业文化)">企业文化</div><div class"img_bg leftTwo" click"…

jq获取和设置标签的css样式、jq给标签增加或移除class属性

1、jQuery获取和设置标签的css样式 jQuery既可以直接获取标签的css样式&#xff0c;也可以设置样式&#xff0c;包括行内、内部、外部样式&#xff1b;思路&#xff1a;先要选取这个标签&#xff0c;然后再获取或者设置样式&#xff1b;获取css属性&#xff1a; console.log(…

JavaScript给元素添加class属性

注意&#xff1a;element.classList.remove()、element.classList.add() — ie9及以下不兼容 // 移除div的class属性 obj.classList.remove(active);// 添加class属性值 // 方式一 obj.className new active;// 方式二 // obj.className new active;// 方式三&#xff1a;属…

jq中的addClass()方法与样式冲突

添加类样式方法 addClass()&#xff1a;向被选元素添加指定的类名 注意&#xff1a;该方法仅仅只是在原有基础上添加属性&#xff0c;不会覆盖已存在的 class 属性 提示&#xff1a;如需添加多个类&#xff0c;使用空格分隔类名 一、添加一个class属性 <style>.div {wid…

Dubbo原理简单分析

1.Dubbo原理分析 alibaba有好几个分布式框架,主要有:进行远程调用(类似于RMI的这种远程调用)的(dubbo、hsf),jms消息服务(napoli、notify),KV数据库(tair)等。 这个框架/工具/产品在实现的时候,都考虑到了容灾,扩展,负载均衡,于是出现一个配置中心(ConfigServer)的东西…

dubbo解析-介绍服务端和客户端启动和服务调用步骤

本文基于dubbo 2.7.5版本代码 前面的文章介绍了很多dubbo的各个组件&#xff0c;本文将对通过介绍启动和服务调用过程梳理一下这些组件&#xff0c;也让大家对dubbo的全局有一个了解。 文章目录 一、服务端启动二、客户端启动三、服务调用 一、服务端启动 1、spring启动调用后…

面试杀手锏之Dubbo服务调用过程

点赞再看&#xff0c;养成习惯&#xff0c;微信搜一搜【三太子敖丙】关注这个喜欢写情怀的程序员。 本文 GitHub https://github.com/JavaFamily 已收录&#xff0c;有一线大厂面试完整考点、资料以及我的系列文章。 前言 前面我已经带着大家过了服务暴露和服务引入两个流程了…