天天看點

NetPerf揭示容器間是高速路還是林蔭小路

Netperf概況

Netperf是一種網絡性能的測量工具,主要針對基于TCP或UDP的傳輸。Netperf根據應用的不同,可以進行不同模式的網絡性能測試,即批量 資料傳輸(bulk data transfer)模式和請求/應答(request/reponse)模式。Netperf測試結果所反映的是一個系統能夠以多快的速度向另外一個系統 發送資料,以及另外一個系統能夠以多塊的速度接收資料。

Netperf工具以client/server方式工作。server端是 netserver,用來偵聽來自client端的連接配接,client端是netperf,用來向server發起網絡測試。在client與 server之間,首先建立一個控制連接配接,傳遞有關測試配置的資訊,以及測試的結果;在控制連接配接建立并傳遞了測試配置資訊以後,client與 server之間會再建立一個測試連接配接,用來來回傳遞着特殊的流量模式,以測試網絡的性能。

TCP網絡性能

由于TCP協定能夠提供端到端的可靠傳輸,是以被大量的網絡應用程式使用。但是,可靠性的建立是要付出代價的。TCP協定保證可靠性的措施,如建立并維護連接配接、控制資料有序的傳遞等都會消耗一定的網絡帶寬。   

Netperf可以模拟三種不同的TCP流量模式:

1) 單個TCP連接配接,批量(bulk)傳輸大量資料

2) 單個TCP連接配接,client請求/server應答的交易(transaction)方式

3) 多個TCP連接配接,每個連接配接中一對請求/應答的交易方式

UDP網絡性能

UDP沒有建立連接配接的負擔,但是UDP不能保證傳輸的可靠性,是以使用UDP的應用程式需要自行跟蹤每個發出的分組,并重發丢失的分組。   Netperf可以模拟兩種UDP的流量模式:

1) 從client到server的單向批量傳輸

2) 請求/應答的交易方式

由于UDP傳輸的不可靠性,在使用netperf時要確定發送的緩沖區大小不大于接收緩沖區大小,否則資料會丢失,netperf将給出錯誤的結果。是以,對于接收到分組的統計不一定準确,需要結合發送分組的統計綜合得出結論。

Netperf的指令行參數

在unix系統中,可以直接運作可執行程式來啟動netserver,也可以讓inetd或xinetd來自動啟動netserver。

當netserver在server端啟動以後,就可以在client端運作netperf來 測試網絡的性能。netperf通過指令行參數來控制測試的類型和具體的測試選項。根據作用範圍的不同,netperf的指令行參數可以分為兩大類:全局 指令行參數、測試相關的局部參數,兩者之間使用–分隔:

netperf [global options]-- [test-specific options]      

這裡我們隻解釋那些常用的指令行參數,其它的參數讀者可以查詢netperf的man手冊。   

-H host :指定遠端運作netserver的server IP位址。   

-l testlen:指定測試的時間長度(秒)   

-t testname:指定進行的測試類型,包括TCP_STREAM,UDP_STREAM,TCP_RR,TCP_CRR,UDP_RR,在下文中分别對它們說明。在後面的測試中,netserver運作在192.168.0.28,server與client通過區域網路連接配接(100M Hub)。

NetPerf安裝、使用過程

1、下載下傳

進入/home/FUCK檔案夾下輸入

wget http://down1.chinaunix.net/distfiles/netperf-2.4.5.tar.gz      

2、安裝

tar -xvf netperf-2.4.5.tar.gz
  cd netperf-2.4.5
  ./configure
  make
  make install      

3、測試netperf是不是可以用

server: netserver -d 4 -L 0.0.0.0 -p 9991
    Client: netperf -l 60 -4 -f -m -t TCP_CRR -H 172.16.22.102 -p 9991 -- -r 64,64      

繼續閱讀