GTP

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。

你可能感兴趣的:(通信知识)