51学通信技术论坛

标题: GTP协议循序渐进(三)----通过实例了解TEID [打印本页]

作者: 爱卫生    时间: 2011-2-10 14:05:09     标题: GTP协议循序渐进(三)----通过实例了解TEID

  要了解GTP协议,一定要了解GTP协议的作用。
  根据它的名字,可以推断出,首先它是一个隧道协议,是在GSN节点之间建立的,用于传递用户数据的payload。这个隧道需要穿越运营商GPRS的骨干网。那既然是这样,GTP协议就应该至少具备以下基本功能:
   由于这个隧道是用于传递GPRS的用户数据的,那首先要能够标识出这个隧道是属于哪个用户的,否则,每个用户在上网时都会有自己的GTP-U隧道,成千上万个用户都在SGSN-GGSN之间传递,如果在GGSN这边解封装,还原成普通IP包的时候不能区分出用户,就无法将用户的数据包放到相应的APN里去传递了。
   这个用于区分用户隧道的标识就是TEID。我们通过一个例子来了解一下TEID。
[attach]15[/attach]
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。



作者: Albert    时间: 2011-4-14 00:52:19

版主配合着抓包对TEID的解释对于入门者来说真叫一个绝!想忘记都难。
作者: 爱卫生    时间: 2011-4-14 13:45:52

回复 Albert 的帖子

可别这么说啊,再这么说人家都会以为你是托呢!呵呵!{:soso_e100:}

作者: Albert    时间: 2011-4-14 14:20:59

哈哈,以后托的队伍会越来越强大的。{:soso_e120:}
作者: Albert    时间: 2011-4-15 13:09:02

对了,版主,在某些资料中还看到TID(隧道标识),由IMSI与NSAPI组成,不知道和TEID有什么区别啊。郁闷了。呵呵
作者: 爱卫生    时间: 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:}

作者: bestflora    时间: 2011-4-26 13:33:29

请问下这是在哪个接口抓的包啊?在TCP三步握手建立连接的过程中用到了外部PDN的IP地址。这个地址手机终端知道吗?好像看之前的消息里没有这个IP地址的出现。
作者: 爱卫生    时间: 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来解析。

作者: bestflora    时间: 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服务器?

      我不知道自己是不是表述清楚了,谢谢版主您的回答。我受益匪浅!
作者: 爱卫生    时间: 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网关。

作者: bestflora    时间: 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访问的

不知道这样理解对不对啊。
作者: 爱卫生    时间: 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网关后面的业务。
   不用怕有问题,有问题总比没有问题好。我相信谁都肯定是有问题的。而且我相信,有可能你的这个问题别人也想问,所以你也帮助了别人。这也是件好事啊!

作者: bestflora    时间: 2011-4-26 15:54:24

谢谢您的鼓励,突然觉得学起来有动力了{:soso_e100:}
作者: bestflora    时间: 2011-4-26 16:02:36

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

回复 bestflora 的帖子

   对对对,呵呵。这也怪我。没注意到这个细节。SGSN查询DNS存在于运营商内部网络,可以是私有地址。只为运营商自己的网元节点提供服务,不对用户开放。而Gi口后面的DNS Server是在Internet当中,是为所有的个人用户开放,包括ADSL用户和手机终端。你仔细对比其实可以发现,MS做激活后拿到的DNS Server地址和你在家里用ADSL上网拿到的DNS Server地址有可能会是一样的。肯定是一个公网地址,例如211.xxx.xxx.xx。
作者: chenhaonan    时间: 2011-5-23 11:25:47

