GTP-U协议总结

article/2025/11/7 16:55:13

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)),可以分解成三种独立的协议,GTP-C、GTP-U及GTP'。GTP-U用于在GPRS核心网内,无线接入网与核心网之间传送用户数据。 GTP可以用在UDP或TCP上,GTP v1仅用于UDP上,UDP的2123端口是为GTP-C登记的端口号, 2152端口是为GTP-U登记的端口号。

GTP-U协议使用的GTP头是变长度的。GTP头的最小长度是8个字节。

GTP-U消息格式:

必选字段:

  • 版本号(Ver):用于确定GTP协议的版本,转换成10进制表示。
  • 协议类型(PT):用于区分GTP(置’1’)和GTP’(置’0’)协议。
  • 扩展头标志(e):置’1’表示有下一个扩展头字段。置’0’表示没有下一个扩展头字段,或有但不必解释。
  • 序号标志(s):置’1’表示有序号字段。置’0’表示要么没有序号字段,要么有但不必做出解释。在GTP-C消息中s标志应置’1’。
  • N-PDU编号标志(Pn):置’1’表示有N-PDU编号字段。置’0’表示要么没有N-PDU编号字段,要么有但不必做出解释。这个标志仅对GTP-U有意义。所以,GTP-C不使用这个标志。
  • 消息类型:这个字段指出GTP消息的类型。
  • 长度:这个字段指出以字节为单位的净荷长度,即分组中除了GTP头的必选部分外剩余部分的长度(即除去前面的8个字节)。
  • 隧道端点标识符(TEID):这个字段清楚地标识了对端的GTP-U或GTP-C协议实体中的隧道端点。

可选字段:

  • 序号:这个字段在GTP-U中是可选的。对GTP-C控制面消息,序号用于事务标识。通过GTP-U隧道传输时,如果必须保护传输顺序,用该字段对T-PDU进行编号,且每传输一个T-PDU就增加序号值。
  • N-PDU标号:这个字段在SGSN间的路由区更新过程中和某些系统间切换过程(如2G和3G无线接入网间切换)中使用。当MS和SGSN间的通讯工作在确认模式下时,使用这个字段协调它们间的数据传输。这个字段的确切意义取决于使用场合。如GSM/GPRS到GSM/GRPS,这个字段就是SNDCP N-PDU编号。
  • 下一个扩展头类型:这个字段定义在G-PDU中紧接着这个字段的扩展头的类型。

3、GTP-U消息类型

消息类型占 1Byte,共256种。其中GTP-U用到如下7种:

Message Type value

Message

Reference

1

Echo Request

3GPP TS 29.060

2

Echo Response

3GPP TS 29.060

26

Error Indication

3GPP TS 29.281 [41]

31

Supported Extension Headers Notification

3GPP TS 29.060

253

Tunnel Status

3GPP TS 29.281 [41]

254

End Marker

3GPP TS 29.281 [41]

255

G-PDU

3GPP TS 29.281 [41]

4、GTP-U扩展头

    4.1 扩展头格式

Octets      1                                     

Extension Header Length

2 – m

Extension Header Content

m+1

Next Extension Header Type

    4.2 扩展头类型

Next Extension Header Field Value

Type of Extension Header

0000 0000

No more extension headers

0000 0001

Reserved - Control Plane only.

0000 0010

Reserved - Control Plane only.

0000 0011-0x03

Long PDCP PDU Number.

0010 0000-0x20

Service Class Indicator

0100 0000-0x40

UDP Port. Provides the UDP Source Port of the triggering message.

1000 0001-0x81

RAN Container

1000 0010-0x82

Long PDCP PDU Number.

1000 0011-0x83

Xw RAN Container

1000 0100-0x84

NR RAN Container

1000 0101-0x85

PDU Session Container.

1100 0000-0xC0

PDCP PDU Number [4]-[5].

1100 0001

Reserved - Control Plane only.

1100 0010

Reserved - Control Plane only.

    4.3扩展头详细格式说明

Type Value

Description

Format

0x40

UDP Port

Bits

Octets

8

7

6

5

4

3

2

1

1

0x01

2-3

UDP Port number

4

Next Extension Header Type (note)

0xC0

PDCP PDU Number

