51学通信技术论坛

标题: GRE包头长度问题导致用户访问WAP网页无法打开 [打印本页]

作者: 爱卫生    时间: 2011-9-27 13:24:49     标题: GRE包头长度问题导致用户访问WAP网页无法打开

网络拓扑描述:
   A厂商GGSN和B厂商WAP网关对接。具体设置为:
1 WAP网关上的MSS设置为1436,MTU为1476字节。
2 GRE路由器以及中间IP承载网其他数据通信设备的MTU都是1500.

问题描述:
   发现当WAP网关和MS进行TCP层MS协商时,MSS协商为1436,结果MS无法打开WAP网页。

故障定位:
   使用wireshark抓包,发现在GRE路由器上处理完GRE之后有进行IP包的分片。在分片之后的IP包总长度为1504字节。发现是GRE路由器多加了4字节的头部。

故障解决:
   在防火墙上将MTU降至1472字节。问题解决。(这样可以保证从防火墙出去的时候加上多出来的可选的4字节的GRE头以及GRE本身的24字节,正好是1500(1472+4+28)字节,这样在传递给其他数据通信设备以及GGSN的时候就都没有分片的问题了。)

原因分析:
   MSS是TCP的最大分段大小。GRE的包大小=MSS(1436)+TCP包头(20)+IP包头(20)+GRE包头(24)=1500字节。这样WAP网关发出来的报文长度正好是1476字节,符合接口MTU,不用分片。交给GRE路由器处理加上GRE包头。但GRE包头最大可以到32字节,因为有8个字节是可选的。所以GRE包在GRE路由器处理完后有可能大于1500字节,即超过接口MTU的长度导致分片。这样GGSN将无法完成包的重组,MS将无法打开相应的网页。

作者: jmt110    时间: 2011-12-27 12:38:40

经典学习了,谢谢!
作者: 杨昭    时间: 2013-12-8 19:34:57

楼主,您好,请教几个问题。
在您的帖子里谈到 GRE的包大小=MSS(1436)+TCP包头(20)+IP包头(20)+GRE包头(24),一般GRE包头都是4字节,这里为何计算了24字节,还有前面叙述的GRE头部以及GRE本身,这个“本身”该怎么解释?为什么别的网元没有“本身”这一说呢?

还有报文的重组应该在手机侧进行么,为何你谈到在ggsn上重组?
作者: 爱卫生    时间: 2013-12-8 21:57:09

杨昭 发表于 2013-12-8 19:34
楼主,您好,请教几个问题。
在您的帖子里谈到 GRE的包大小=MSS(1436)+TCP包头(20)+IP包头(20)+GRE包头(24 ...

帮你找了篇文章,推荐看下这篇文章关于GRE的详细介绍。http://wenku.baidu.com/view/699d9749cf84b9d528ea7a82.html

GRE有两个RFC标准,有24字节,也有4字节的。分段无处不在,只要上层数据超过GGSN上定义的IP层MTU,GGSN将在IP层进行分段。你说的手机分段重组是指完整的数据包重组,可以是TCP和应用层的重组。和GGSN侧层的重组还不完全相同。







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