51学通信技术论坛

 找回密码
 立即注册
搜索
查看: 37318|回复: 22
打印 上一主题 下一主题

GTP协议循序渐进(三)----通过实例了解TEID   [复制链接]

Rank: 9Rank: 9

懒

跳转到指定楼层
楼主
发表于 2011-2-10 14:05:09 |显示全部楼层 |倒序浏览
一键分享 一键分享
  要了解GTP协议,一定要了解GTP协议的作用。
  根据它的名字,可以推断出,首先它是一个隧道协议,是在GSN节点之间建立的,用于传递用户数据的payload。这个隧道需要穿越运营商GPRS的骨干网。那既然是这样,GTP协议就应该至少具备以下基本功能:
   由于这个隧道是用于传递GPRS的用户数据的,那首先要能够标识出这个隧道是属于哪个用户的,否则,每个用户在上网时都会有自己的GTP-U隧道,成千上万个用户都在SGSN-GGSN之间传递,如果在GGSN这边解封装,还原成普通IP包的时候不能区分出用户,就无法将用户的数据包放到相应的APN里去传递了。
   这个用于区分用户隧道的标识就是TEID。我们通过一个例子来了解一下TEID。

1 #1是MS发起的PDP激活请求给SGSN。包含请求的APN,QOS,pdp type等信息。

2 #2是SGSN向GGSN发起了create pdp context request,请求和GGSN建立关于这个用户的GTP-U隧道,来传递这个用户的payload信息。点开#2,在length 137下面,会发现有一个TEID:0x00000000,因为这是一个初始化的请求消息,所以TEID为0.用于标识这个初始的GTP-U隧道。再往下看,会发现两个IE,一个是TEID DATA I:0x32f02bf9。一个是TEID Control Plane:0x32f02bf9。这两个TEID是SGSN分配给GGSN使用的。指示了GGSN在接下来(后续消息一直到这个用户去激活的时间周期内)关于这个用户的信息,究竟应该用哪个TEID来标识。其中一个是标识这个用户的GTP-C,一个是GTP-U隧道。

3 #3是GGSN给SGSN回应的create pdp context response消息。在这里消息里,GGSN给MS分配了访问外部PDN网络的IP地址192.168.252.130。并且为了能够让SGSN能够区分出这个消息是针对哪个用户的,使用了SGSN分配给自己的TEID,由于本消息是个GTP-C的控制平面消息,所以使用了TEID Control Plane:0x32f02bf9。这可以同样在Length下面可以看到TEID使用的不再是全0了,而是在#2消息里SGSN分配的0x32f02bf9。只不过凑巧的是,SGSN分配的控制和用户平面的TEID都是一样的值。反过来,GGSN也给SGSN分配了两个TEID,是给SGSN在上行方向来标识用户的GTP隧道的。同样是分控制和用户平面。值分别为:0x010000085和0x010000080。

4 #4是SGSN给MS的响应,代表激活成功。并且SGSN记录下了GGSN给它分配的两个标识这个用户的TEID,在后续的关于这个MS的上下文信令和payload相关隧道中使用。

5 #5 MS开始发起到外部PDN的访问,SGSN使用GTP-U隧道将用户数据封装起来,同时里面携带的TEID值是0x010000085,也就是GGSN分配给SGSN使用,用来标识这个用户上行方向GTP-U隧道的TEID值。
注释:#5-#8是一个MS发起的TCP连接建立流程。三次握手,源IP是GGSN分配的192.168.252.130。目的IP地址是PDN网络后面的应用服务器IP,在这里例子里面,是一个RSTP流媒体服务器的IP地址。

6 #9三次握手建立完成以后,MS就可以发起RSTP的指令去向server请求相应的流媒体视频了。
可以看到,所有GTP-U的隧道的TEID都是GGSN分配给SGSN来使用的关于这个MS的用户平面的TEID值:0x010000085。