版主说的真的很好,这个包是创建一个pdp上下文传输G-PDU的,版主能不能帮我抓个包:创建一个pdp上下文之后,再创建第2个pdp上下文(跟第一个pdp上下文有相同的APN),再创建第3个pdp上下文(跟前两个pdp上下文的APN不同)。最好这3个pdp上下文都有用户面数据传输。
我是新人,好多专业术语理解得不到位,问题语言组织的不好。我对GTP协议的流程有了个大概的理解,但好多细节的问题还没弄懂,所以想抓个包仔细分析下。
作者: 爱卫生    时间: 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激活流程及实例”
   至于用户面,在本贴的抓包文件中就有,你可以结合这和上面帖子中的附件一起看可能就明白了。不用担心,我也是新人过来的,不过现在还有很多不懂的地方,我创建论坛只是想搭一个平台,一个架子。然后通过我的努力发言,来激起大家一起来共同交流、分享。呵呵。所以,我看到了,一定会回帖的。不管我懂不懂,懂的话告诉你答案,不懂则告诉你我的一些基本理解,和建议的参考文档或方案。

作者: chenhaonan    时间: 2011-5-23 13:15:35

嗯,版主下次如果有时间,有条件的话可以帮我把3个包都抓一下,我想会解决我很多问题的。
谢谢版主无私的回答。
作者: weishengzi    时间: 2011-7-26 14:24:07

回复 爱卫生 的帖子

GTP v0版本中的TID 确实如您所说,有imsi+nsapi组成,并且也可以标识哪个用户的哪路PDP。
但v0的TID跟v1的TEID不是一回事。

v0版本有2字节的FLOW LABEL (DATA I和signalling),应该对应于v1版本的teid吧。

作者: 爱卫生    时间: 2011-7-27 12:28:07

weishengzi 发表于 2011-7-26 14:24
回复 爱卫生 的帖子

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

  谢谢指正。我对之前的GTPV0确实没有太深入的研究。因为现在已经没有用了。看来学习也不能太功利。呵呵!
作者: hetengda    时间: 2011-8-2 11:15:27

刚开始学习GTP这一块,看了楼主的文章,讲的很精辟,比我自己慢慢啃标准,效果好很多。
作者: yinxueai    时间: 2011-8-14 22:09:21

TEID,我来啦。。。。对你,模糊很久啦。。
作者: yinxueai    时间: 2011-8-14 23:08:37

楼主,卫生哥对你真好,回答你的问题,真仔细,我羡慕羡慕。。。哈哈哈
作者: yinxueai    时间: 2011-8-14 23:09:05

我也学会啦。。。
作者: yinxueai    时间: 2011-8-14 23:34:24

我也学会啦。。。不同的DNS Server 讲的很到位
作者: shanyy11    时间: 2011-8-15 15:51:47

回复 爱卫生 的帖子

太透彻了,受益匪浅。
作者: df99910    时间: 2011-8-29 09:32:47

楼主,我有一个问题很好奇,对于每个终端来说,是否可以认为SGSN就是他的网关;然后GGSN又是多个SGSN的网关?
作者: df99910    时间: 2011-8-29 09:48:17

还有一个问题,就是有没有可能同一时刻,两个终端都分配的是同一个IP地址?
作者: 爱卫生    时间: 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隧道进行映射,从而发送给正确的手机用户。

作者: df99910    时间: 2011-8-29 14:04:56

本帖最后由 df99910 于 2011-8-29 14:05 编辑

谢谢楼主,另外还有点疑问
2. 手机上网时,PDP被激活后,到被去激活前,IP地址是唯一的话(就像家庭用户上网一样),那为什么还要使用TEID这么一个额外的字段,搞不明白

作者: 爱卫生    时间: 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。

作者: df99910    时间: 2011-8-29 15:45:23

噢,了解了,有些设备不认识IP层,只认识GTP层,这时TEID就是必须的了
作者: wbl070818    时间: 2011-9-9 02:11:57

LZ,关于你上面的抓包,应该是在sgsn上抓的包吧。对于#1,应该是ms通过Gb口透传到sgsn上的,关于BSSGP协议的下层是Network server协议,这个怎么是基于IP的,这个报文上有源ip 和目的ip +端口号?有点晕,感觉跟协议有点对不上,还请帮忙解释一下?
作者: 爱卫生    时间: 2011-9-9 07:58:12