Bits

Octets

8

7

6

5

4

3

2

1

1

0x01

2

PDCP PDU number

3

PDCP PDU number.

4

Next Extension Header Type (Note 3)

0x03/0x82

Long PDCP PDU Number

Bits

Octets

8

7

6

5

4

3

2

1

1

0x02

2

Spare

PDCP PDU number

3

PDCP PDU number

4

PDCP PDU number

5

Spare

6

Spare

7

Spare

8

Next Extension Header Type (Note 1)

0x20

Service Class Indicator

Bits

Octets

8

7

6

5

4

3

2

1

1

0x01

2

Service Class Indicator

3

Spare

4

Next Extension Header Type (note)

0x81

RAN Container

Bits

Octets

8

7

6

5

4

3

2

1

1

0xn

2-(4n -1)

RAN Container

4n

Next Extension Header Type (NOTE)

0x83

Xw RAN Container

Bits

Octets

8

7

6

5

4

3

2

1

1

0xn

2-(4n -1)

Xw RAN Container

4n

Next Extension Header Type (NOTE)

0x84

NR RAN Container

Bits

Octets

8

7

6

5

4

3

2

1

1

0xn

2-(4n -1)

NR RAN Container

4n

Next Extension Header Type (NOTE)

0x85

PDU Session Container

Bits

Octets

8

7

6

5

4

3

2

1

1

0xn

2-(4n -1)

PDU Session Container

4n

Next Extension Header Type (NOTE)

4.3扩展头报文格式

UDP Port:

PDCP PDU Number:

 

5故障处理

5.1协议故障

协议故障即是指带有不认识的、未预见到的或内容错误的信息。术语’’默默地丢弃”意思是实现时丢弃这个消息而不作进一步的处理,在事件日志中记录这个错误消息,并将该故障记录在统计计数器中。

消息定义的”是否要求”列如果是”必选项”,这个IE必须在消息中出现。

消息定义的”是否要求”列如果是”有条件的”,这个条件有如下的结果:

  1. 必须出现;
  2. 可选出现;
  3. 必不出现;

消息中遗漏了必须出现的IE看成是数据丢失;出现了必不出现的IE看成是意外数据。

5.1.1不同的GTP版本

如果接收节点接收到一个它不支持的版本的GTP控制面信息,则发回GTP版本不支持消息,且在GTP头的版本字段中指出节点支持的最新GTP版本。丢弃接收到的G-PDU。

仅支持GTPv0版本的GSN可能不会监听2123端口,因此它不能给请求方发回版本不支持消息。同时支持GTPv1版本和GTPv0版本的GSN试图使用v1版本跟对等实体联系失败时,应退回到GTPv0版本。

实现选项:保留一个最近联系过的仅支持GTPv0版本的GSN列表,以及发回版本不支持消息的节点支持的版本。

5.1.2 GTP消息太短

当接收到一个消息太短而没有完整的包含该消息声明的GTP版本所应有的消息头时,应默默地丢弃这个G-PDU消息。

5.1.3 不认识的GTP控制面消息

当接收到一个消息的消息类型值未知时,应默默地丢弃。

5.1.4 意外的GTP控制面消息

当收到一个意外的GTP控制面消息时,如接收到的响应消息没有相应的未决的请求消息或GTP控制面消息在错误的方向发送,应默默地丢弃。

5.1.5 缺少必须有的IE

当接收到丢失了必须有的IE的请求消息时,将默默地丢弃并在错误日志中登记。应发送一个响应消息,且原因值设成’必选IE丢失’。当接收到丢失了必须出现的IE的响应消息时,经通知上层协议并在错误日志中登记。

5.1.6 无效的长度

在接收到的GTP控制面请求消息中,强制TLV(类型、长度、值)格式的IE的长度可能与消息声明的版本定义的长度不一致,则应默默地丢弃,并在错误日志中登记,响应消息的原因值应设成’必选IE不正确’。

在接收到的GTP控制面响应消息中,假如强制TLV(类型、长度、值)格式的IE的长度可能与消息声明的版本定义的长度不一致,请求实体把这个GTP控制面过程看作失败。

5.1.7 无效的必选IE