附件: 你需要登录才可以下载或查看附件。没有帐号?立即注册
www.gprshome.com: GPRS及移动通信技术学习交流分享平台。

Rank: 9Rank: 9

懒

沙发
发表于 2011-4-14 13:45:52 |显示全部楼层
回复 Albert 的帖子

可别这么说啊,再这么说人家都会以为你是托呢!呵呵!{:soso_e100:}
www.gprshome.com: GPRS及移动通信技术学习交流分享平台。

使用道具 举报

Rank: 9Rank: 9

懒

板凳
发表于 2011-4-15 13:18:21 |显示全部楼层
本帖最后由 爱卫生 于 2011-8-29 14:20 编辑

回复 Albert 的帖子

  不要被名词弄花了眼睛。其实TID和TEID是一个东西。只不过早期的GTP版本为版本0,控制和用户面是公共一个UDP端口号的,即控制和用户面没有分离。在GTPV0的规范里面,标识一个GTP隧道就用TID。但现在都是用的GTPV1,控制和用户平面是分离的,用的不同的端口号,在GTPV1规范里,标识一个GTP隧道就用TEID。现在现网里已经没有GTPV0了。全都是GTPV1.以后演进到EPC(即LTE下的PS核心网)还会用到GTPV2,那是后话了。IMSI用于标识某个用户,NSAPI标识某个用户的某个PDP上下文,所以IMSI+NSAPI就可以区分出某个MS的某一个PDP上下文了。和TEID是有这种映射关系的。
  原来很长时间不知道VIP是什么。后来英语老师教我们是“Very Important Person”,就觉得很简单了!{:soso_e100:}
www.gprshome.com: GPRS及移动通信技术学习交流分享平台。

使用道具 举报

Rank: 9Rank: 9

懒

地板
发表于 2011-4-26 13:57:59 |显示全部楼层
本帖最后由 爱卫生 于 2011-8-29 14:21 编辑

回复 bestflora 的帖子

   这个包包含了Gb和Gn接口的包。只要看协议栈就可以了。带有BSSGP头的肯定是Gb口的。带有GTP封装的肯定是Gn口的。因为Gb和Gn在这个例子里都是基于IP的,所以在Lan swtich上做镜像就可以抓了。
   "三次握手用到的外部PDN地址",源地址192.168.252.130是在第4步中activate PDP context accept消息里发给手机的,是由GGSN分配的。目的地址10.64.8.254是在手机上自己配的一个远端流媒体服务器的地址。用的是RTSP协议。在#8号包里,
rtsp://10.64.8.254/t1.3gp。这个是需要手机自己去配置的。它是知道的。你可以把10.64.8.254看成是Internet当中任意一个server的地址,例如wap.sohu.com。手机都需要知道,只不过手机一般不会直接输入IP去访问,而是输入网址然后通过DNS来解析。
www.gprshome.com: GPRS及移动通信技术学习交流分享平台。

使用道具 举报

Rank: 9Rank: 9

懒

5#
发表于 2011-4-26 14:44:04 |显示全部楼层
本帖最后由 爱卫生 于 2011-8-29 14:21 编辑

回复 bestflora 的帖子

    其实这个例子里的包分成两部分来看。一部分为PDP上下文激活。另一部分为业务的访问。PDP上下文激活的过程主要是从GGSN得到一个分配的IP地址和DNS SERVER等信息。然后才能发起对业务的访问。但在激活的过程中,MS是不带业务地址的例如sohu.com。
   第1和2步是对的。第3步,GGSN不需要去解析去解析sohu.com。因为MS并没有在1和2步中说自己要访问sohu.com。GGSN不会自作多情。第4步和第5步是对的,同时在第5步GGSN除给MS分配MS地址外,还会分配一个DNS server的地址。
   第6步,MS在自己的手机浏览器里输入