回复 wbl070818 的帖子

  是在以太交换机上端口镜像抓的。不过和你说的在SGSN上抓的差不多的。
  协议栈是Gb Over IP啊。现在现网很多都已经改造成Gb Over IP了。原来都是用的Gb Over FrameRelay的。Gb Over IP的规范在TS48.016中有定义。

作者: dwlnet    时间: 2011-10-6 17:33:59

咱们这个论坛真的不错,尤其是爱版主的详细准确的解答,让人看了后受益匪浅。
我也是初学GPRS,看了版主的举例报文后也有几个小问题:
1.版主说#1的报文是MS发送给SGSN的,这个说法是否是比较模糊和笼统的呢?因为按照版主给出的处理流程,是否应该是MS---BSC---SGSN,是否实际上是BSC代表MS和SGSN通讯的呢?
2#1里的IP地址都是哪个网元的呢?SRC IP是BSC的么?DST IP是SGSN的Gb接口IP的么?
3.另外看到#1的报文里封了很多层,有GNS,BSSGP,MS-SGSN LLC,GSM A-I/F等等,看得比较晕,版主可否简单解释下呢?

谢谢啦~~
作者: 爱卫生    时间: 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的协议栈了。

作者: dwlnet    时间: 2011-10-9 00:08:55

谢谢斑竹的详细回复,我好好学习下再
作者: yinxueai    时间: 2011-10-18 23:58:29

想了一个新的解释:

关于TEID的描述:

sgsn和GGSN之间通道的建立和标示

我们知道在create pdp context req 时候,sgsn会携带本端的pdp address(ctl 和 data),TELD(ctl 和 data)给ggsn

同时,create pdp context rep 时候,ggsn会把本端的 pdp address (ctl 和 data),TELD(ctl 和 data)发给sgsn

为了便于理解,我们可以举一个例子来说明,就像建立高速公路

比如从 上海 到 北京 ,那么 ,就得先修建 两者之间的通道 ,就对应我们这里的 sgsn 和 ggsn 的pdp address(ctl 和 data),

但是道路建立好了之后,我们的车子怎么知道怎么进入这个通道呢,那么就要靠 路标 来告知驾驶员,这个路标就是我们这里

的TEID了 , 有了这个TEID ,我们就知道进入哪个通道去进行传输了
作者: 爱卫生    时间: 2011-10-19 10:47:29

回复 yinxueai 的帖子

  哈哈,有道理,思路很宽哦!谢谢!
作者: worldwind    时间: 2011-11-23 20:33:54

最近接手一个项目,需要抓起lu-ps域的信令和用户消息,因为对无线基本没有接触,看了一些信令流程,不是很清晰,今天刚搜到版主的这个文章,对SGSN-GGSN之间的Gn口的TEID总算明白了一点。版主这里是GPRS的,不知道能否请教一个WCDMA下的lu-ps口里面的信令面RANAP 和用户面GTP-U 是怎样跟 SGSN-GGSN之间创建的TEID以及GTP-U联系起来的,多谢了~!
作者: 爱卫生    时间: 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上下文的映射关系。

作者: worldwind    时间: 2011-11-23 21:21:20

不知道版主是否有  ms->RNC->GSGN->GGSN  手机上网(或者观看视频)全业务的流程。我这边没有真实的环境,所以看不到一个全流程。如果需要在Iu-ps口抓取消息,是针对端口抓包还是IP网口呢?我们这边要求只能在Iu-ps抓包,多谢~!
作者: 爱卫生    时间: 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

作者: worldwind    时间: 2011-11-23 21:59:32

多谢版主~!
刚才看了一下上述里面的两个流程,在lu-ps口的ranap协议流里面没有看到手机的IMSI/MSISDN,只在创建PDP的时候有,在Iu-ps口是否可以获取到手机的IMSI/MSISDN? 也许是因为我没有把某些信息串联起来,所以没有识别出来?
作者: 爱卫生    时间: 2011-11-23 22:54:04

