《电子技术应用》
您所在的位置:首页 > 其他 > 业界动态 > 网络数据小包吞吐量测试与分析

网络数据小包吞吐量测试与分析

2009-04-10
作者:马 涛1, 龚荣凡2,

    摘  要: 吞吐量是评价网络平台性能的重要指标,是网络用户关注的焦点,对于不同帧长的以太网数据包,网络平台的处理能力存在较大差异,主要体现在处理64B和128B小包数据时,吞吐量有明显的降低。针对这一问题,以研祥一款网络平台专用主板NET-1715VD4N为测试对象,采用SmartBits 600B测试仪配合SmartFlow、SmartWindow测试软件,进行了网络吞吐量测试,并分析了造成小包吞吐量降低的原因。 

    关键词: 网络小包; 吞吐量

 

    随着Internet的日益普及,企业内部网用户访问Internet的需求在不断增加,企业需要对外提供诸如WWW页面浏览、FTP文件传输、DNS域名解析等服务,这些因素会导致网络流量的急剧增加。如果网络平台的吞吐量太小,就会成为网络瓶颈,给整个网络的传输效率带来负面影响。因此,在对网络平台进行性能测试时,考察吞吐量是一项十分重要的技术指标,有助于更好地评价其性能表现。 

    根据RFC2544标准,以太网数据包的帧长采用64B、128B、256B、512B、1 024B、1 280B、1 518B字节。目前大多数X86架构网络平台在处理256B、512B、1 024B和1 518B这样的中、大包时,吞吐量大都能近似线速,而处理64B和128B小包的时候,性能差异立即体现。但是,近年来普及的一些应用,包括MSN、QQ、视频、线上游戏等,都是以小包的形式在工作。因此,人们对网络平台的小包数据处理能力的关注程度越来越高。 

    本文以网络小包为研究对象,以研祥一款网络平台专用主板NET-1715VD4N为测试对象,采用SmartBits 600B测试仪配合SmartFlow、SmartWindow测试软件,进行了网络吞吐量测试,并着重分析了造成小包吞吐量降低的原因。 

1 吞吐量测试方法 

    吞吐量(Throughput)是用来测试网络设备的包转发能力的重要参数,通常指设备在不丢包条件下的最大传输速率。测试吞吐量的方法主要分为两类:一类是基于PC软件的测试,另一类是使用专门的测试仪器进行测试。由于PC软件测试的误差比较大,而且软件本身就不成熟,不能真实反映出网络设备的实际吞吐量大小,因此大多数用户不会采用PC软件的测试方法,而是采用专业测试仪表来进行测试。 

    目前业界普遍采用的测试仪表主要有Smartbits和ixia两种,吞吐量的测试原理基本相同,都是采用二分法,即如果接收数据帧数等于发送数据帧数,则增加发送数据包的速率;如果接收数据帧数小于发送数据帧数,则降低发送数据包的速率。使用二分法来确定发送数据帧数等于接收数据帧数时的最大发送数据包的速率,即为网络吞吐量。 

    本文采用Smartbits 600B测试仪配合SmartFlow、SmartWindow测试软件进行吞吐量测试。Smartbits是全球最权威的网络设备测试仪,它配合不同的软件可以测试OSI的2~3层和4~7层。对于网络安全产品的制造商来说,一般测试到OSI的2~3层即可。常用的软件有SmartWindow、SmartApplications、SmartFlow。SmartWindow是虚拟控制面板,SmartApplications是基于RFC2544标准的自动化测试软件,SmartFlow是QoS性能及MPLS路由测试软件。SmartApplications和SmartFlow都可以测试吞吐量并自动生成一份测试报告。 

2 测试实例 

    X86架构网络平台的网络性能与软件和硬件都有直接的联系,其中CPU、网络芯片是影响网络性能的主要因素。此外,操作系统对于网络性能也有很大的影响,Linux系统比Windows系统的网络性能要好,而Linux系统的内核版本与网卡驱动版本不同,网络性能也有比较大的差异,通过优化驱动可以提高网络性能。 

    针对研祥一款网络安全平台专用主板NET-1715VD4N,进行了数据包吞吐量的测试与分析。这款主板主要应用于终端防火墙网络安全产品中,支持目前主流Intel LGA775处理器,Pentium4、Celeron D、Pentium D及Conroe处理器,前端系统总线最高支持1 066MHz,搭配Intel 945G芯片组,双通道DDR2,最大支持4GB内存。有4个板载千兆网口,其中LAN1和LAN2采用1片Intel82571,可实现bypass功能,LAN3和LAN4采用2片Intel82573E。配有1个PCI插槽;1个PCI-E×4插槽,可扩展4个电口或者2个GBIC或者2个SFP。 

2.1 测试环境 

    测试使用的NET-1715VD4N平台,搭配了Core 2 Duo E4500的CPU,主频2.2GHz,二级缓存2MB,前端总线800MHz;内存采用两根Kingston 1G的DDR2/667;硬盘采用Seagate SATA接口160G/7200rpm/8M。安装Linux Fedora Core 6(kernel 2.6.18)操作系统,网口驱动采用FC6自带的7.1.9版本,软件、驱动不进行任何优化来做测试,采用路由模式。 

    测试仪器采用思博伦通信的网络性能分析仪SmartBits 600B。测试软件采用SmartFlow。测试网络拓扑结构如图1所示。 

 

 

    Linux系统下的设置: 

    (1) 关闭防火墙和SELinux服务 

    # /etc/rc.d/init.d/iptables stop 

    (2) 开启Linux内核中的ip_forward功能 

    #echo 1 > /proc/sys/net/ipv4/ip_forward 

    (3) 设置IP地址  

    #ifconfig eth0 192.168.100.1 netmask 255.255.255.0 up 

    #ifcofnig eth1 192.168.200.1 netmask 255.255.255.0 up 

    #ifconfig eth2 192.168.300.1 netmask 255.255.255.0 up 

    #ifcofnig eth3 192.168.400.1 netmask 255.255.255.0 up 

    (4) 设置静态ARP 

    #echo‘192.168.100.2 00:00:00:00:00:01’ >> /etc/ethers 

    #echo‘192.168.200.2 00:00:00:00:00:02’ >> /etc/ethers 

    #echo‘192.168.300.2 00:00:00:00:00:03’ >> /etc/ethers 

    #echo‘192.168.400.2 00:00:00:00:00:04’ >> /etc/ethers 

    #arp -f 

    其中,192.168.100.2、00:00:00:00:00:01是SMB-600B流的源IP和源MAC。 

2.2 测试结果 

    本次测试,测试时间设置为60s,Acceptable Frame Loss设置为0,帧长分别为64B、128B、256B、512B、1 024B、1 280B、1 518B。 

    图2是测试完成后,由测试软件自动生成的NET-1715VD4N平台Intel82571和Intel82573E双向吞吐量的测试结果,为了能更清楚地看到测试数据,将数据整理成表1。 

 

 

 

    从图2和表1中可以看出,吞吐量与帧长有关,帧长越长,其吞吐量越大。对于LAN1和LAN2两个网口,处理512B、1 024B和1 518B的大包时,吞吐量都达到了线速,没发生丢包情况;处理256B的中包,吞吐量也非常接近线速;而在处理64B、128B的小包时,吞吐量达不到线速,存在不同程度的丢包。 

2.3 测试结果分析 

    NET-1715VD4N网络平台LAN1、LAN2网口64B小包的双向吞吐量接近50%,此时的CPU占用率高达99%,而1 518B大包的吞吐量可以达到线速100%,此时的CPU占用率却只有19%。每一个以太网数据帧都包含有6B的目的MAC地址、6B的源MAC地址、2B的数据类型、46B~1 500B的净荷以及4个字节的FCS。对于64B帧长的数据包,1Gb/s的速率等于1 488 095包/s,而对于1 518B帧长的数据,1Gb/s的速率等于81 274包/s。也就是说,同样1Gb/s的速率,CPU响应64字节帧长的数据包中断要比响应1 518B帧长的数据包中断多得多。CPU在响应64B数据包中断时,由于无法及时处理全部中断,就将部分数据包丢弃了。 

    在上述测试中,NET-1715VD4N平台作为路由模式,进行三层协议转发来进行测试。在三层协议栈转发时,占用了CPU大部份资源。如果在Linux系统下通过修改e1000_main.c文件中的代码来做Loopback,即把代码中的netif_receive_skb(skb) 修改成e1000_xmit_frame(skb, adapter->netdev) 重新编译,数据包不通过三层协议栈处理,采用SmartWindow软件,测试64B小包,发送采用1Gb/s的速率,LAN1网口的吞吐量可以达到90%。这说明CPU在处理三层协议转发时,消耗了大部分资源,CPU是整个网络平台小包吞吐量达不到线速的最大瓶颈。 

    吞吐量是评价网络性能的一项重要指标。小包数据由于其自身的特性,使得许多网络平台在处理小包数据时,吞吐量都有比较明显的降低。因此,研究小包数据的吞吐量,找到小包吞吐量偏低的原因,具有十分重要的意义。本文通过对研祥网络平台产品NET-1715VD4N吞吐量的测试与分析,得出了CPU是影响小包吞吐量的主要因素的结论。如果采用更高性能的CPU,并通过优化系统和网络驱动及中断方式,可以使小包数据的吞吐量得到进一步提高。 

参考文献 

[1] 王国梁,陶洋,张静.网络测试及性能评价模型研究[J].中国数据通信,2003(11):26-29. 

[2] RFC2544:网络互联设备的基准方法,1999.3 

[3] 刘静林,张世远,钟亦平. 高性能主干网络监控系统的设计与实现[J]. 计算机工程,2004,30(13):181-183. 

[4] 陈蓓. 基于嵌入式Linux安全网关的实现[D]. 西安交通大学硕士学位论文,2000:40-42.

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。