??? 摘? 要: 吞吐量是評(píng)價(jià)網(wǎng)絡(luò)平臺(tái)性能的重要指標(biāo),是網(wǎng)絡(luò)用戶關(guān)注的焦點(diǎn),對(duì)于不同幀長(zhǎng)的以太網(wǎng)數(shù)據(jù)包,網(wǎng)絡(luò)平臺(tái)的處理能力存在較大差異,主要體現(xiàn)在處理64B和128B小包數(shù)據(jù)時(shí),吞吐量有明顯的降低。針對(duì)這一問(wèn)題,以研祥一款網(wǎng)絡(luò)平臺(tái)專用主板NET-1715VD4N為測(cè)試對(duì)象,采用SmartBits 600B測(cè)試儀配合SmartFlow、SmartWindow測(cè)試軟件,進(jìn)行了網(wǎng)絡(luò)吞吐量測(cè)試,并分析了造成小包吞吐量降低的原因。?
??? 關(guān)鍵詞: 網(wǎng)絡(luò)小包; 吞吐量
?
??? 隨著Internet的日益普及,企業(yè)內(nèi)部網(wǎng)用戶訪問(wèn)Internet的需求在不斷增加,企業(yè)需要對(duì)外提供諸如WWW頁(yè)面瀏覽、FTP文件傳輸、DNS域名解析等服務(wù),這些因素會(huì)導(dǎo)致網(wǎng)絡(luò)流量的急劇增加。如果網(wǎng)絡(luò)平臺(tái)的吞吐量太小,就會(huì)成為網(wǎng)絡(luò)瓶頸,給整個(gè)網(wǎng)絡(luò)的傳輸效率帶來(lái)負(fù)面影響。因此,在對(duì)網(wǎng)絡(luò)平臺(tái)進(jìn)行性能測(cè)試時(shí),考察吞吐量是一項(xiàng)十分重要的技術(shù)指標(biāo),有助于更好地評(píng)價(jià)其性能表現(xiàn)。?
??? 根據(jù)RFC2544標(biāo)準(zhǔn),以太網(wǎng)數(shù)據(jù)包的幀長(zhǎng)采用64B、128B、256B、512B、1 024B、1 280B、1 518B字節(jié)。目前大多數(shù)X86架構(gòu)網(wǎng)絡(luò)平臺(tái)在處理256B、512B、1 024B和1 518B這樣的中、大包時(shí),吞吐量大都能近似線速,而處理64B和128B小包的時(shí)候,性能差異立即體現(xiàn)。但是,近年來(lái)普及的一些應(yīng)用,包括MSN、QQ、視頻、線上游戲等,都是以小包的形式在工作。因此,人們對(duì)網(wǎng)絡(luò)平臺(tái)的小包數(shù)據(jù)處理能力的關(guān)注程度越來(lái)越高。?
??? 本文以網(wǎng)絡(luò)小包為研究對(duì)象,以研祥一款網(wǎng)絡(luò)平臺(tái)專用主板NET-1715VD4N為測(cè)試對(duì)象,采用SmartBits 600B測(cè)試儀配合SmartFlow、SmartWindow測(cè)試軟件,進(jìn)行了網(wǎng)絡(luò)吞吐量測(cè)試,并著重分析了造成小包吞吐量降低的原因。?
1 吞吐量測(cè)試方法?
??? 吞吐量(Throughput)是用來(lái)測(cè)試網(wǎng)絡(luò)設(shè)備的包轉(zhuǎn)發(fā)能力的重要參數(shù),通常指設(shè)備在不丟包條件下的最大傳輸速率。測(cè)試吞吐量的方法主要分為兩類:一類是基于PC軟件的測(cè)試,另一類是使用專門的測(cè)試儀器進(jìn)行測(cè)試。由于PC軟件測(cè)試的誤差比較大,而且軟件本身就不成熟,不能真實(shí)反映出網(wǎng)絡(luò)設(shè)備的實(shí)際吞吐量大小,因此大多數(shù)用戶不會(huì)采用PC軟件的測(cè)試方法,而是采用專業(yè)測(cè)試儀表來(lái)進(jìn)行測(cè)試。?
??? 目前業(yè)界普遍采用的測(cè)試儀表主要有Smartbits和ixia兩種,吞吐量的測(cè)試原理基本相同,都是采用二分法,即如果接收數(shù)據(jù)幀數(shù)等于發(fā)送數(shù)據(jù)幀數(shù),則增加發(fā)送數(shù)據(jù)包的速率;如果接收數(shù)據(jù)幀數(shù)小于發(fā)送數(shù)據(jù)幀數(shù),則降低發(fā)送數(shù)據(jù)包的速率。使用二分法來(lái)確定發(fā)送數(shù)據(jù)幀數(shù)等于接收數(shù)據(jù)幀數(shù)時(shí)的最大發(fā)送數(shù)據(jù)包的速率,即為網(wǎng)絡(luò)吞吐量。?
??? 本文采用Smartbits 600B測(cè)試儀配合SmartFlow、SmartWindow測(cè)試軟件進(jìn)行吞吐量測(cè)試。Smartbits是全球最權(quán)威的網(wǎng)絡(luò)設(shè)備測(cè)試儀,它配合不同的軟件可以測(cè)試OSI的2~3層和4~7層。對(duì)于網(wǎng)絡(luò)安全產(chǎn)品的制造商來(lái)說(shuō),一般測(cè)試到OSI的2~3層即可。常用的軟件有SmartWindow、SmartApplications、SmartFlow。SmartWindow是虛擬控制面板,SmartApplications是基于RFC2544標(biāo)準(zhǔn)的自動(dòng)化測(cè)試軟件,SmartFlow是QoS性能及MPLS路由測(cè)試軟件。SmartApplications和SmartFlow都可以測(cè)試吞吐量并自動(dòng)生成一份測(cè)試報(bào)告。?
2 測(cè)試實(shí)例?
??? X86架構(gòu)網(wǎng)絡(luò)平臺(tái)的網(wǎng)絡(luò)性能與軟件和硬件都有直接的聯(lián)系,其中CPU、網(wǎng)絡(luò)芯片是影響網(wǎng)絡(luò)性能的主要因素。此外,操作系統(tǒng)對(duì)于網(wǎng)絡(luò)性能也有很大的影響,Linux系統(tǒng)比Windows系統(tǒng)的網(wǎng)絡(luò)性能要好,而Linux系統(tǒng)的內(nèi)核版本與網(wǎng)卡驅(qū)動(dòng)版本不同,網(wǎng)絡(luò)性能也有比較大的差異,通過(guò)優(yōu)化驅(qū)動(dòng)可以提高網(wǎng)絡(luò)性能。?
??? 針對(duì)研祥一款網(wǎng)絡(luò)安全平臺(tái)專用主板NET-1715VD4N,進(jìn)行了數(shù)據(jù)包吞吐量的測(cè)試與分析。這款主板主要應(yīng)用于終端防火墻網(wǎng)絡(luò)安全產(chǎn)品中,支持目前主流Intel LGA775處理器,Pentium4、Celeron D、Pentium D及Conroe處理器,前端系統(tǒng)總線最高支持1 066MHz,搭配Intel 945G芯片組,雙通道DDR2,最大支持4GB內(nèi)存。有4個(gè)板載千兆網(wǎng)口,其中LAN1和LAN2采用1片Intel82571,可實(shí)現(xiàn)bypass功能,LAN3和LAN4采用2片Intel82573E。配有1個(gè)PCI插槽;1個(gè)PCI-E×4插槽,可擴(kuò)展4個(gè)電口或者2個(gè)GBIC或者2個(gè)SFP。?
2.1 測(cè)試環(huán)境?
??? 測(cè)試使用的NET-1715VD4N平臺(tái),搭配了Core 2 Duo E4500的CPU,主頻2.2GHz,二級(jí)緩存2MB,前端總線800MHz;內(nèi)存采用兩根Kingston 1G的DDR2/667;硬盤采用Seagate SATA接口160G/7200rpm/8M。安裝Linux Fedora Core 6(kernel 2.6.18)操作系統(tǒng),網(wǎng)口驅(qū)動(dòng)采用FC6自帶的7.1.9版本,軟件、驅(qū)動(dòng)不進(jìn)行任何優(yōu)化來(lái)做測(cè)試,采用路由模式。?
??? 測(cè)試儀器采用思博倫通信的網(wǎng)絡(luò)性能分析儀SmartBits 600B。測(cè)試軟件采用SmartFlow。測(cè)試網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)如圖1所示。?
?
?
??? Linux系統(tǒng)下的設(shè)置:?
??? (1) 關(guān)閉防火墻和SELinux服務(wù)?
??? # /etc/rc.d/init.d/iptables stop?
??? (2) 開啟Linux內(nèi)核中的ip_forward功能?
??? #echo 1 > /proc/sys/net/ipv4/ip_forward?
??? (3) 設(shè)置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) 設(shè)置靜態(tài)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 測(cè)試結(jié)果?
??? 本次測(cè)試,測(cè)試時(shí)間設(shè)置為60s,Acceptable Frame Loss設(shè)置為0,幀長(zhǎng)分別為64B、128B、256B、512B、1 024B、1 280B、1 518B。?
??? 圖2是測(cè)試完成后,由測(cè)試軟件自動(dòng)生成的NET-1715VD4N平臺(tái)Intel82571和Intel82573E雙向吞吐量的測(cè)試結(jié)果,為了能更清楚地看到測(cè)試數(shù)據(jù),將數(shù)據(jù)整理成表1。?
?
?
?
??? 從圖2和表1中可以看出,吞吐量與幀長(zhǎng)有關(guān),幀長(zhǎng)越長(zhǎng),其吞吐量越大。對(duì)于LAN1和LAN2兩個(gè)網(wǎng)口,處理512B、1 024B和1 518B的大包時(shí),吞吐量都達(dá)到了線速,沒(méi)發(fā)生丟包情況;處理256B的中包,吞吐量也非常接近線速;而在處理64B、128B的小包時(shí),吞吐量達(dá)不到線速,存在不同程度的丟包。?
2.3 測(cè)試結(jié)果分析?
??? NET-1715VD4N網(wǎng)絡(luò)平臺(tái)LAN1、LAN2網(wǎng)口64B小包的雙向吞吐量接近50%,此時(shí)的CPU占用率高達(dá)99%,而1 518B大包的吞吐量可以達(dá)到線速100%,此時(shí)的CPU占用率卻只有19%。每一個(gè)以太網(wǎng)數(shù)據(jù)幀都包含有6B的目的MAC地址、6B的源MAC地址、2B的數(shù)據(jù)類型、46B~1 500B的凈荷以及4個(gè)字節(jié)的FCS。對(duì)于64B幀長(zhǎng)的數(shù)據(jù)包,1Gb/s的速率等于1 488 095包/s,而對(duì)于1 518B幀長(zhǎng)的數(shù)據(jù),1Gb/s的速率等于81 274包/s。也就是說(shuō),同樣1Gb/s的速率,CPU響應(yīng)64字節(jié)幀長(zhǎng)的數(shù)據(jù)包中斷要比響應(yīng)1 518B幀長(zhǎng)的數(shù)據(jù)包中斷多得多。CPU在響應(yīng)64B數(shù)據(jù)包中斷時(shí),由于無(wú)法及時(shí)處理全部中斷,就將部分?jǐn)?shù)據(jù)包丟棄了。?
??? 在上述測(cè)試中,NET-1715VD4N平臺(tái)作為路由模式,進(jìn)行三層協(xié)議轉(zhuǎn)發(fā)來(lái)進(jìn)行測(cè)試。在三層協(xié)議棧轉(zhuǎn)發(fā)時(shí),占用了CPU大部份資源。如果在Linux系統(tǒng)下通過(guò)修改e1000_main.c文件中的代碼來(lái)做Loopback,即把代碼中的netif_receive_skb(skb) 修改成e1000_xmit_frame(skb, adapter->netdev) 重新編譯,數(shù)據(jù)包不通過(guò)三層協(xié)議棧處理,采用SmartWindow軟件,測(cè)試64B小包,發(fā)送采用1Gb/s的速率,LAN1網(wǎng)口的吞吐量可以達(dá)到90%。這說(shuō)明CPU在處理三層協(xié)議轉(zhuǎn)發(fā)時(shí),消耗了大部分資源,CPU是整個(gè)網(wǎng)絡(luò)平臺(tái)小包吞吐量達(dá)不到線速的最大瓶頸。?
??? 吞吐量是評(píng)價(jià)網(wǎng)絡(luò)性能的一項(xiàng)重要指標(biāo)。小包數(shù)據(jù)由于其自身的特性,使得許多網(wǎng)絡(luò)平臺(tái)在處理小包數(shù)據(jù)時(shí),吞吐量都有比較明顯的降低。因此,研究小包數(shù)據(jù)的吞吐量,找到小包吞吐量偏低的原因,具有十分重要的意義。本文通過(guò)對(duì)研祥網(wǎng)絡(luò)平臺(tái)產(chǎn)品NET-1715VD4N吞吐量的測(cè)試與分析,得出了CPU是影響小包吞吐量的主要因素的結(jié)論。如果采用更高性能的CPU,并通過(guò)優(yōu)化系統(tǒng)和網(wǎng)絡(luò)驅(qū)動(dòng)及中斷方式,可以使小包數(shù)據(jù)的吞吐量得到進(jìn)一步提高。?
參考文獻(xiàn)?
[1] 王國(guó)梁,陶洋,張靜.網(wǎng)絡(luò)測(cè)試及性能評(píng)價(jià)模型研究[J].中國(guó)數(shù)據(jù)通信,2003(11):26-29.?
[2] RFC2544:網(wǎng)絡(luò)互聯(lián)設(shè)備的基準(zhǔn)方法,1999.3?
[3] 劉靜林,張世遠(yuǎn),鐘亦平. 高性能主干網(wǎng)絡(luò)監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 計(jì)算機(jī)工程,2004,30(13):181-183.?
[4] 陳蓓. 基于嵌入式Linux安全網(wǎng)關(guān)的實(shí)現(xiàn)[D]. 西安交通大學(xué)碩士學(xué)位論文,2000:40-42.