回复 worldwind 的帖子

  IMSI和MSISDN是看不到的。标识用户将使用临时标识P-TMSI。用于防止IMSI被非法窃ting。
作者: worldwind    时间: 2011-11-24 09:04:29

回复 爱卫生 的帖子

既然Iu-ps口没有这个两个信息,那么Gn口里面创建PDP的时候,那里面的IMSI/MSISDN是怎样通过ms传递过来的呢?对无线接口不熟悉,问的有些小儿科,别笑话啊:)

作者: worldwind    时间: 2011-11-24 10:46:42

经过进一步的了解,在RANAP的COMMON ID的消息里面包含有IMSI,但依然没有MSISDN,所以我跟不解了:
1、手机用户进行一次浏览网页(或观看一个视频)时,Iu口是在什么时候进行Iu信令连接建立/释放的??
2、这个COMMON ID里面的消息跟用户面的TEID是否有着某种对应关系?
多谢版主了~!
作者: 爱卫生    时间: 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的。

作者: junuse    时间: 2011-11-28 23:57:58

爱卫生真是博学啊,赞一个
作者: Albert    时间: 2011-12-2 18:10:03

我在现网用sequence number 把相关PDP流程对应出来发现GTP-U的包(用户的数据流量,访问某个网站)中的TEID怎么不是CREATE PDP CONTEXT RESPONSE 消息中的 TEID DATA的值呢?爱总.
作者: 爱卫生    时间: 2011-12-2 20:24:12

回复 Albert 的帖子

  应该是的。能给个抓包吗?谢谢!
作者: smilever081508    时间: 2011-12-7 13:33:08

我也是刚刚接触这块儿的知识,有些基础的东西不太清楚,想问下楼主。
1.您给的抓包流程里#1,#2 SGSN的IP地址不一样,分别是10.64.21.130和192.169.100.1,为什么呢?
2.是不是不同的APN对应不同的GGSN,因此SGSN需要通过DNS解析出相应的GGSN的IP?
3.PDP上下文怎么理解?麻烦您用通俗的话解释一下。
多谢楼主!
作者: 张沿    时间: 2011-12-13 11:06:43

本帖最后由 张沿 于 2011-12-13 14:36 编辑

有些资料说TEID由NSAPI和IMSI共同组成,,这句话怎么体现?


已经看明白了

作者: admin    时间: 2011-12-13 21:04:21

1.您给的抓包流程里#1,#2 SGSN的IP地址不一样,分别是10.64.21.130和192.169.100.1,为什么呢?
   前者是Gb口的IP。后者是Gn口的IP。前者和BSC通信,后者和GGSN通信。
2.是不是不同的APN对应不同的GGSN,因此SGSN需要通过DNS解析出相应的GGSN的IP?

   不同的APN可以对应不同的GGSN。但一个GGSN也可以对应多个APN。是的,SGSN需要通过DNS解析GGSN的IP。
3.PDP上下文怎么理解?麻烦您用通俗的话解释一下。

  PDP上下文就是在SGSN和GGSN上建立的一个关于用户会话的关联。在建立这个关联的时候,GSN要写上为这个用户分配IP、建立用户面的会话等。用户的信令和数据都在这个PDP上下文中传递。在Gn口对应的就是一个GTP的Tunnel。
4TEID由NSAPI和IMSI共同组成?
  这个是GTPV0。我们现在都用的是GTPV1的。

作者: gprs2012    时间: 2012-2-6 16:43:39

