51学通信技术论坛

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

为什么发往wapgw的数据包要加上GRE封装呢?   [复制链接]

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

跳转到指定楼层
楼主
发表于 2011-6-23 22:38:29 |只看该作者 |倒序浏览
一键分享 一键分享
为什么发往wapgw的数据包要加上GRE封装呢?GRE在Gi能实现什么功能呢?请各位赐教?

Rank: 9Rank: 9

懒

沙发
发表于 2011-6-24 09:54:28 |只看该作者
回复 heropoet 的帖子

  有一个主要原因是WAPGW的地址是10.0.0.172。这个地址是一个私有地址,如果要穿越Gi口后面连接的运营商IP承载网,这是不可路由的。所以要加上GRE的头部。从GGSN一直打到连WAPGW的网关路由器上。你会发现GRE的源和目的地址都是公网地址。
www.gprshome.com: GPRS及移动通信技术学习交流分享平台。

使用道具 举报

Rank: 8

板凳
发表于 2011-6-24 17:28:35 |只看该作者
回复 爱卫生 的帖子

斑竹,GGSN是根据APN的设置来识别是发往WAPGW还是根据IP??

如果是APN选路,那么为什么有的设置wap的APN的用户一定要设置10.0.0.172才能上网呢?
博学之,审问之,慎思之,明辨之,笃行之

使用道具 举报

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

地板
发表于 2011-6-24 20:39:04 |只看该作者
爱卫生 发表于 2011-6-24 09:54
回复 heropoet 的帖子

  有一个主要原因是WAPGW的地址是10.0.0.172。这个地址是一个私有地址,如果要穿越G ...

爱总讲得有道理,我再补充一下我的问题,在观察Gi数据中,除了指向10.0.0.172的包会加上GRE封装,还有指向其它公网IP的数据也加上了GRE封装,如下图

所以我猜想:如果用户是使用为WAP的APN时,GGSN全部加上GRE封装,再转发给相应的GRE路由器处理,GRE路由器解开封装后,如果是指向10.0.0.172,就转发给WAPGW,如果是其它公网IP,就转发出去.
进一步推测:这是不是就可以解释了为什么使用WAP的APN时,终端也可以访问互联网?

以上猜想,请各位指正.
附件: 你需要登录才可以下载或查看附件。没有帐号?立即注册

使用道具 举报

Rank: 9Rank: 9

懒

5#
发表于 2011-6-24 21:16:33 |只看该作者
本帖最后由 爱卫生 于 2011-6-24 21:19 编辑

回复 heropoet 的帖子

这个说法不准确。
1 如果用户在手机里设置了使用cmwap上网,即手机的激活请求里携带的APN是cmwap,则GGSN上一定会把这个请求送到cmwap这个APN,然后加上GRE封装,交给GRE路由器。GRE路由器解封装后交给WAPGW。在GGSN上Gn口和Gi口的路由实例或VPN之间是有映射关系的。
  如果是非WAP的APN添加了GRE包头,我觉得有可能是企业网用户,也是需要加GRE头的。一些对安全要求高的还需要加IPSec头。
  你抓包里有IP地址,如果能在GGSN上看一下配置文件。对应APN的地址分配网段,看是哪个网段就可以确认是哪个APN了。
  我刚在Google上查了下,你抓包里的目的IP和端口58.60.10.101:14000对应的是黑莓手机上访问QQ的应用。黑莓是一个专用的业务,使用专用的APN。既不是cmwap,也不是cmnet。

www.gprshome.com: GPRS及移动通信技术学习交流分享平台。

使用道具 举报

Rank: 9Rank: 9

懒

6#
发表于 2011-6-24 21:23:18 |只看该作者
lsjier 发表于 2011-6-24 17:28
回复 爱卫生 的帖子

斑竹,GGSN是根据APN的设置来识别是发往WAPGW还是根据IP??

1 斑竹,GGSN是根据APN的设置来识别是发往WAPGW还是根据IP??
   答:是根据APN。根据APN的设置来和Gi口的路由实例或VPN进行绑定,再转发到相应的VPN网络中。网络彼此是隔离的。

