这是我看到关于IP分片比较好的文章,特此收藏。

转自:http://mr0811.blog.51cto.com/804916/364850

 

问题描述:客户联系反映其p_w_picpath download网络速度慢,抓包发现网络中有大量的ip fragment,占网络所有组播包的60%左右,怀疑有ip fragment***之类的问题,需要协助处理。

 

ip fragment***相关信息:

ip分片是在网络上传输ip报文时常采用的一种技术手段,但是其中存在一些安全隐患。ping of death, teardrop等***可能导致某些系统在重组ip分片的过程中宕机或者重新启动。最近,一些ip分片***除了用于进行拒绝服务***之外,还经常用于躲避防火墙或者网络***检测系统的一种手段。部分路由器或者基于网络的***检测系统(nids),由于ip分片重组能力的欠缺,导致无法进行正常的过滤或者检测。及其可能是一台伪装的肉鸡!

抓包分析发现大量 IP fragment为正常现象,造成download速度慢原因为交换机接server接口配置问题。

造成有大量IP fragment的原因为p_w_picpath server multicast 数据包超过了以太网默认的MTU (1500字节),这样IP层对数据包进行了IP分片传输。经过数据包进行分析得出p_w_picpath server发包大小为4132字节

具体分析如下:

clip_p_w_picpath001

clip_p_w_picpath002

clip_p_w_picpath003

clip_p_w_picpath004

clip_p_w_picpath005

总结上面的分析:

SWDL p_w_picpath server发送一个组播数据包,这个数据包长度为4132字节,而以太网(Ethernet)数据帧的长度必须在46-1500之间,这是由以太网的物理特性决定的。

但这并不是指链路层的长度被限制在1500字节,其实这这个MTU指的是链路层的资料区.,并不包括链路层的首部和尾部的18字节。

所以,事实上,这个1500字节就是网络层IP数据报的长度限制,而IP数据包的首部为20字节,所以IP包的数据区长度最大为1480字节.。

这个1480字节就是UDP传来的UDP数据报的.又因为UDP数据报的首部8字节,所以UDP数据报的数据区最大长度为1472字节。

这个1472字节就是我们可以使用的单个包最大数据长度。

那么p_w_picpath server每发一个包(长度为4132字节),将产生两个IP fragment,总共将有三个包,第一个UDP包的数据长度为1472字节,第二个IP分片包数据长度为1480字节,第三个IP分片包数据长度为1180字节,加起来正好为4132字节,故网络抓包中IP fragment占63.7%,UDP包只占36.3%。

造成网络速度慢的root cause为核心交换机CISCO4948接p_w_picpath server的接口上配置了ip igmp snooping vlan 1 mrouter interface Gi1/45 (多播路由器接口 接Server的接口)

这样由一台p_w_picpath server组播除去的包自己又收到了,造成那个端口的阻塞,故速度变慢。将此命令拿掉,增个download网络立即恢复正常。