本帖最后由 爱卫生 于 2012-4-23 19:21 编辑
关于3GDT的原理,在论坛中有几篇帖子介绍了。可以参考3GDT技术帖子以及现网经验分享中也有3GDT的部署和经验分享。这里的话,我们主要通过一个抓包实例来加强对3GDT技术下的PDP激活流程的理解。
3GDT的信令流程图如下所示:
在看对应的抓包之前,有必要了解下物理和逻辑拓扑图,这样我们看抓包才能看得更清晰明白。拓扑图如下:
对应的包如下: 下面我们来看一下对应的建立步骤,和理论上介绍的流程对比一下,看是否一致: (注:我们在这里只重点关注3GDT的建立过程,至于PDP上下文激活请参考版块中有专门的PDP激活实例介绍”。 1)UE发起PDP激活请求给SGSN,RNC收到后加上RANAP层的信息,并将UE的这个NAS PDU作为直传消息(Direct Transfer)传递给SGSN。并加入了RAI和SAI等位置信息告知SGSN。其中OPC8194为RNC的,DPC为1030是SGSN的。
2)SGSN收到UE的PDP激活请求后,进行相应的检查。如果没有问题,将发送Create PDP Context Request消息给GGSN,发给GGSN的目的IP为172.17.5.41,这是GGSN上的GTP-C地址,SGSN需通过DNS解析得到。这个请求消息里还为GGSN分配了用于下行方向信令和数据传递的SGSN地址和TEID信息。 其中分配的控制面信息为: SGSN IP:192.168.60.1 TEID为:0x2d300705 分配的用户面信息为: SGSN IP:192.168.60.11 TEID为:0x2d300785。
3)GGSN收到后,确认没有问题。给SGSN回应Create PDP Context Response。在里面,同样GGSN也给SGSN分配了用于上行流量和信令的GGSN地址和TEID信息。 其中分配的控制面信息为: GGSN IP:172.17.5.42 TEID为:0x5c001310 分配的用户面信息为: GGSN IP:172.17.5.50 TEID为:0x5c001315。 并且为UE分配了一个IP地址为:10.23.192.2。
4)SGSN开始请求RNC建立对应的RAB用于用户面的承载。发送RAB-Assignment消息给RNC,在这个消息里,SGSN将把GGSN分配的用户面地址和TEID信息告诉RNC,即172.17.5.50和ox5c001315。包含在transportlayerinformation IE中(点开#4或号包能看到)。因此RNC就可以在RAB建立后开始发送上行数据了。直接将上行数据发送到这个地址和TEID对应的GTP-U隧道中就可以了。
5)RNC建立RAB并且给SGSN回应RAB-Assignment Response。点开RANAP层后,你就可以看到RNC将自己用户面的地址和TEID告诉了SGSN。这里分别是:10.36.90.6和0x00000067。
6)因为要建立直接隧道,所以SGSN要把RNC对应的用户下行数据的TEID和IP告诉GGSN,用于下行用户数据的发送。因此SGSN给GGSN发送Update PDP Context Request消息,里面包含了从第5步获知的RNC用于下行方向用户面地址和TEID。
7)GGSN收到后,更新下行方向地址和TEID信息,本来应该是在第3步里收到的用户面信息为: SGSN IP:192.168.60.11 TEID为:0x2d300785。将替换成第6步中更新的值10.36.90.6和0x00000067。当然,GGSN并不知道实际上和自己建立GTP-U隧道的已经不是SGSN,而变成RNC了。SGSN再此使用了金蝉脱壳的计谋,自己逃了。GGSN回应Update PDP Context Response消息进行确认。(GGSN其实还是知道的,在Update PDP Context Request消息中有DTI标志位为1代表使用了3GDT)。
8)SGSN给RNC回送Activate PDP Context Accept消息。来确认关于这个UE的PDP上下文的成功建立。并且携带了GGSN分配给UE的IP地址。 |