2 如果是APN选路,那么为什么有的设置wap的APN的用户一定要设置10.0.0.172才能上网呢?
   答:如果是使用wap业务,那一定要设置为10.0.0.172才能上网。这是因为10.0.0.172就是中国移动的WAP网关。只有WAP网关才能处理WAP的协议栈。否则将无法解析手机发出来的WAP报文。就像发邮件,只有邮件服务器才能读懂你的协议栈和邮件一样。

www.gprshome.com: GPRS及移动通信技术学习交流分享平台。

使用道具 举报

Rank: 8

7#
发表于 2011-6-24 22:54:34 |只看该作者
回复 爱卫生 的帖子

现在网络实际应用中,见到一些使用wap的apn的用户,目标地址不是10.0.0.172也可以上网,查阅资料结合以往项目经验,总结如下两种情况,请斑竹鉴定。

一种是,在GGSN到WAP GW之间添加类似FW功能的设备,设置策略修正所有的(或者符合某种规则的)IP为10.0.0.172,然后经由WAP GW处理。

一种是,在WAP GW上设置透传策略,将符合策略的请求透传,同样可以进行业务。

是否是这样呢?爱总,求鉴定!
博学之,审问之,慎思之,明辨之,笃行之

使用道具 举报

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

8#
发表于 2011-6-24 23:32:37 |只看该作者
回复 爱卫生 的帖子

回复太及时了!如果爱总不嫌烦,我就接下去追问了,不搞到清楚,我不罢休呀!{:soso_e113:}


如上图两个包的截图,wap业务和非wap业务都指向同一个地址,(这个地址应该就是GRE路由器吧?)GRE路由器收到这两个数据包后,应该怎么处理呢?是一个转发给wapgw,一个转给互联网?还是两个都转给wapgw,由wapgw把其中一个再转发给QQ服务器?
附件: 你需要登录才可以下载或查看附件。没有帐号?立即注册

使用道具 举报

Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

版主

9#
发表于 2011-6-25 01:27:16 |只看该作者
#8楼的图,相同的地址是GRE路由器接口地址,去了GRE头之后,转发去哪里,由该GRE路由器的路由决定。

使用道具 举报

Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

版主

10#
发表于 2011-6-25 01:29:52 |只看该作者
#8楼的图看好解答#7楼的问题。

使用道具 举报

Rank: 9Rank: 9

懒

11#
发表于 2011-6-25 09:53:23 |只看该作者
  谢谢gprssanling版主的回答哈。我再补充一下我碰到的情况。
回复7楼:
  1 设置为wap APN,但目标地址不是10.0.0.172也可以上网的。这种情况我还没碰到过。因为wap业务肯定是需要WAPGW来处理的。如果在手机里没有设置wapgw 10.0.0.172的地址,则正常情况下应该是上不了网的。你说的GGSN 和WAP GW之间类似防火墙的设备来做重定向。我没有听过。但我觉得这样实现起来可能比较困难。因为这个防火墙需要做IP层的重定向,根据目的IP来做重定向,相当于是策略路由。部署和维护都比较麻烦。
2 WAP GW上设置透传策略?是不是说WAP GW做代理上网?如果这个包能够经过路由到达WAPGW,则WAPGW是可以帮你代理上网的。这个没问题。就像你IE浏览器的代理一样。但前提是你发出来的包目的地址是10.0.0.172,才能由GGSN通过GRE隧道送给WAPGW。

回复8楼:
1 你的包,GRE的源是GGSN,IP为117.136.7.97/98,目的是GRE路由器,为218.203.63.229。gprssanling版主已经回答过了,这个包到达GRE路由器后,要解封装,解封装的顺序是根据下一站从下往上。先看最外层IP头,218.203.63.229,发现是自己的一个loopback地址,则继续解上层GRE包头。将GRE包头去掉后,得到MS发出来的原始IP报文。则根据目的IP本地查找路由表就可以完成转发了。如果是10.0.0.172,就送给WAP GW。如果是别的地址,则按路由表的下一跳来转发,站在路由器的角度,它没那么智能,并不知道10.0.0.172是WAPGW。它就是个机器。
www.gprshome.com: GPRS及移动通信技术学习交流分享平台。

使用道具 举报

Rank: 8

12#
发表于 2011-6-25 10:12:01 |只看该作者
本帖最后由 lsjier 于 2011-6-25 10:15 编辑

[img]file:///C:/Users/Administrator/AppData/Roaming/Tencent/Users/81810880/QQ/WinTemp/RichOle/4PL61V9UK[%7D($UA92TLH]4K.jpg[/img]

各位,存在如上疑惑,麻烦各位指点。
1、GRE解封装后是根据IP来选路?10.0.0.172送WAP GW?
2、解封后,目标IP是公网的,就按照路由列表选择公网的出口?
3、在GRE上,其他的10、172、192等私有IP的地址,是否直接全部丢弃?不丢弃的话,这些IP能找到路由列表出去??
4、GGSN不是根据APN选路的么??怎么理解呢??

各位大侠指点下。谢谢
附件: 你需要登录才可以下载或查看附件。没有帐号?立即注册
博学之,审问之,慎思之,明辨之,笃行之

使用道具 举报

Rank: 9Rank: 9

懒

13#
发表于 2011-6-25 10:39:58 |只看该作者
回复 lsjier 的帖子

   谢谢你的热情哈。这么短还画了个图来说明。我简单说下我的观点:
1 对的。解封装后根据IP来选路。10.0.0.172送给WAP GW。
2 技术上来说是的。但一般在GGSN上,如果是访问公网的业务,应该是使用cmnet这个APN,不会加任何的GRE包头,直接就送到Internet上去了。添加GRE包头都是为了特殊的应用如wap,需要穿越运营商的IP承载网络来特别设计的。涉及到的APN包括cmwap、黑莓、企业APN等等。
3 在上面提到,GRE路由器是为了某些特殊的应用如cmwap,特别加了个GRE头部来实现。最主要的目的其实就是能让私网地址能够在公共的IP网络中传递。如果使用cmnet这个APN时,MS虽然分配到了一个私网地址,但在Gi接口防火墙上会翻译成公网地址,能和公网的服务器直接通信,例如www.163.com。但如果是WAP业务的话,MS的地址是私网地址,假设是10.x.x.x,而它的服务器就是WAP网关也是私网地址10.0.0.172,但在GGSN和WAP网关之间肯定不是直连的,可能需要跨越一个大的IP承载网络,这个IP网络可能是一个使用公有IP的网络,即使使用私有地址,仍有可能10.x.x.x网段的私有地址,这就和MS和WAP网关的地址重了。(想改造也很难,因为IP网络是先出现的,GPRS业务是后出现的,IP网络早就部署多年,不易全网改造)那为了实现这个10网段的地址在公有IP承载网络中的穿越,就一定要使用VPN技术将其封装起来,有很多种都可以实现,但GRE是最简单的一种,负荷最小。除此以外,IPSec也能实现类似的功能。所以GRE路由器左边连GGSN的接口一定或可能是一个公网地址,就像截图里看到的一样,这个地址是218.203.63.229。而GRE路由器后面的网络是连接WAP网关的一个局域网,它是一定会有10.x.x.x网段的路由的。否则就到不了WAP网关了。至于其他172,192.168私网网段,GPRS业务是不会使用到的,这样的数据包不可能由MS发出来,经GGSN到达GRE路由器(除非是本地的网管网段)。因此GRE路由器不一定有这两个网段的路由,就会被直接丢弃了。但前提是GRE报头解出来,根本就不可能出现172,192.168网段。
4 GGSN是根据APN选路。对的。GGSN可以根据TEID和APN的一个映射关系,将Gn接口的GTP-U报文和某一个APN关联。这是第一步。然后,查找APN和路由实例及VPN的对应关系(每个VPN都对应Gi接口的PDN网络,每个VPN或路由实例都是完全独立的),找到了以后,就将收到的这个GTP-U报文去除GTP包头后,转给相应的路由实例。这是第二步。第三步是查找路由实例中的路由配置,找到下一跳接口,从接口上发出去,如果路由实例里配置了还需要增加GRE头部,则进行GRE的封装。
www.gprshome.com: GPRS及移动通信技术学习交流分享平台。

