51学通信技术论坛

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

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: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

特殊贡献奖

沙发
发表于 2011-4-14 00:52:19 |只看该作者
版主配合着抓包对TEID的解释对于入门者来说真叫一个绝!想忘记都难。

使用道具 举报

Rank: 9Rank: 9

懒

板凳
发表于 2011-4-14 13:45:52 |只看该作者
回复 Albert 的帖子

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

使用道具 举报

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

特殊贡献奖

地板
发表于 2011-4-14 14:20:59 |只看该作者
哈哈,以后托的队伍会越来越强大的。{:soso_e120:}

使用道具 举报

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

特殊贡献奖

5#
发表于 2011-4-15 13:09:02 |只看该作者
对了,版主,在某些资料中还看到TID(隧道标识),由IMSI与NSAPI组成,不知道和TEID有什么区别啊。郁闷了。呵呵

使用道具 举报

Rank: 9Rank: 9

懒

6#
发表于 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: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

特殊贡献奖

7#
发表于 2011-4-26 13:33:29 |只看该作者
请问下这是在哪个接口抓的包啊?在TCP三步握手建立连接的过程中用到了外部PDN的IP地址。这个地址手机终端知道吗?好像看之前的消息里没有这个IP地址的出现。

使用道具 举报

Rank: 9Rank: 9

懒

8#
发表于 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: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

特殊贡献奖

9#
发表于 2011-4-26 14:25:07 |只看该作者
那就假如用户访问“wap.sohu.com",流程是怎样的?
1、 MS---> SGSN, 送上来APN, 动态PDP地址分配。
2、 SGSN---> GGSN,GGSN的IP地址是SGSN根据APN去DNS解析的.
3、 GGSN也DNS解析,得到sohu网的IP地址。
4、 GGSN把自己的IP地址和给手机分配的地址发给SSGN.
5、 SGSN把给MS的地址通知MS.
6、 MS需要在自己和sohu服务器建立TCP连接,这时候它还是用的是SOHU的域名去建立连接的。是不是这样理解。那这时候SYN消息里的对端IP地址应该是谁呢?
      以后MS还有后续的访问sohu服务器,一直都不需要SOHU服务器的IP地址吗?它只管往SGSN送?然后SGSN在建好的GTP隧道传送。由GGSN解包,把用户的PDU送给sohu服务器?

      我不知道自己是不是表述清楚了,谢谢版主您的回答。我受益匪浅!

使用道具 举报

Rank: 9Rank: 9

懒

10#
发表于 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: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

特殊贡献奖

11#
发表于 2011-4-26 15:11:03 |只看该作者
还是这个问题哦,有可能啰嗦了。我自己重新整理了下,您再帮我看看。

假定中国移动用户访问“www. sohu.com", 期间涉及两个流程。

PDP激活流程:
1、 MS---SGSN: 送上APN(CMNET),并且要求终端PDP地址动态分配
2、 SGSN---GGSN: DNS解析得到GGSN的IP地址,并且附上自己的IP地址
3、 GGSN---SGSN: 下发GGSN, DNS SERVER和给手机终端分配的IP地址
4、 SGSN---MS: 下发MS和DNS server的IP地址

业务访问: 输入”www.sohu.com"
5、 MS---DNS SERVER: 解析得到sohu网站的IP地址
6、 MS---SOHU: 三步握手建立TCP连接,其中SYN: 源IP=MS, 目的IP=sohu
7、 访问sohu,经过Gb口BSSGP的封装和Gn口的GTP的隧道。

我还有两个问题,第一个,在第5步中,MS是经过SGSN访问DNS server吗,还需不需要绕到GGSN的?因为已经有了DNS server的IP,可以直接路由过去。 第二个问题,如果我先后访问了sohu和sina两个网站,这时候是在同一个PDP里,但建立两个TCP连接。因为都是通过CMNET访问的

不知道这样理解对不对啊。

使用道具 举报

Rank: 9Rank: 9

懒

12#
发表于 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: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

特殊贡献奖

13#
发表于 2011-4-26 15:54:24 |只看该作者
谢谢您的鼓励,突然觉得学起来有动力了{:soso_e100:}

使用道具 举报

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

特殊贡献奖

14#
发表于 2011-4-26 16:02:36 |只看该作者
我终于想明白了,之前SGSN获取GGSN的地址用的是GPRS网络内部的DNS服务器;而后面解析internet网络中的网站域名用的是internet网络的DNS服务器,所以必须经过GGSN的。一下子转不过弯来了,谢谢您。

使用道具 举报

Rank: 9Rank: 9

懒

15#
发表于 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: 2Rank: 2

16#
发表于 2011-5-23 11:25:47 |只看该作者
版主说的真的很好,这个包是创建一个pdp上下文传输G-PDU的,版主能不能帮我抓个包:创建一个pdp上下文之后,再创建第2个pdp上下文(跟第一个pdp上下文有相同的APN),再创建第3个pdp上下文(跟前两个pdp上下文的APN不同)。最好这3个pdp上下文都有用户面数据传输。
我是新人,好多专业术语理解得不到位,问题语言组织的不好。我对GTP协议的流程有了个大概的理解,但好多细节的问题还没弄懂,所以想抓个包仔细分析下。

使用道具 举报

Rank: 9Rank: 9

懒

17#
发表于 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: 2Rank: 2

18#
发表于 2011-5-23 13:15:35 |只看该作者
嗯,版主下次如果有时间,有条件的话可以帮我把3个包都抓一下,我想会解决我很多问题的。
谢谢版主无私的回答。

使用道具 举报

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

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

GMT+8, 2024-4-27 18:29 , Processed in 0.063565 second(s), 13 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部