在接收到的GTP控制面请求消息中,必选IE的值超出了这个IE值的定义范围则应丢弃这个请求、在错误日志中登记,把响应消息的原因值设成’比选IE不正确’。

在接收到的GTP控制面响应消息中,必选IE的值超出了这个IE值的定义范围则应通知上层协议,并在错误日志中登记。

假如GSN接收到的IE值是保留值,则应看成IE值超出了定义范围。

注释:接收者不检查IE字段的内容就定义为空。

5.1.8 无效的可选IE

在接收到的GTP控制面消息中,可选IE的值超出了IE值的定义范围则应丢弃这个IE、在错误日志中登记、当成这个IE没有出现来处理消息的剩余部分。

假如GSN收到的IE的值是保留值,把它当成IE值超出范围处理。

注释:接收者不检查IE字段内容就定义为空。

5.1.9 不认识的IE

如果IE的类型值不认识接收者应忽略。如果是TLV格式的IE,就根据长度值跳过去,如果是TV格式的IE,就丢弃消息的剩余部分。

如果接收节点由于忽略了IE而不能解释剩余部分,接收节点应丢弃这个消息并在错误日志中登记,此外如果消息是请求消息,还应把响应消息的原因值设成无效的消息格式

5.1.10 IE乱序

如果消息中两个或更多的IE乱序,接收节点将丢弃这个消息,并在错误日志中登记,此外如果消息是请求消息,还应把响应消息的原因值设成无效的消息格式

5.1.11 意外的IE

如果IE的类型在GTP中有定义,但是不应出现在接收到的消息中,就跳过这个IE,其余按正常情况处理。

5.1.12 重复

如果在一个GTP控制面信息中出现未规定的重复的IE时,则应只处理第一次出现的IE的内容,并应忽略此后出现的所有重复的IE。当规定了重复的IE时,应只处理所规定的重复IE的内容。

5.1.13 可选IE不正确

在GTP控制面消息中所有错误的可选IE应视为未在该消息中出现。但是,如果接收方的GSN因这一可选IE错误而不能正确处理该消息,则接收方的GSN应在错误日志中登记,并把响应消息的原因值设成’可选IE不正确’。

5.2路径失败

每当在某路径上接收到一个响应的时候都应复位路径计数器,并且对该路径上发送的任何消息,当T3-RESPONSE定时器超时时,就增加计数器值。如果计数器值超出N3-REQUESTS定义的值,则认为路径down掉了。在这种情况下GSN或RNC可以通知OMC网络元素。GTP也应通知上层协议路径失败,以便删除与该路径关联的PDP上下文。

5.3 MS分离

当MS分离时,所有与MS相关的正在进行的GTP控制面过程都应中断。SGSN应针对所有激活的PDP上下文给对等的GGSN发删除PDP上下文请求消息。

5.4重启和恢复

所有GSN应在非易失性存储器中保存具有本地意义的重启计数器值。在重启过程完成后,GSN应立即更新重启计数器值。计数器值按模256递增。

所有GSN也应在易失性存储器中保存与之联系的每个GSN的重启计数器值。在重启过程完成后,保存的与之联系的所有GSN的重启计数器值将被清除。

5.5 报文格式

在请求中,Cause Value表示请求的原因。原因应包含在请求消息中。

在响应中,Cause Value表示接受或拒绝相应的请求。此外,Cause Value可以指示对应请求的原因。Cause值应包含在响应消息中。

Table 5.1: Cause Values

Cause

Value (Decimal)

Request IMSI

0

Request IMEI

1

request

Request IMSI and IMEI

2

No identity needed

3

MS Refuses

4

MS is not GPRS Responding

5

Reactivation Requested

6

PDP address inactivity timer expires

7

Network Failure

8

QoS parameter mismatch

9

For future use

10-48