使用道具 举报

Rank: 8

14#
发表于 2011-6-25 12:40:13 |只看该作者
回复 爱卫生 的帖子

非常感谢爱总的答复,已经明白其中奥义,膜拜。


关于第三点,现网中确实发现有手机终端直接访问手机终端的情况,即172访问172的地址(同一个GG下不同用户),全部都失败了的。
博学之,审问之,慎思之,明辨之,笃行之

使用道具 举报

Rank: 9Rank: 9

懒

15#
发表于 2011-6-25 12:46:00 |只看该作者
本帖最后由 爱卫生 于 2011-6-25 12:47 编辑

回复 lsjier 的帖子

  是的。这种情况是绝对不允许出现的。现在厂家的GGSN上都打开了这样的过滤开关。绝不允许一个MS直接通过GGSN访问另一个MS。你这样相当于是把GPRS当成不要钱的IP局域网,GPRS就变成一台以太网交换机了。跑什么MSN,QQ都可以,两部手机还可以装SKYPE直接打电话。运营商则一分钱流量费和电话费都收不到,造成大量话费流失。这个是在GGSN上的配置决定的。即MS到MS的过滤特性。
www.gprshome.com: GPRS及移动通信技术学习交流分享平台。

使用道具 举报

Rank: 8

16#
发表于 2011-8-17 13:47:56 |只看该作者
回复 爱卫生 的帖子

有一个问题我没想通啊,还望指点。
就是MS访问WAP业务时,例如163.com(假设IP:220.181.8.191),在IP层首先会封装源IP:MS的地址,和目的IP:wap网关10.0.0.172。随后进行GRE封装,但要访问的业务地址,220.181.8.191肯定也要封装上去,因为当业务请求消息到达wap网关后,网关会根据这个业务地址进行转发,难道在第一次封装时会同时封装两个目的IP。所以我想知道的是当手机通过wap上网时,IP具体是如何封装的,封装的先后顺序是怎样的。给个链接也行啊,谢谢。
千里之行,始于足下。

使用道具 举报

Rank: 9Rank: 9

懒

17#
发表于 2011-8-17 17:18:49 |只看该作者
回复 shanyy11 的帖子

   正常访问www.163.com的数据包应该通过cmnet这个APN来访问。因为它是面向Internet的。cmwap主要是运营商的自由品牌业务和其他内容提供商的WAP业务。当然,公网的www.163.com也可以通过cmwap这个APN来访问,这依靠的是WAP网关帮手机做的代理。
  但这里提到的例子例如IP地址220.181.8.191是163.com的server IP。但通过cmwap访问的时候,MS的数据包并不会封装220.181.8.191这个IP地址,仍然是10.0.0.172。或者这么说,只要是基于cmwap这个APN的所有数据包,那么最上层应用部分的目的IP只会是10.0.0.172。这个10.0.0.172相当于就是手机在应用层上的下一跳网关。所以这里提到的通过cmwap这个APN访问公网220.181.8.191这个地址。实际上还是先将请求交给WAP网关,WAP网关再去访问Internet当中的220.181.8.191,然后将得到的网页通过Gi接口发给GGSN交给手机。
  协议栈是这样的:
wtp/wsp  
UDP
IP  (源IP是手机IP,目的IP是10.0.0.172)
GRE
IP (源IP是GGSN Gi接口公网IP,目的IP是离WAP网关最近的路由器公网IP)
ETH
PHY
  放一个包供参考。


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

使用道具 举报

Rank: 2Rank: 2

乐于助人

18#
发表于 2011-10-7 00:18:19 |只看该作者
回复 爱卫生 的帖子

如果不封装163.com的IP,WAPGW是如何知道UE想访问那个公网的Server呢?

使用道具 举报

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

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

GMT+8, 2024-4-25 14:01 , Processed in 0.038412 second(s), 13 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部