欢迎关注:1,欢迎关注本博客,你可点击右手边的【QQ邮件订阅】订阅本博客!2,本博客推出江湖救急计划,主要为工作中遇到疑难杂症的兄弟提供远程技术支持和分析,如有需要,请在江湖救急计划页面给我留言!

数据包中出现超长帧的分析

作者:易隐者 发布于:2012-11-1 16:36 Thursday 分类:网络分析

抓包环境

       在用户处的抓包环境如下图所示: 

点击查看原图


说明:
1、在核心交换机上做端口镜像抓取进出互联网的数据包;
2、监听端口为一台服务器接入端口,在服务器上开启科来网络分析系统抓取数据包。

问题现象描述

       在抓取数据包,并对数据包进行分析时,我们发现了一些问题,主要是以下几点:
1、 数据包中有很多长度超过1518字节的数据帧,其字节分布从1600-8880字节不等。如下图所示: 

点击查看原图

这是正常的吗?是什么原因导致的呢?
2、 存在较多的IP标识一致但是长度大小不一致的数据包,如下图所示: 

点击查看原图

问题分析

1 关于超长帧问题的分析

1、一般以太网环境中数据链路层能够传输的最大数据为1518字节,有些网卡在故障时会发送一些超长帧,但是这种帧一般都会被中间设备或捕获数据包的网卡丢弃,抓包工具一般无法正常显示,但是,在此次所捕获的数据包中,这些超长帧都能正常显示,而且通过分析其数据包通讯过程,也能够确定其通讯正常。可以排除设备网卡故障的可能。
2、在网上查找了一些关于超长帧的文档,发现其是一种专门为千兆以太网而设计的厂商标准的超长帧格式,其长度从9000字节~64000字节不等。采用Jumbo Frame能够令千兆以太网性能充分发挥,使数据传输效率提高50%~100%,超长帧一般在内部网络的存储环境中应用较多。Jumbo Frame需要在相互通讯的2个通讯端口(交换机端口或网卡端口)上同时支持,而且与以前的以太网产品不兼容,因此主要会应用于千兆主干的端口之间以及服务器端口接入到网络主干的链路。交换机把Jumbo Frame格式的数据转发向不兼容Jumbo Frame的端口时应进行帧格式的转换,即把Jumbo Frame帧格式的数据转换成标准以太网的帧格式,从而保证其正常工作。相反,从不兼容Jumbo Frame的端口向支持Jumbo Frame的端口转发数据时,交换机可以把多个标准以太网帧合并成超长Jumbo Frame帧,从而提高传输效率。
3、通过对数据包的分析,结合相关的资料,我们基本上可以推断出网络中的相关服务器和交换机支持jumbo frame,并且服务器正在使用超长帧与交换机进行相应的数据交互。
4、验证:可以在相应的服务器与交换机上查看它们对超长帧支持的相关设置。

2 关于IP标识一样但数据包大小不一样问题的分析

1、我们知道IP标识一样,说明属于同一数据包,如果在网络中同一数据包出现多次的话,说明网络中存在IP分片或网络中存在环路,但是,我们在数据包中未发现IP分片数据包,并且,如果是环路的话,其TTL值肯定会逐渐减小至0,但通过对数据包的分析,也未发现其TTL为1或0的数据包,因此可以排除网络环路或IP分片的问题。
2、我们在仔细对比分析了相应的数据包后,发现IP标识一样的数据包除了长度大小不一样外,还存在以下几点异同:
(1) 源MAC地址不一样;
(2) TTL值不一样;
(3) TCP序列号一致。
具体如下图所示:
第三个PACKET的数据包解码图:
 点击查看原图

点击查看原图

TTL值由128变成127了,说明经过了一跳路由,MAC地址变了就是经过路由的证据,为什么会经过一跳路由呢?联系我们的抓包拓扑和环境,我们便能明白:
科来网络分析系统是部署在服务器172.16.4.55上的,服务器与其他主机间的通讯数据流首先会被科来网络分析系统捕获下来,同时,服务器的网卡又捕获进出互联网出口的数据流,因为核心交换机上做了针对互联网出口的端口镜像,并且监听口为服务器在交换机上的接入端口。具体数据流见下图的图示: 

点击查看原图

也就是说,第三个packet是服务器网卡发送的数据包,而第四个packet是核心交换机互联网出口转发的数据包,它们是同一数据包,经过核心交换机的VLAN间路由后,TTL值减1了,并且,将服务器的源MAC替换成核心交换机相应VLAN的MAC。
3、上面我们分析了第三个packet与第四个packet属于同一数据包,那么,为什么它们的长度大小不一样呢?考虑到“交换机把Jumbo Frame格式的数据转发向不兼容Jumbo Frame的端口时应进行帧格式的转换,即把Jumbo Frame帧格式的数据转换成标准以太网的帧格式,从而保证其正常工作。”,我们可以推断第四个packet是核心交换机将第三个packet转换而来的。
4、验证:我们可以通过计算上下packet的TCP segment段长来验证是否是核心交换机将服务器发送的超长帧转换成多个较小的packet进行传输。如下图所示: 

点击查看原图

我们可以发现第三个packet的TCP段长正好是第四个packet与第五个packet的TCP段长之和。同样的道理,我们可以一一验证后续的超长帧与相关数据包的这种关系。

结论

通过上面的分析,我们得出以下结论:
1、网络中出现超出以太网MTU值的数据包是由于jumbo frame造成的,Jumbo frame在内部的服务器之间或服务器与交换机之间经常使用,以提高数据传输的效率,在互联网上不会出现。
2、jumbo frame的使用需要相关服务器和交换机的支持。
3、出现的IP标识一致的数据包是由于同一数据包被捕获了两次,长度大小不一样是由于后面的长度较小的数据包是交换机将前面较大的数据包转换为多个常规以太网数据包而来。

引申问题

假设服务器在很短的时间内发送了大量的超长数据包,其IP标识都很接近,在经过交换机时,交换机需要对这些超长的数据包进行转换,一个超长的数据包会被转换成多个常规的数据包,交换机在进行这个转换的时候,需要给那些转换后常规数据包重新分配IP标识(转换后的第一个数据包的IP标识为转换前的超长数据包的IP标识,后续的数据包的IP标识逐一增加),那么,是否会存在转换后数据包的IP标识与转换前的数据包的IP标识一样而导致对端设备接收异常呢?如下图所示: 

点击查看原图

我们以第9个packet至第15个packet等7个数据包来分析这个问题,如下图所示:

点击查看原图

 第9个packet、第10个packet都是超长帧,经过交换机是需要转换的,通过相应的IP标识值以及TCP段长的计算,我们可以知道第9个packet被转换为第11、12两个packets,第10个packet被转换为第13、14、15三个packets。
       通过比较这些数据包的IP标识,我们可以发现服务器在发生这些超长数据包时,似乎已经考虑到我们前面提到的问题,并将其相应的IP标识设置为转换后不会存在冲突的值。

阅读全文>>

标签: IP标识 IPID TTL MTU 超长帧 Jumbo Frame

评论(1) 引用(0) 浏览(13111)

Powered by 易隐者 基于emlog 皖ICP备12002343号-1