51学通信技术论坛

标题: 为什么发往wapgw的数据包要加上GRE封装呢? [打印本页]

作者: heropoet    时间: 2011-6-23 22:38:29     标题: 为什么发往wapgw的数据包要加上GRE封装呢?

为什么发往wapgw的数据包要加上GRE封装呢?GRE在Gi能实现什么功能呢?请各位赐教?
作者: 爱卫生    时间: 2011-6-24 09:54:28

回复 heropoet 的帖子

  有一个主要原因是WAPGW的地址是10.0.0.172。这个地址是一个私有地址,如果要穿越Gi口后面连接的运营商IP承载网,这是不可路由的。所以要加上GRE的头部。从GGSN一直打到连WAPGW的网关路由器上。你会发现GRE的源和目的地址都是公网地址。
作者: lsjier    时间: 2011-6-24 17:28:35

回复 爱卫生 的帖子

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

如果是APN选路,那么为什么有的设置wap的APN的用户一定要设置10.0.0.172才能上网呢?

作者: heropoet    时间: 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封装,如下图
[attach]571[/attach]
所以我猜想:如果用户是使用为WAP的APN时,GGSN全部加上GRE封装,再转发给相应的GRE路由器处理,GRE路由器解开封装后,如果是指向10.0.0.172,就转发给WAPGW,如果是其它公网IP,就转发出去.
进一步推测:这是不是就可以解释了为什么使用WAP的APN时,终端也可以访问互联网?

以上猜想,请各位指正.

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


作者: 爱卫生    时间: 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报文。就像发邮件,只有邮件服务器才能读懂你的协议栈和邮件一样。


作者: lsjier    时间: 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上设置透传策略,将符合策略的请求透传,同样可以进行业务。

是否是这样呢?爱总,求鉴定!

作者: heropoet    时间: 2011-6-24 23:32:37

回复 爱卫生 的帖子

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

如上图两个包的截图,wap业务和非wap业务都指向同一个地址,(这个地址应该就是GRE路由器吧?)GRE路由器收到这两个数据包后,应该怎么处理呢?是一个转发给wapgw,一个转给互联网?还是两个都转给wapgw,由wapgw把其中一个再转发给QQ服务器?

作者: gprssanling    时间: 2011-6-25 01:27:16

#8楼的图,相同的地址是GRE路由器接口地址,去了GRE头之后,转发去哪里,由该GRE路由器的路由决定。
作者: gprssanling    时间: 2011-6-25 01:29:52

#8楼的图看好解答#7楼的问题。
作者: 爱卫生    时间: 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。它就是个机器。

作者: lsjier    时间: 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选路的么??怎么理解呢??

各位大侠指点下。谢谢

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

作者: lsjier    时间: 2011-6-25 12:40:13

回复 爱卫生 的帖子

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


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

作者: 爱卫生    时间: 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的过滤特性。
作者: shanyy11    时间: 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具体是如何封装的,封装的先后顺序是怎样的。给个链接也行啊,谢谢。

作者: 爱卫生    时间: 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
  放一个包供参考。
[attach]814[/attach]


作者: feile99    时间: 2011-10-7 00:18:19

回复 爱卫生 的帖子

如果不封装163.com的IP,WAPGW是如何知道UE想访问那个公网的Server呢?
作者: 爱卫生    时间: 2011-10-7 13:16:00

feile99 发表于 2011-10-7 00:18
回复 爱卫生 的帖子

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

  不好意思。我不大确定我是否完全理解了你的问题。说下我的理解,是这样子。UE只有访问cmwap这个APN才会经过WAP网关。而访问哪个网站是UE在手机屏幕上输入的,如果是wap网站的话(当然非wap网站也可以走cmwap这个APN,这种情况WAP网关相当于就是一个IE的代理了),UE的数据包都是由GGSN通过GRE透传给WAP网关,然后WAP网关再去查DNS去访问相应的HTTP Server,得到相应的网页内容后,进行格式转换后再通过GPRS网络传给UE。UE在这种情况下不需要做DNS解析,只需要将需要访问的URI提交给WAP网关,然后所有的事情都是由WAP网关来完成的。
作者: feile99    时间: 2011-10-7 13:52:45

回复 爱卫生 的帖子

查了一下手机侧的抓包,WAP信令里面通过Get去请求页面,

我的理解是WAPGW解包之后,根据WAP消息里面Get的网址,WAPGW去相关的网址取来之后再发给手机,所以手机发出去的包里面不需要带目标server的IP。

是这样吗?

作者: 爱卫生    时间: 2011-10-7 13:58:28

回复 feile99 的帖子

  是的。就是这样。WAP网关就是个万能保姆。UE什么都不管,只告诉WAP网关要访问网站的URI地址就可以了,不需要提供Server的IP。
作者: chaoge    时间: 2011-10-26 13:29:49

学习了,不错。
Gi接口到WAP GW的协议栈使用的是GRE隧道协议。WAP GW到WEB Server就是传统意义上的以太网络协议栈了,因为这个时候都是公网合法地址进行通信了,对MS/UE透明。如果是CMNET等网络接入形式,那么就无需通过WAP GW路由,这个时候的终端地址为合法地址,可以直接访问Internet进行通信。所以,从GGSN出来的数据路由出口不止WAP GW一个,可以直接访问Internet或者通过WAP GW访问Internet。

我的理解是这样的,不知道是否准确?
作者: 爱卫生    时间: 2011-10-29 17:10:11

回复 chaoge 的帖子

  完全正确。