Cause values reserved for GPRS charging protocol use (see GTP' in 3GPP TS 32.295 [33])

49-63

For future use

64-127

acc

Request accepted

128

New PDP type due to network preference

129

New PDP type due to single address bearer only

130

For future use

131-176

Cause values reserved for GPRS charging protocol use (see GTP' in 3GPP TS 32.295 [33])

177-191

Non-existent

192

Invalid message format

193

response

rej

IMSI/IMEI not known

194

MS is GPRS Detached

195

MS is not GPRS Responding

196

MS Refuses

197

Version not supported

198

No resources available

199

Service not supported

200

Mandatory IE incorrect

201

Mandatory IE missing

202

Optional IE incorrect

203

System failure

204

Roaming restriction

205

P-TMSI Signature mismatch

206

GPRS connection suspended

207

Authentication failure

208

User authentication failed

209

Context not found

210

All dynamic PDP addresses are occupied

211

No memory is available

212

Relocation failure

213

Unknown mandatory extension header

214

Semantic error in the TFT operation

215

Syntactic error in the TFT operation

216

Semantic errors in packet filter(s)

217

Syntactic errors in packet filter(s)

218

Missing or unknown APN

219

Unknown PDP address or PDP type

220

PDP context without TFT already activated

221

APN access denied – no subscription

222

APN Restriction type incompatibility with currently active PDP Contexts

223

MS MBMS Capabilities Insufficient

224

Invalid Correlation-ID

225

MBMS Bearer Context Superseded

226

Bearer Control Mode violation

227

Collision with network initiated request

228

APN Congestion

229

Bearer handling not supported

230

"Target access restricted for the subscriber"

231

UE is temporarily not reachable due to power saving

232

Relocation failure due to NAS message redirection

233

For future use

234-240

Cause values reserved for GPRS charging protocol use (see GTP' in 3GPP TS 32.295 [33])

241-255

NOTE: With this coding, bits 8 and 7 of the Cause Value respectively indicate whether the message was a request or a response, and whether the request was accepted or rejected.

Table 5.2: Use of the Cause Values

Cause 8

value bits 7

Result

0

0

Request

0

1

For future use (note)

1

0

Acceptance

1

1

Rejection

例:Optional IE incorrect


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

相关文章

【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;有一线大厂面试完整考点、资料以及我的系列文章。 前言 前面我已经带着大家过了服务暴露和服务引入两个流程了…

dubbo的服务调用原理

一、前言 在我们使用dubbo进行远程服务消费时&#xff0c;可以通过Reference注解或dubbo:reference来配置引用的接口&#xff0c;最终会生成远程服务的代理类&#xff0c;转化成ReferenceBean&#xff0c;这样我们就可以像调用本地接口方法一样使用远程服务提供的功能&#xf…

18. Dubbo原理解析-服务调用

服务消费方发起请求 当服务的消费方引用了某远程服务&#xff0c;服务的应用方在spring的配置实例如下&#xff1a; <dubbo:referenceid"demoService"interface"com.alibaba.dubbo.demo.DemoServ ice" /> demoService实例其实是代理工厂生产的代理…

Dubbo 原理和机制详解

Dubbo 是一款Java RPC框架&#xff0c;致力于提供高性能的 RPC 远程服务调用方案。作为主流的微服务框架之一&#xff0c;Dubbo 为开发人员带来了非常多的便利。 1. Dubbo核心功能 Dubbo主要提供了3大核心功能&#xff1a;面向接口的远程方法调用&#xff0c;智能容错和负载均…

从源码全面解析 dubbo 服务端服务调用的来龙去脉

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱敲代码的小黄&#xff0c;独角兽企业的Java开发工程师&#xff0c;CSDN博客专家&#xff0c;阿里云专家博主&#x1f4d5;系列专栏&#xff1a;Java设计模式、Spring源码系列、Netty源码系列、Kafka源码系列、JUC源码…

Dubbo原理和面试问题

今天来说一说dubbo的原理&#xff0c;首先我们要知道dubbo到底是什么&#xff0c;都能提供些什么服务&#xff1f; 一、dubbo是什么&#xff1f; dubbo是⼀个分布式服务框架&#xff0c;提供⾼性能和透明化的RPC远程服务调⽤⽅案&#xff0c;以及SOA服务治理方案。说白了其实…

springboot启动dubbo客户端连接服务端过程

前言 如果我问你,dubbo客户端启动的时候是如何连接服务器端的&#xff1f;这个过程比较复杂&#xff0c;今天我们一起学习起来~ 本文分以下几个部分 1、springboot启动dubbo需要配置 2、初始化Reference过程 3、小结 一、项目应用 1、引入jar包 <dependency><g…