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:指定進行的測試類型,包括TCPSTREAM,UDPSTREAM,TCPRR,TCPCRR,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
From:https://blog.csdn.net/crisschan
關注我,關注測試