??? 摘? 要: 吞吐量是評價網絡平臺性能的重要指標,是網絡用戶關注的焦點,對于不同幀長的以太網數據包,網絡平臺的處理能力存在較大差異,主要體現在處理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.