概述
概述:
***(简单说一下,不重点讲述啦)
GPRS 隧道协议 (GTP) 是一种隧道协议,用于 GPRS、UMTS、LTE 和 5G 网络。它分为两个独立的协议:GTP-C 和 GTP-U。GTP-C用于GPRS核心网络中,用于不同网络节点之间的信令。GTP-U 用于承载用户数据。
GTP 消息头
- GTP-C和GTP-U协议使用的GTP头是变长度的。GTP头的最小长度是8个字节。有三个标志用来指示三个可选字段是否使用:PN标志,S标志和E标志。PN标志用于指示是否使用N-PDU可选字段;S标志用于指示是否使用GTP序号;E标志用于指示是否使用扩展头可选字段,使用这个标志可以使将来对本规范进行扩展时不需使用另外的版本号。假如设置了三个标志中的任一个,GTP头的长度至少是12个字节,且接收者应处理相应的字段。发送者应把所有未使用的位置零,接收者不处理未用字段。
GTP-C和GTP-U对GTP头某些字段的使用是不同的。
必选字段:
- 版本号(Version):3bit,这个字段用于确定GTP协议的版本。
- 协议类型(PT):这个位用于区分GTP(PT置为’1’)和GTP’(PT置为’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-C的接收实体应忽略此标志。
消息类型:这个字段指出GTP消息的类型。有效的GTP-C和GTP-U消息类型值后续再讲。
长度:这个字段指出以字节为单位的净荷长度,即分组中除了GTP头的必选部分外剩余部分的长度(即除去前面的8个字节)。序号、N-PDU编号或任何扩展头应作为净荷部分考虑,即包含在长度计数中。
隧道端点标识符(TEID):这个字段清楚地标识了对端的GTP-U或GTP-C协议实体中的隧道端点。由GTP隧道的对端本地分配TEID值,供GTP隧道的发起方使用。通过GTP-C(在Iu接口上使用RANAP消息)消息在隧道的两个端点间交换TEID值。
Sequence number::2字节,对T-PDU进行编码,可用于用户面排序,重传等目的
可选字段:
序号:这个字段在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中紧接着这个字段的扩展头的类型。
Octets 8 7 6 5 4 3 2 1
1 版本号 协议类型 (*) E S PN
2 消息类型
3 长度(1st Octet)
4 长度 (2nd Octet)
5 隧道端点标识符TEID(1st Octet)
6 隧道端点标识符TEID(2nd Octet)
7 隧道端点标识符TEID(3rd Octet)
8 隧道端点标识符TEID(4th Octet)
9 序号(1st Octet)1) 4)
10 序号(2nd Octet)1) 4)
11 N-PDU编号2) 4)
12 下一个扩展头类型3) 4)
(*) 这个位是空位应置零,接收者不解释。
- 仅当S标志置’1’才解释这个字段。
- 仅当PN标志置’1’才解释这个字段。
- 仅当E标志置’1’才解释这个字段。
- S, PN, E标志中任何一个或多个被置’1’时就应出现这个字段。
GTP扩展头的格式在图3中描述。应以四字节为单位定义扩展头长度。下一个扩展头类型字段定义紧接着这个扩展头的下一个扩展头的类型。如果紧接着的不是扩展头,这个字段应置为’0’。
Octets 1 扩展头长度
2 - m 扩展头内容
m+1 下一个扩展头类型(*)
图3. 扩展头格式略图
() 假如紧接着没有扩展头应把这个字段置为’0’。
扩展头的长度应以4字节长度单位定义, 如m+1 = n4个字节,n是正整数。
下一个扩展头类型字段的第7、8位定义接收方应怎样处理不认识的扩展头类型。除了标记为”不要求解释”外,接收方应解释’下一个扩展头’字段(用扩展头长度字段标识扩展头在G-PDU中的位置)。
接收方在接收到标记为’要求解释’的不认识的扩展头时,应按如下规则处理:
- 假如带不认识的扩展头消息是请求消息,就发送一个响应消息,原因值置为”不认识的必选扩展头”。
- 给GTP PDU的发起者发送’支持的扩展头通告’消息。
- 在错误日志中登记。
GTP-C 的简单头部
最后
以上就是成就芝麻为你收集整理的关于GTPv1协议解析的全部内容,希望文章能够帮你解决关于GTPv1协议解析所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复