www.sohu.com。这个域名首先会送给第5步得到的DNS server来去做域名解析。得到sohu.com这个服务器的地址。MS再去建立TCP三次握手建立到www.sohu.com这个HTTP SERVER的连接。三次握手完成以后,就可以访问sohu的首页了。SYN消息里的对端IP地址就是sohu.com的服务器地址。这是通过DNS server查询得到的。
   如果还有后续的业务,MS可以直接发送到sohu.com的访问。源为MS,目的IP为sohu.com。这个包在Gb接口由BSSGP头进行封装发给SGSN,再由SGSN放入GTP-U隧道,加入GTP包头给GGSN。GGSN去掉GTP包头后,变成一个纯IP包发给sohu.com的server。但MS到sohu.com的payload是在所有经过的网元节点里都不改变的。直到发给sohu.com的server才解包。
  请注意,这里举的例子不是针对wap业务来说,而是针对普通的internet网站的访问来说的。wap业务的流程不适用。因为所有的包都要先经过WAP网关。
www.gprshome.com: GPRS及移动通信技术学习交流分享平台。

使用道具 举报

Rank: 9Rank: 9

懒

6#
发表于 2011-4-26 15:47:20 |显示全部楼层
本帖最后由 爱卫生 于 2011-8-29 14:22 编辑

回复 bestflora 的帖子

    呵呵,你整理的很好啊。这样子如果还有其他的论坛朋友不明白,看到你的整理,相信都一定会明白的。
   我的答复如下:
1 关于PDP激活流程:
   完全正确。包括1-4步。
2 关于业务访问流程:
   基本正确。但需要补充说明的是,在第5步和第6步MS访问DNS SERVER,以及MS和SOHU.com建立三次握手,都需要和第7步一样,需要经过Gb口BSSGP的封装和Gn口的GTP的隧道。物理路径为:MS---基站----BSC----SGSN----GGSN-----Sohu.com。
   所有的这些DNS SERVER、SOHU.com都是存在于Internet当中,MS要访问他们都必须要经过GGSN这个网关节点才能访问。这个GGSN和Internet之间的参考点是Gi接口。因为这是两张网,GPRS和IP网络,不经过网关是无法访问的。就像和外国人打交道,不懂外语就一定要经过翻译一样。你说的所有的话都要先告诉翻译,然后翻译再告诉老外。而不管你是要和这个老外谈生意、交友还是出于别的目的。
   所以,你的后面两个问题就不难解释了:
一 "MS是经过SGSN访问DNS server吗,还需不需要绕到GGSN的?"一定要的。因为DNS Server在Gi接口后面的internet当中。是在GGSN后面的。直接通过SGSN是无法路由的。因为SGSN和Internet是没有任何联系和接口进行通信的。
二 "如果我先后访问了sohu和sina两个网站,这时候是在同一个PDP里,但建立两个TCP连接。因为都是通过CMNET访问的"。这肯定是对的。sohu和sina两个网站的服务器IP肯定不一样,所以肯定要建立两次TCP连接。并且是同一个PDP上下文。因为PDP上下文在Gn接口是通过TEID来标识。不管你访问多少个网站,通过Gn接口时,都会封装相同的TEID。你后面那句话"因为都是通过CMNET访问的"不完全准确,通过CMNET访问和建立两个TCP连接没有必然联系。如果说一定有关联的话,CMNET这个APN是直接接到Internet当中的,所以MS可以直接和CMNET中的server建立TCP连接,而如果是WAP业务的话,则不能。只能先建立到WAP网关的连接,才能访问WAP网关后面的业务。
   不用怕有问题,有问题总比没有问题好。我相信谁都肯定是有问题的。而且我相信,有可能你的这个问题别人也想问,所以你也帮助了别人。这也是件好事啊!
www.gprshome.com: GPRS及移动通信技术学习交流分享平台。

使用道具 举报

Rank: 9Rank: 9

懒

