您的位置:首页 > 大数据 > 人工智能

GTP(GPRS Tunnelling Protocol)协议http://blog.csdn.net/stephen_yin/article/details/6951237

2016-01-18 15:26 701 查看


GTP(GPRS Tunnelling Protocol)协议

标签: extensionheaderinternet网络wapxhtml
2011-11-09 10:15 6097人阅读 评论(0) 收藏 举报

GTP(GPRS Tunnelling Protocol协议GPRS 骨干网中在GSNs
之间(如 SGSN 和 GGSN)提供协议信道,所有的PTP 分组数据协议的PDUs 应由GTP 协议进行封装。

GTP概述

  GTP 协议应用在SGSN 和GGSN 之间,为各个移动台(MS)
建立GTP 通道,GTP 通道是 GPRS服务节点(GSN)
之间的安全通道,两个主机可通过该通道交换数据。

  SGSN 从 MS 接收数据包,并在 GTP 包头中对其进行封装,然后才通过GTP 通道将其转发到 GGSN。GGSN 接收这些数据包时,先将它们解封,然后转发到外部主机

  GTP 数据包包头含有Sequence Number字段,Sequence Number向GGSN(接收 GTP 数据包的GGSN)
指示数据包的顺序。

  在PDP 环境激活阶段,发送端GGSN 向接收端GGSN 发送的第一个G-PDU 的序列号值是零 (0) ,发送端 GGSN 为其随后发送的每个 G-PDU 增加序列号值,G-PDU序列号值达到
65535 时,重置为零。

  一般情况下,接收端 GGSN 会校验所接收的数据包中的序列号,接受端GGSN拿自身的计数器序列号和所接收的数据包中的序列号进行比较,如果这两个序号匹配上了,则
GGSN 转发该数据包,如果它们不匹配,则GGSN 丢弃该数据包。

  GTP 标准,可以参考3GPP的技术规范:

  3GPP TS 09.60 v6.9.0 (2000-09)

  3GPP TS 29.060 v3.8.0 (2001-03)

  3GPP TS 32.015 v3.9.0 (2002-03)
协议内容

  GTP协议分为GT-C,GTP-U和GTP’协议。其中,GTP-C是信令控制协议,GTP-U是封装用户数据协议,GTP’是计费相关的协议。

  GTP协议头部格式如下:





  说明如下:version:版本号,目前基本都是1,即gtp v1版本;

  protocol type:1为GTP’,0为GTP-C或GTP-U。

  next extension header:seq:n-pdu number:

  根据文档,这三个标示位分别指示gtp 头部是否含有next extension header项,sequence number项和n-pdu number项。但根据我对现网的数据分析,事实好像并非如此。

  此三个bit位,只要有一个置位,这三项都同时存在。

  Teid据说是很重要的字段,目前对该字段的认识不足,需进一步研读3gpp协议。受高人指点,具体是3GPP TS 23.060和3GPP TS 29.060。

  Total length:gtp封装数据的长度,不包括gtp头部的基本长度,但包括gtp选项的长度,即:上面的next extension header,sequence number项和n-pdu number项的长度是包括在这个Total length之中的。 如果next extension header不为0,则下面还有extension header,直到extension header的nextextension header项为0。Next extension header格式如下:





  Extension header的长度必须为4的倍数。

  Gtp-C协议的根据不同的类型(type),其编码格式都不相同。常见的比较重要的三个type为:imsi,msisdn和apn。

  Imsi和msisdn的编码格式有些类似。

  Apn的全称是Access Point Name,通常分为两部分,一部分为网络标示(ni),一部分为运营商标示(oi)。有些apn只有一部分。

  APN的格式如下:





  其中,type占一个字节,为0x83;

  apn length占用两个字节,为网络字序,包括该字段后的apn项的长度;

  ni长度,一个字节,ni的长度;

  oi长度,一个字节,标示OI长度。
工作原理

  当我们使用手机上wap网站,或者上internet时,在sgsn和ggsn之间发生什么样的信令?我们的数据是通过怎么的手段传输到互联网上的呢?

  Wap网和internet不同,wap网是一个半封闭半开放的网络,而internet是一个开放的网络。

  从拨号方式上,对于中国移动来说,wap用户的apn为cmwap,internet用户的apn为cmnet。

  从网络连接方式上,手机上wap网站时,其实是通过运营商的wap网关代理请求访问wap网站,而手机上internet时,访问的方式是通过运营商的防火强NAT转换请求网站。

  从七层协议上来说,wap网站早期使用专用的wml协议,wap 1.2协议之前,目前的wap 2.0支持xhtml协议,可以说,wap和internet之间的差距在减小,甚至有逐渐融合的趋势。Xhtml与html差距不大,只是语法更加严格而已。

  下面解释一下用户拨号时,sgsn与ggsn之间的信令过程:

  首先,sgsn发送一个create pdp content request向ggsn;

  然后,ggsn返回create pdp content response给sgsn,说明该用户是否成功接入gprs网络,如果成功接入,分配地址给该用户,否则,说明原因;

  最后,用户获得ip地址,接入网络。

  在create pdp content request报文中,有以下三个重要的内容项:

  imsi:用户全球唯一标示msisdn:

  用户全球电话号码标示apn:标示用户接入的网络

  在create pdp content response报文,如果成功,则包含分配给用户的ip地址
相关术语

  APN

  Access Point Name,接入点名称,在GGSN中用于标识一个指定的外部网络和一种服务的ISP,在SGSN中可根据APN通过DNS域名解析得到与此APN对应的GGSN地址。APN可以分为APN以及wild
card APN, wild card APN是指运营商允许用户使用给定的PDP类型的上下文接入任何网络,用“*”表示;常规APN包括两部分:网络标识(NI, Network Identifier)和运营商标识(OI, Operator Identifier)。NI最长63字节,OI最长37字节,不区分大小写。

  TEID

  Tunnel Endpoint Identifier,GTPv1的概念,用于表示一条隧道(PDP),分为数据面TEID(TEID(U))和控制面TEID(TEID(C)),由SGSN和GGSN自己分配。

  NSAPI

  Network Service Access Point Identifier,和TEID(C)或IMSI一起用于标示同一用户激活的不同上下文,范围[0,15],其中0~4系统保留,因此对于一个用户(UE)而言,最多可以建立11条隧道。

  TIDGTPv0的概念,由IMSI+NSAPI构成,和TEID作用相同。

  TFT

  TFT(Traffic Flow Template)是GSN在接收或转发用户数据时,用于区分二次激活的PDP上下文,TFT唯一的标识了同一TEID或同一PDP
Address下的不同的PDP上下文。

  当同一个TEID或PDP Address下只有一个活跃的PDP上下文时,不需要为该PDP上下文指定一个TFT,因为所有下行的数据都直接通过该上下文对应的隧道传输。

  当同一个TEID或PDP Address下有多个活跃的PDP上下文时,那么就需要为每一个PDP上下文指定一个TFT,GGSN接收到发送给MS的G-PDU时,将使用该TFT来对应G-PDU传输时应该使用的PDP上下文。

  如果在二次激活时,所有该PDP地址下的PDP上下文都已经被分配了一个TFT,那么这一次的二次激活就可以无需再指定一个TFT。即,对应同一个TEID或PDP地址下的不同的PDP上下文,要么全都有各自的TFT,要么,只能有一个PDP上下文没有TFT。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: