Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1329140
  • 博文数量: 464
  • 博客积分: 9399
  • 博客等级: 中将
  • 技术积分: 6364
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-19 09:15
文章分类

全部博文(464)

文章存档

2014年(12)

2013年(123)

2012年(173)

2011年(156)

我的朋友

分类: 系统运维

2012-03-09 18:43:09

【条目标题】两端设备MTU值不匹配导致部分网页打不开的问题
【产品类别】数据通信
【条目代码】8007891
【最后修改时间】2004.11.26
【案例标题】两端设备MTU值不匹配导致部分网页打不开的问题
【现象描述】某次工程开局过程中,NE16路由器通过POS口上行,连接至J厂家的设备上。 为了提高NE16的转发效率,统一将MTU值改为1500,这样可以避免在NE16上拆分大报文,因此 建议局方将J厂家设备的MTU更改为1500,并且从NE16上ping J厂家设备,8100的大包互通也没有问题。但工程完工后,却一直存在NE16下的以太网用户无法访问部分网页的,(如sina网)但是同样情况下, 有些网页却可以访问(如该省的一个娱乐网站)。并且NE16通过以太网和J厂家设备互连,NE16下的以太网用户就没有不能访问部分网页的。而且该问 题与用户使用哪一网段的IP地址上网无关。
【告警信息】
【原因分析】在NE16上打开debugging tcp packet 调试开关,发现从sina网上只能收到少量的小报文,由于使用以太网与J厂家设备互通正常,以太网又便于抓包分析,所以先从以太网抓包入手,对比分析两者 报文的差别,经过抓包对比发现能访问的网站返回的都是小报文,无法访问的网站返回的报文多是1500字节或接近1500字节的大报文,并且这些大报文的 DF位为1,即不可分片。由于从POS口没有收到这些大报文,那么问题可能出在J厂家设备上,叫局方联系J厂家工程师查看其设备的配置,发现了问题的原 因,原来J厂家设备有两个MTU值设置位置,一个是针对链路层的,默认为4474,一个是层(IP)的,默认为4470。局方工程师只修改了链路层的 MTU值,没有修改层的MTU值,导致网络层接近于1500字节的报文在加上链路层报文头后的长度大于1500 而又不允许分片,该报文只好被丢弃。造成了部分网站无法访问。
【处理过程】修改J厂家设备的网络层的MTU值为1500、链路层的MTU值恢复为默认值后问题解决
-----------------------------------------------------------------------------------------------------------------------------------
【条目标题】路由器接口MTU、 MSS设置引起某些应用异常
【现象描述】组网:
PC-AR2831-AR2880-CISCO设备组成的核心网-SERVER
网络运行MPLS VPN;AR2880为PE;AR2831为CE,PE、CE间运行OSPF,多CE配置;路由器各接口MTU、TCP MSS值采用默认设置
AR2880:Version 3.30, Release 0008
AR2831:Version 3.30, Release 0008
现象1:
AR2880路由器的以太口MTU使用缺省设置时,使用的OA系统(BS架构)部分流程无法运行,上网发邮件时附件无法粘贴;但是在cisco设备上,同样的组网没有发现问题;
现象2:
将AR2880路由器的以太口MTU改为512测试,邮件附件可以粘贴,但OA主页打开后无内容,刷新不了;将AR2880路由器的以太口MTU改为 1200测试,邮件附件可以粘贴,OA主页可以正常显示,但是点击OA系统的"起草公文"无页面弹出,正常状况下应弹出新建公文页面;

 

【告警信息】
【原因分析】原因分析:
可能是应用软件问题;可能是MTU 、TCP MSS值协商配置问题;
具体分析:
1、接口MTU、TCP MSS采用缺省值1500时,无法贴附件;
这是因为应用了三层MPLS VPN技术,增加了8bit的标签,MTU值协商出现问题。
AR28XX路由器默认在接口上自动分片,所以在普通的应用中采用默认值不会影响业务。但路由器接口上收到一个报文长度大于本接口MTU值的报文,如果该 报文被强制打上不分片的标记,将丢弃报文,并返回一个ICMP差错报文(type 3,code 4),通知报文发起者丢弃原因。报文发起者将发送比较小的报文。通过多次上述报文协商,将得到对于某一个固定路径上的最小Mtu值, 这个过程叫做Mtu Discovery ,通过MTU Discovery来确定报文路径上最小可通过的MTU;如果两个设备相连,没有MTU Discovery功能并且MTU值不一致,将可能导致丢弃报文。只有把双方设备的Mtu为对端设备MRU的最小值,才能正常通信。由于某些组网考虑到网 络安全问题和性能,往往会把ICMP报文过滤掉,引起Mtu Discovery不能正常运行;应用软件由于程序算法问题或根本没有相应协商功能,也会导致了部分应用异常。
2、更改接口MTU值以后,仍然有部分业务不正常;
这是因为TCP MSS值协商的问题。
一般的应用软件,当客户端和服务器端在建立TCP连接的时候需要根据实际传输的报文大小来协商TCP的窗口大小MSS。Tcp连接成功后会进行两次滑动窗 口的协商,一次是pc与server,一次是与网关,然后在两次协商里选择一个较小的值作为窗口来发送报文。MSS值的计算方法是:MSS=MTU- IP-TCP(如果有其他pppoe、加密报文头的话也同样减去),也就是说MSS值其实就是TCP所承载的净载荷的长度。由于AR28XX接口缺省的 MTU是1500字节,故一般要求加密报文头+链路层开销+IP头(20-60字节)+TCP报文(20字节)小于1500字节,即TCP分片配置 1200左右比较适合。缺省情况下,TCP报文不分片。因此TCP MSS不匹配也会引起部分应用异常。

【处理过程】 本例中通过修改路由器接口MTU、TCP MSS值,解决问题。
具体报文mtu 、tcp mss大小要根据具体应用,按经验值进行尝试,选择最佳值;其中MTU值的选择可以通过ping命令设置不分片来进行测试;TCP MSS值的选择则可以通过MTU减去相应其它加密、链路层开销、IP头、TCP头等字节计算。
具体过程如下:
1、本例中使用cisco路由器时相关应用正常。初步估计是mtu值问题,但是对普通应用AR28系列路由器会自动分片,不会影响业务。测试发现在 client上ping大包的时候,如果不设置不允许分片,业务正常。看来客户应用中做了不允许分片的设置或其它原因mtu协商错误。更改路由器接口 mtu为1500-8=1492以后,业务正常。
2、更改接口mtu以后,其它部分业务还不正常。分析原因是tcp mss值的问题。减小tcp mss值8字节1460-8=1452,但是还有部分业务不正常。询问软件集成商,得到答复部分软件中使用了加密技术。而且不同的应用加密强度不同。
3、逐步调整路由器接口的tcp mss值,减到到1200以后,所有业务测试通过。

命令说明:
1、mtu命令用来设置以太网接口的MTU(最大传输单元),undo mtu命令用来恢复MTU的缺省值。缺省的MTU为1500。使用mtu命令改变接口最大传输单元MTU后,需要先对接口执行shutdown命令,再执 行undo shutdown命令将接口重启,以保证设置的MTU生效。
2、tcp mss命令用来配置TCP报文分片,undo tcp mss命令用来取消TCP报文分片。
由于我们接口缺省的MTU是1500字节,故一般要求加密报文头+链路层开销+IP头+TCP报文小于1500字节,即TCP分片配置1200左右比较适合。缺省情况下,TCP报文不分片。



CCIE Security 2009 IOS防火墙合集


阅读(1930) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~