7#
发表于 2011-4-26 16:14:27 |显示全部楼层
回复 bestflora 的帖子

   对对对,呵呵。这也怪我。没注意到这个细节。SGSN查询DNS存在于运营商内部网络,可以是私有地址。只为运营商自己的网元节点提供服务,不对用户开放。而Gi口后面的DNS Server是在Internet当中,是为所有的个人用户开放,包括ADSL用户和手机终端。你仔细对比其实可以发现,MS做激活后拿到的DNS Server地址和你在家里用ADSL上网拿到的DNS Server地址有可能会是一样的。肯定是一个公网地址,例如211.xxx.xxx.xx。
www.gprshome.com: GPRS及移动通信技术学习交流分享平台。

使用道具 举报

Rank: 9Rank: 9

懒

8#
发表于 2011-5-23 12:27:36 |显示全部楼层
回复 chenhaonan 的帖子

   不好意思。我现在没有抓包的环境。因为你需要的这个包只能在lab抓,在现网是很难有条件抓到完成的。
   我现有的包只能满足你的前两个需求,也就是:
   创建一个pdp上下文之后,再创建第2个pdp上下文(跟第一个pdp上下文有相同的APN)。
   但就没有第3个pdp上下文了。
   请在http://www.gprshome.com/forum.php?mod=viewthread&tid=240&extra=page%3D1 这篇帖子中下载。
   贴名叫“Secondary PDP Context激活流程及实例”
   至于用户面,在本贴的抓包文件中就有,你可以结合这和上面帖子中的附件一起看可能就明白了。不用担心,我也是新人过来的,不过现在还有很多不懂的地方,我创建论坛只是想搭一个平台,一个架子。然后通过我的努力发言,来激起大家一起来共同交流、分享。呵呵。所以,我看到了,一定会回帖的。不管我懂不懂,懂的话告诉你答案,不懂则告诉你我的一些基本理解,和建议的参考文档或方案。
www.gprshome.com: GPRS及移动通信技术学习交流分享平台。

使用道具 举报

Rank: 9Rank: 9

懒

9#
发表于 2011-7-27 12:28:07 |显示全部楼层
weishengzi 发表于 2011-7-26 14:24
回复 爱卫生 的帖子

GTP v0版本中的TID 确实如您所说,有imsi+nsapi组成,并且也可以标识哪个用户的哪路PD ...

  谢谢指正。我对之前的GTPV0确实没有太深入的研究。因为现在已经没有用了。看来学习也不能太功利。呵呵!
www.gprshome.com: GPRS及移动通信技术学习交流分享平台。

使用道具 举报

Rank: 9Rank: 9

懒

10#
发表于 2011-8-29 10:35:54 |显示全部楼层
1 楼主,我有一个问题很好奇,对于每个终端来说,是否可以认为SGSN就是他的网关;然后GGSN又是多个SGSN的网关?
  答:不能这个说。SGSN和GGSN不是管理与被管理的消息。不过可以这么说,SGSN负责用户的移动性管理,例如用户当前的位置信息。所以SGSN可以看作是用户的移动性管理的管理者,但并不能用网关一词。因为网关的定义是要连接两种异构网络的节点才叫网关。GPRS网络网关只有一个就是GGSN,GGSN为手机分配IP地址,手机的IP层下一跳就是GGSN。如果从定义上来说,GGSN是GPRS网络和PDN网络的边界,连接了GPRS和IP这两个异构网络,提供转接,即将GTP信令去掉转成IP包。因此GGSN是一个名副其实的网关节点,这也是它名字的由来,Gateway GSN。其他常见的网关还有VOIP语音网关,一边连的是IP网,是以太网口,一边是传统的电话PSTN网络,采用数字E1接口,要实现协议及信令的转换。
2 还有一个问题,就是有没有可能同一时刻,两个终端都分配的是同一个IP地址?  
  答:不可能,不管IP地址是GGSN分配还是DHCP或RADIUS来分配,正常情况下两个终端是不会分到相同IP的。否则下行数据从Gi接口到达GGSN后,GGSN将无法和Gn接口的GTP隧道进行映射,从而发送给正确的手机用户。
www.gprshome.com: GPRS及移动通信技术学习交流分享平台。

