1使用場景
檢測網絡應用程序的網絡性能。Netperf測試結果所反映的是一個系統能夠以多快的速度向另外一個系統發送數據,以及另外一個系統能夠以多快的速度接收數據。測試網絡性能的五項指標:可用性(availability,ping測試網絡是否聯通)、響應時間(response time,與未安裝網絡程序對比響應時間)、網絡利用率(network utilization,網絡被使用的時間占總時間(使用的時間+空閑的時間)的比例)、網絡吞吐量(network throughput,應用程序需要的剩余帶寬)、網絡帶寬容量(network bandwidth capacity,兩節點間的最大帶寬)。
2工作原理
Netperf工具以 client/server方式工作。server端是netserver,用來偵聽來自client端的連接,client端是netperf,用來向server發起網絡測試。在client與server之間,首先建立一個控制連接,傳遞有關測試配置的信息,以及測試的結果;在控制連接建立並傳遞了測試配置信息以后,client與server之間會再建立一個測試連接,進行來回傳遞特殊的流量模式,以測試網絡的性能。
3舉例使用
#環境描述
准備兩個虛擬機都安裝上netperf,虛擬機A作為服務器端開啟某端口,虛擬機B作為客戶端發包去連接A的服務,測試虛擬機A的網絡性能。
#安裝
yum -y install netperf
#server端
若不指定端口默認開啟12865端口
netserver -4 -L 0.0.0.0 -p 9991
參數:
Usage: netserver [options]
Options:
-h Display this text
-D Do not daemonize
-d Increase debugging output
-f Do not spawn chilren for each test, run serially
-L name,family Use name to pick listen address and family for family
-N No debugging output, even if netperf asks
-p portnum Listen for connect requests on portnum.
-4 Do IPv4
-6 Do IPv6
-v verbosity Specify the verbosity level
-V Display version information and exit
-Z passphrase Expect passphrase as the first thing received
#client端
netperf -H 10.1.13.115 -P 9991 -l 30 -t TCP_CRR -- -r 14k,14k
參數:
netperf的命令行參數可以分為兩大類:全局命令行參數、測試相關的局部參數,兩者之間使用--分隔。
netperf語法格式為:
Netperf [global options] --[test-specific options]
[global options] 可選參數,其中可選的參數有如下幾個:
參數 |
說明 |
-H host |
指定遠端運行netserver的server IP地址 |
-l testlen |
指定測試的時間長度(秒) |
-t testname |
指定進行的測試類型(TCP_STREAM,UDP_STREAM,TCP_RR,TCP_CRR,UDP_RR) |
[test-specific options] 可選參數,其中可選的參數有如下幾個:
參數 |
說明 |
-s size |
設置本地系統的socket發送與接收緩沖大小 |
-S size |
設置遠端系統的socket發送與接收緩沖大小 |
-m size |
設置本地系統發送測試分組的大小 |
-M size |
設置遠端系統接收測試分組的大小 |
-D |
對本地與遠端系統的socket設置TCP_NODELAY選項 |
-r req,resp |
設置request和reponse分組的大小 |
4FAQ
4.1客戶端connect failed出現No route to host
兩台服務器間能ping通,也開通了服務端端口,但客戶端connect返回netperf:send_omni:connect_data_socket failed:No route to host。
方法一:是防火牆的問題,需停止防火牆service firewalld stop。
方法二:server端firewall除了開啟9991,外還需要開啟tcp/40000-65535。
netperf的client連接server端口后,server端會隨機啟動一個一萬以上的端口用於數據傳輸(暫不明確server端隨機啟用的是幾萬以上端口,本地測試時顯示的是40000以上端口),若server端開啟firewall也需要開啟tcp/40000-65535,也可將范圍擴大一些tcp/10000-65535。