楼主 看了下你抓的包 信令 ,有些眉目了,当时我对着你的描述:
就是第三个包:同样是分控制和用户平面。值分别为:0x010000085和0x010000080。
第五个包:SGSN使用GTP-U隧道将用户数据封装起来,同时里面携带的TEID值是0x010000085,也就是GGSN分配给SGSN使用,用来标识这个用户上行方向GTP-U隧道的TEID值。 这个是gtp-c吧?要不前后矛盾?
不过还是第一次看见这么清晰的数据包过程,感谢分享
作者: 爱卫生    时间: 2012-2-7 12:16:00

85是GTP-U,80是GTP-C啊。不矛盾啊,第5、7、8个包都是SGSN给GGSN发的上行方向GTP-U的包。你说说和哪里矛盾了?
作者: Mr_Muscle    时间: 2012-3-27 09:59:09

楼主,向您所说的,手机访问Internet的DNS服务器地址是由GGSN分配给SGSN,SGSN再分配给手机的,那么GGSN分配的DNS服务器地址是在GGSN预先配置好的吗?
在您给的包中,怎么没有发现那个流程里面网络侧有给手机侧下发DNS地址呢(在PCO字段里面有看到DNS地址,但是为0.0.0.0)?

学艺不精,还希望楼主给予指点迷津啊~
作者: 爱卫生    时间: 2012-3-27 17:13:55

Mr_Muscle 发表于 2012-3-27 09:59
楼主,向您所说的,手机访问Internet的DNS服务器地址是由GGSN分配给SGSN,SGSN再分配给手机的,那么GGSN分配 ...

是的。在GGSN上进行配置。这个是Lab里抓的包,别被误导了。放一个现网的PDP激活Accept消息。可以看一下。

[attach]1169[/attach]

rf5格式,需要进行解码才能在wireshark上打开。

分两步:
1 参照
Wireshark关于K12抓包文件设置说明http://wiki.wireshark.org/K12 来设置好wireshark。具体是在“Edit”菜单中选择Preferences->Protocols->k12xx 。再点Edit,加入一个描述。matching 填gprs_gb,protocol填fr。
2 接第一步,不要关窗口。选择Preferences->Protocols->FR,在右边的Encapsulation中选择“GPRS Network Service”就可以解码了。默认的话,Wireshark将认为你这个包是数据网络中的FR数据包。不给予解析NS层及以上属于GPRS的协议栈。


作者: Mr_Muscle    时间: 2012-3-27 23:01:41

回复 爱卫生 的帖子

真心地感谢楼主的耐心回答,无以回报啊!{:soso_e130:}只能好好加倍学习,为实现社会主义现代化做出贡献!



作者: galaxy    时间: 2012-4-10 16:17:01

需要学习下了
作者: 小丙张嘎    时间: 2012-7-2 13:06:59

先标记,明天内看完搞定这个TEID。
作者: gaoyang_fei    时间: 2012-10-4 13:12:32

爱卫生 发表于 2011-4-15 13:18
回复 Albert 的帖子

  不要被名词弄花了眼睛。其实TID和TEID是一个东西。只不过早期的GTP版本为版本0,控 ...

两个primary pdp context 的地址是不同的两个ip吧
作者: gaoyang_fei    时间: 2012-10-9 14:55:59

爱卫生 发表于 2011-11-24 15:12
在PDP激活的过程中,实际上并不需要IMSI和MSISDN。特别是后者,这在电路域里很重要,但在分组域里并不需 ...

请教下 一个网内的两个SGSN给GGSN侧分配的TEID会重复吗?会不会想GGSN给MS侧分配ip的时候分配给各个GGSN能分配ip网段是不同的?从而使用不同MS的ip不会重复?
作者: tony9492    时间: 2012-11-13 17:30:02

爱卫生 发表于 2011-4-26 14:44
回复 bestflora 的帖子

    其实这个例子里的包分成两部分来看。一部分为PDP上下文激活。另一部分为业务 ...

爱总,我想问个问题:
Wap流程中,用户发起的TCP连接目标ip是WAP网关IP?还是外网的sp服务器IP?(TCP三次握手只是在WAP网关内么?)
wap类tcp连接的建立经历的网络节点有哪些,流程交互是怎样的?