作者: tobino1    时间: 2011-12-29 16:36:01

这个主题看了不止三遍 终于算看通透了
作者: kinghighland    时间: 2012-2-24 14:05:03

回复 爱卫生 的帖子


手机到手机的访问是有开关控制的,早期刚建网时是可以访问的,甚至在路由允许的情况下,手机也能接入核心网访问设备,目前普通用户之间的互访是关闭的,但是VPN用户仍然可以互访。

关于计费,不论是否是手机互访的流量,均由GGSN进行转发,所以道理上也应该能完成计费。

作者: hycl5410    时间: 2012-2-28 13:07:51

回复 kinghighland 的帖子

MS到MS的计费环节还真说不好。。。要看GGSN内部实现机制。无法计费是完全有可能的,否则为啥要禁止呢{:soso_e120:}
作者: yonka    时间: 2012-2-29 13:36:01

回复 爱卫生 的帖子

爱总,因为用户IP到Gi口出去后应该也是私网地址,由Gi防火墙翻译为公网地址,GGSN---Gi防火墙---Internet,按照你之前的说法,私网地址无法穿越运营商的IP承载网,那GGSN到Gi防火墙也是通过GRE吗?
或者所有的包都GRE隧道到GRE路由器,解包后目的IP为10.0.0.172的发到WAPGW而其他私网地址的则发给Gi防火墙?

作者: 爱卫生    时间: 2012-3-2 00:45:11

yonka 发表于 2012-2-29 13:36
回复 爱卫生 的帖子

爱总,因为用户IP到Gi口出去后应该也是私网地址,由Gi防火墙翻译为公网地址,GGSN---G ...

和你后一种情况描述的差不多。

分情况。只有cmwap才需要访问wap网关,源和目的IP都是私网IP,这时候不做NAT,从GGSN开始打GRE隧道一直到WAP网关的GW。如果是cmnet,直接上internet,这时GGSN到Gi防火墙没有GRE,Gi防火墙做NAT,手机转成公网地址访问internet。


作者: inp    时间: 2012-3-5 11:56:56

最近在研究GTP-U的封包,大家的讲解,感觉帮助还是挺大的。thanks
作者: wanahoo    时间: 2012-3-24 14:57:50

受教了
作者: shanyy11    时间: 2012-4-3 17:44:03

回复 爱卫生 的帖子

10.0.0.172是WAP网关的地址,可现网中GGSN会连两个WAP网关,那么IP地址的分配是如何解决的呢。
还有,我见有的现网中的GGSN配置radius服务器时,用的的地址是10.0.0.172,这我就有点迷糊了,难道这样也可以...

作者: 爱卫生    时间: 2012-4-3 18:05:24

本帖最后由 爱卫生 于 2012-4-3 18:09 编辑

回复 shanyy11 的帖子

10.0.0.172的IP应该只有一个。这个IP地址是需要配置在手机里面的。所以只会连到一个WAP网关去。你说的是不是两个WAP网关镜像成一个IP呢?

RADIUS理论上可以和WAP GW合设,因为只是一个软件应用。但通常都是分开的。根据实际的组网情况,也是有可能的。应该是联通吧。各个运营商有各自的组网策略。


作者: Mr_Muscle    时间: 2012-5-13 15:50:57

爱卫生 发表于 2011-10-29 17:10
回复 chaoge 的帖子

  完全正确。

做点补充,其实一般WAP网关是几台WAP服务器组成,他们相当于一个服务器集群(对外都以10.0.0.172标识),当WAP网关要与WEB SERVER进行通信的时候也要经过WAP网关的防火墙,在防火墙上也要做NAT转换,才能进行数据业务的传递。
作者: Mr_Muscle    时间: 2012-5-13 15:55:09

hycl5410 发表于 2012-2-28 13:07
回复 kinghighland 的帖子

MS到MS的计费环节还真说不好。。。要看GGSN内部实现机制。无法计费是完全有可能 ...

假设MS到MS能够通信的话,GGSN能够根据访问的流量进行计费的,禁止MS之间的通信主要是安全的考虑。
作者: Mr_Muscle    时间: 2012-5-13 15:59:48

yonka 发表于 2012-2-29 13:36
回复 爱卫生 的帖子

爱总,因为用户IP到Gi口出去后应该也是私网地址,由Gi防火墙翻译为公网地址,GGSN---G ...

Gi口的GGSN和FW之间一般会使用RIP或者OSPF协议把CMNET私网地址发布到Gi口路由上,这样GGSN和FW上都有CMNET地址的路由,才能进行数据的转发。
作者: admin    时间: 2012-5-13 16:06:58

Mr_Muscle 发表于 2012-5-13 15:50
做点补充,其实一般WAP网关是几台WAP服务器组成,他们相当于一个服务器集群(对外都以10.0.0.172标识), ...

非常感谢补充。
作者: gpf_gprs2012    时间: 2012-7-27 18:42:47

表示看不懂啊
作者: 昵称难倒的汉子    时间: 2012-12-14 14:08:07

刚好需要,谢谢答疑!
作者: chenxiaoan503    时间: 2013-6-24 16:12:45

本帖最后由 chenxiaoan503 于 2013-6-24 16:31 编辑

wap这玩意今后还有存在的价值不,是不是会逐步被淘汰。
作者: ccc123    时间: 2014-5-9 15:05:59

学习了......
作者: kinghighland    时间: 2014-5-13 19:25:09

本帖最后由 kinghighland 于 2014-5-13 19:27 编辑

好好学习天天向上





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