使用道具 举报

Rank: 9Rank: 9

懒

11#
发表于 2011-8-29 14:19:11 |显示全部楼层
df99910 发表于 2011-8-29 14:04
谢谢楼主,另外还有点疑问
2. 手机上网时,PDP被激活后,到被去激活前,IP地址是唯一的话(就像家庭用户上 ...

  回顾一下GPRS网络架构图:BSC--Gb接口---SGSN---Gn接口---GGSN---Gi接口---外部IP网络。
  在SGSN和GGSN之间的Gn接口,采用的是GTP协议,类似于其他的隧道协议如GRE、IPSec等一样,都是将用户的数据报文封装起来了,对GSN节点来说。能看到的就是在Gn接口上有成千上万个基于GTP协议建立的GTP的Tunnel。这些GTP隧道就需要用TEID来唯一的标识。从IP层来看,Gn接口上,所有的用户源IP是SGSN的业务IP,目的IP地址是GGSN的业务IP,大家都是一样的。因为真正的用户IP已经被封装起来了。相当于被装进了一个信封,邮递员就看不到信的内容。这样当用户的数据假如是下行方向,从Gi接口收到,GGSN看到目的IP是手机用户的IP,但需要和Gn接口的GTP隧道进行映射后才能转发到手机用户。但Gn接口上这个多用户的PDP上下文,怎么去映射呢?就需要通过TEID了。就不能根据用户的手机IP去映射了。因为在Gn接口只认GTP隧道。再往下,Gn接口还要和Gb接口的NSVC进行映射,才能转发给我们的手机终端用户。所以,光靠手机IP是无法完成Gb、Gn、Gi接口的协同转发的。一定要用到TEID。
www.gprshome.com: GPRS及移动通信技术学习交流分享平台。

使用道具 举报

Rank: 9Rank: 9

懒

12#
发表于 2011-9-9 07:58:12 |显示全部楼层
回复 wbl070818 的帖子

  是在以太交换机上端口镜像抓的。不过和你说的在SGSN上抓的差不多的。
  协议栈是Gb Over IP啊。现在现网很多都已经改造成Gb Over IP了。原来都是用的Gb Over FrameRelay的。Gb Over IP的规范在TS48.016中有定义。
www.gprshome.com: GPRS及移动通信技术学习交流分享平台。

使用道具 举报

Rank: 9Rank: 9

懒

13#
发表于 2011-10-7 15:01:13 |显示全部楼层
dwlnet 发表于 2011-10-6 17:33
咱们这个论坛真的不错,尤其是爱版主的详细准确的解答,让人看了后受益匪浅。
我也是初学GPRS,看了版主的 ...

  几个问题的回答。
1 #1中MS发给SGSN是指的层3的消息即GMM移动性管理相关的消息。物理上消息肯定要经过基站、BSC还有传送网络才能发给SGSN处理。就像PC机上网一样,物理上可能需要经过Hub、交换机,但层3的消息要交给网关路由器去解析才行。
2 完全正确。分别是BSC和SGSN侧的IP。因为抓到的这个包是Gb接口的包。
3 封装包是按照协议栈一层层来封装的。可能需要先看下GPRS原理里边的协议栈再来看包会更有收获。最上层是PDP激活请求也就是GMM层3的消息,然后交给LLC层提供加密等服务通过空中接口发给基站再转给BSC、发给BSC后,协议栈变成了Gb接口,需要使用BSSGP协议和SGSN通信。再往下就是Gb Over IP的协议栈了。
www.gprshome.com: GPRS及移动通信技术学习交流分享平台。

使用道具 举报

Rank: 9Rank: 9

懒

14#
发表于 2011-10-19 10:47:29 |显示全部楼层
回复 yinxueai 的帖子

  哈哈,有道理,思路很宽哦!谢谢!
www.gprshome.com: GPRS及移动通信技术学习交流分享平台。

使用道具 举报

Rank: 9Rank: 9

懒

15#
发表于 2011-11-23 20:55:47 |显示全部楼层
回复 worldwind 的帖子

   WCDMA和GSM都是共用的PS核心网。所以Gn口的信令是一样的。
   RANAP是控制面协议,用户面的GTP-U隧道所需参数如GTP-U的IP和TEID等,也是通过RANAP协议在RNC和SGSN间协商分配的。具体来说是通过一个叫RAB Assignment的流程进行GTP-U隧道所需参数协商分配。
   Iu-PS口和Gn口的用户面GTP-U是独立的两段隧道,彼此没有关联。第一段从RNC打到SGSN,SGSN拆掉Iu口的GTP-U隧道后,再封装到GGSN的GTP-U隧道发给GGSN。
   SGSN上会存放在Gn接口和Iu-PS接口上,关于某个用户的某个PDP上下文的映射关系。
www.gprshome.com: GPRS及移动通信技术学习交流分享平台。

使用道具 举报

Rank: 9Rank: 9

懒

16#
发表于 2011-11-23 21:28:22 |显示全部楼层
回复 worldwind 的帖子

  你说的IP端口是指?针对交换机上的物理端口做镜像就可以了。当然如果GSN节点提供了抓包工具就更好了。
  完整的有啊。参考看包详解带3GDT的PDP上下文激活流程。还有这里有Iu-PS的包。http://www.gprshome.com/forum.php?mod=redirect&tid=788&goto=lastpost#lastpost
www.gprshome.com: GPRS及移动通信技术学习交流分享平台。

使用道具 举报

Rank: 9Rank: 9

懒

17#
发表于 2011-11-23 22:54:04 |显示全部楼层
回复 worldwind 的帖子

  IMSI和MSISDN是看不到的。标识用户将使用临时标识P-TMSI。用于防止IMSI被非法窃ting。
www.gprshome.com: GPRS及移动通信技术学习交流分享平台。

使用道具 举报

Rank: 9Rank: 9

懒

18#
发表于 2011-11-24 15:12:11 |显示全部楼层
worldwind 发表于 2011-11-24 10:46
经过进一步的了解,在RANAP的COMMON ID的消息里面包含有IMSI,但依然没有MSISDN,所以我跟不解了:
1、手机 ...

  在PDP激活的过程中,实际上并不需要IMSI和MSISDN。特别是后者,这在电路域里很重要,但在分组域里并不需要MSISDN来参与信令交互。因为分组域只需要能够识别出这是哪个用户的哪个PDP上下文,并确保数据包能正确的路由发送给这个用户对应的PDP上下文。而路由和寻址都不需要MSISDN。所以,在分组域里,就忘掉MSISDN吧。但MSISDN可以作为计费的一个依据参考由SGSN提供给后台的计费系统。SGSN可以从HLR的用户签约数据里获取用户的MSISDN,然后通过GTP-C消息的可选字段传递给GGSN,但这个是可选的。
  至于IMSI,SGSN在做用户附着的时候,就需要从用户处得到IMSI并完成对用户的鉴权。所以,在做PDP激活的时候,SGSN已经得到用户的IMSI了。
1 Iu连接的建立和释放有很多原因。通常UE只要需要发送一个上行的信令消息例如PDP激活请求就需要首先建立一个Iu连接。而释放例如退出浏览器,或无线质量不好等都会释放。可以参考:http://www.gprshome.com/forum.php?mod=viewthread&tid=1158&extra=page%3D1http://www.gprshome.com/forum.php?mod=viewthread&tid=1156&extra=page%3D1 还有TS23.060的相关章节。
2 Common ID和TEID没有任何关联。
  随便问,不用担心。论坛应该还是比较Open的。
www.gprshome.com: GPRS及移动通信技术学习交流分享平台。

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

站长邮箱|Archiver|51学通信 ( 粤ICP备11025688 )

GMT+8, 2024-5-9 16:13 , Processed in 0.038212 second(s), 14 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部