作者: ggsntier2    时间: 2013-3-29 10:37:56

太好了,非常详细的讲解
作者: net_rain    时间: 2013-6-5 09:33:39

帖子中的附件,咋下不了了???
提示如下:
[抱歉,只有特定用户可以下载本站附件]
作者: decembersn    时间: 2013-6-5 10:37:41

请教下,有个疑问,在V0中,TID是IMSI+NSAPI组成,在V1中TEID有特殊的组成规则么?还是随机生成的?
谢谢啊
作者: fling_work    时间: 2013-6-7 10:07:48

学习一下
作者: amr    时间: 2013-10-2 17:12:28

学习一下,我正在看LTE的协议,正好看到TEID有些不懂的地方,待会我发上来,希望得到楼主的答复。
作者: 空谷驹    时间: 2013-10-3 20:04:33

为什么里面的附件提示只有特定的用户才可下载呀?是否我的权限不够,楼主
作者: songyuwen    时间: 2013-11-13 15:55:09

楼主你好,不知道你还在不在这个论坛出现了…
我有一个关于TEID的问题,在更新PDP上下文的时候,TEID号会变化么?
还有,这个帖子的附件我没办法下载,可能是因为是新人,所以权限什么的不够吧…如果可以的话,可以给我发一份么?
邮箱是songyuwen0808@126.com
作者: 爱卫生    时间: 2013-11-13 21:34:22

songyuwen 发表于 2013-11-13 15:55
楼主你好,不知道你还在不在这个论坛出现了…
我有一个关于TEID的问题,在更新PDP上下文的时候,TEID号会变 ...

在的,一直在,从未消失。已经将该帖附件阅读权限修改为1,所有注册用户均可以浏览和下载。欢迎自行下载。

另外,在PDP上下文更新过程中,TEID可以改变。


作者: Harrison    时间: 2013-11-28 14:07:00

楼主你好,我是GPRS新手,请教下GTP和DCC怎么关联起来,是不是可以说成MS访问网站,DCC怎么给它计费?非常感谢!
作者: 爱卫生    时间: 2013-11-28 18:09:40

Harrison 发表于 2013-11-28 14:07
楼主你好,我是GPRS新手,请教下GTP和DCC怎么关联起来,是不是可以说成MS访问网站,DCC怎么给它计费?非常感 ...

GTP可以通过端口号来区分控制用户面报文,另外包头以及IE部分都可以做过滤条件。DCC依赖于diameter,也可以根据包头和AVP过滤。中间加一个or关键字过滤,就关联起来了。


作者: Harrison    时间: 2013-11-29 10:09:00

爱卫生 发表于 2013-11-28 18:09
GTP可以通过端口号来区分控制用户面报文,另外包头以及IE部分都可以做过滤条件。DCC依赖于diameter,也可 ...

谢谢,我们目前分析的数据包是独立的,如GTP-C、GTP-U和Diameter,都是从特定的端口去读取大量的数据,然后写C++代码进行独立的解析。我用GTP-C里面的IMSI和Diameter里的User-name(IMSI)关联,GTP-U里的TEID和GTP-C里的TEID关联,这样就把三个协议串起来了,可以这样吗?数据都是放后台缓存处理的,最后再放到数据库中。

作者: ccc123    时间: 2014-5-31 22:30:31

感谢楼主,学到很多知识了。。。
作者: ouwangqiu    时间: 2014-6-26 17:20:32

本帖最后由 ouwangqiu 于 2014-6-26 17:22 编辑

多谢斑竹分享

作者: omcmaster    时间: 2014-9-16 21:00:17

真的很荣幸结实咱们这个论坛啊
作者: longyoudong    时间: 2015-8-20 09:16:14

此贴对新人非常有用,感谢。。。




欢迎光临 51学通信技术论坛 (http://www.51xuetongxin.com/bbs/) Powered by Discuz! X2