这是我看到关于IP分片比较好的文章,特此收藏。
转自:http://mr0811.blog.51cto.com/804916/364850
问题描述:客户联系反映其image download网络速度慢,抓包发现网络中有大量的ip fragment,占网络所有组播包的60%左右,怀疑有ip fragment攻击之类的问题,需要协助处理。
ip fragment攻击相关信息:
ip分片是在网络上传输ip报文时常采用的一种技术手段,但是其中存在一些安全隐患。ping of death, teardrop等攻击可能导致某些系统在重组ip分片的过程中宕机或者重新启动。最近,一些ip分片攻击除了用于进行拒绝服务攻击之外,还经常用于躲避防火墙或者网络入侵检测系统的一种手段。部分路由器或者基于网络的入侵检测系统(nids),由于ip分片重组能力的欠缺,导致无法进行正常的过滤或者检测。及其可能是一台伪装的肉鸡!
抓包分析发现大量 IP fragment为正常现象,造成download速度慢原因为交换机接server接口配置问题。
造成有大量IP fragment的原因为image server multicast 数据包超过了以太网默认的MTU (1500字节),这样IP层对数据包进行了IP分片传输。经过数据包进行分析得出image server发包大小为4132字节
具体分析如下:
总结上面的分析:
SWDL image server发送一个组播数据包,这个数据包长度为4132字节,而以太网(Ethernet)数据帧的长度必须在46-1500之间,这是由以太网的物理特性决定的。
但这并不是指链路层的长度被限制在1500字节,其实这这个MTU指的是链路层的资料区.,并不包括链路层的首部和尾部的18字节。
所以,事实上,这个1500字节就是网络层IP数据报的长度限制,而IP数据包的首部为20字节,所以IP包的数据区长度最大为1480字节.。
这个1480字节就是UDP传来的UDP数据报的.又因为UDP数据报的首部8字节,所以UDP数据报的数据区最大长度为1472字节。
这个1472字节就是我们可以使用的单个包最大数据长度。
那么image server每发一个包(长度为4132字节),将产生两个IP fragment,总共将有三个包,第一个UDP包的数据长度为1472字节,第二个IP分片包数据长度为1480字节,第三个IP分片包数据长度为1180字节,加起来正好为4132字节,故网络抓包中IP fragment占63.7%,UDP包只占36.3%。
造成网络速度慢的root cause为核心交换机CISCO4948接image server的接口上配置了ip igmp snooping vlan 1 mrouter interface Gi1/45 (多播路由器接口 接Server的接口)
这样由一台image server组播除去的包自己又收到了,造成那个端口的阻塞,故速度变慢。将此命令拿掉,增个download网络立即恢复正常。