[轉]網絡測試利器netperf安裝和使用

1.1. Netperf簡介

Netperf是一種網絡性能的測量工具,主要針對基於TCP 或UDP的傳輸。Netperf根據應用的不同,可以進行不同模式的網絡性能測試,即批量數據傳輸(bulk data transfer)模式和請求/應答(request/reponse)模式。Netperf測試結果所反映的是兩個系統之間發送和接受數據的速度和效 率。
Netperf工具是基於C/S模式的。server端是netserver,用來偵聽來自client端的連 接,client 端是netperf,用來向server發起網絡測試。在client與server之間,首先建立一個控制連接,傳遞有關測試配置的信息,以及測試的結 果;在控制連接建立並傳遞了測試配置信息以後,client與server之間會再建立一個測試連接,用來來回傳遞着特殊的流量模式,以測試網絡的性能。

1.1.1. TCP網絡性能

由於TCP協議能夠提供端到端的可靠傳輸,因此被大量的網絡應用程序使用。但是,可靠性的建立是要付出代價的。TCP協議保證可靠性的措施,如建立並維護連接、控制數據有序的傳遞等都會消耗一定的網絡帶寬。
Netperf可以模擬三種不同的TCP流量模式:
1) 單個TCP連接,批量(bulk)傳輸大量數據
2) 單個TCP連接,client請求/server應答的交易(transaction)方式
3) 多個TCP連接,每個連接中一對請求/應答的交易方式

1.1.2. UDP網絡性能

UDP沒有建立連接的負擔,但是UDP不能保證傳輸的可靠性,所以使用UDP的應用程序需要自行跟蹤每個發出的分組,並重發丟失的分組。
1)Netperf可以模擬兩種UDP的流量模式:
從client到server的單向批量傳輸
2) 請求/應答的交易方式
由於UDP傳輸的不可靠性,在使用netperf時要確保發送的緩衝區大小不大於接收緩衝區大小,否則數據會丟失,netperf將給出錯誤的結果。因此,對於接收到分組的統計不一定準確,需要結合發送分組的統計綜合得出結論。

1.2. Netperf安裝

軟件版本:netperf-2.4.0-rc2
安裝過程:
cp netperf-2.4.0-rc2.tar.gz /root
clip_image002
cd /root //進入root用戶根目錄
[root@localhost ~]# tar -zxvf netperf-2.4.0-rc2.tar.gz //解壓netperf壓縮文件包
clip_image004
[root@localhost ~]# cd netperf-2.4.0-rc2
clip_image006
[root@localhost netperf-2.4.0-rc2]# ./configure //配置netperf所需文件
clip_image008
[root@localhost netperf-2.4.0-rc2]# make //編譯生成二進制包
clip_image010
[root@localhost netperf-2.4.0-rc2]# make install//安裝
clip_image012
這時netperf安裝完成。

1.3. Netperf使用

Netperf 基於C/S模式,需要在測試源端運行netsever,而本地運行netperf進行連接並測試。

1.3.1. Netperf全局命令參數介紹:

netperf [global options]-- [test-specific options]
-H host :指定遠端運行netserver的server IP地址。
-l testlen:指定測試的時間長度(秒)
-t testname:指定進行的測試類型,包括TCP_STREAM,UDP_STREAM,TCP_RR,TCP_CRR,UDP_RR,以下測試中202.192.75.117作爲server端。

1.3.2. TCP_STREAM

Netperf缺省情況下進行TCP批量傳輸,即-t TCP_STREAM。測試過程中,netperf向netserver發送批量的TCP數據分組,以確定數據傳輸過程中的吞吐量
[root@localhost ~]# netperf -H 202.192.75.117
TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 202.192.75.117 (202.192.75.117) port 0 AF_INET
Recv Send Send
Socket Socket Message Elapsed
Size Size Size Time Throughput
bytes bytes bytes secs. 10^6bits/sec
87380 16384 16384 10.02 2569.29
-H,指定server端爲202.192.75.117
顯示結果中,Recv Socket Size爲server端接收數據的Socket大小87380字節
Send Socket Size 爲本地發送數據的Socket大小 16384字節
Elapsed time 爲測試使用時間10.02秒
Throughput,網絡吞吐量,即網絡中剩餘帶寬 2569.29M每秒

1.3.3. UDP_STREAM

UDP_STREAM用來測試進行UDP批量傳輸時的網絡性能,通過選項-t UDP_STREAM進行測試。
[root@localhost ~]# netperf -t UDP_STREAM -H 202.192.75.117 -- -m 1024
UDP UNIDIRECTIONAL SEND TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 202.192.75.117 (202.192.75.117) port 0 AF_INET
Socket Message Elapsed Messages
Size Size Time Okay Errors Throughput
bytes bytes secs # # 10^6bits/sec
109568 1024 10.01 146364 0 119.83
109568 10.01 54240 44.41
第一行顯示的是本地系統的發送統計,這裏的吞吐量表示netperf向本地socket發送分組的能力爲119.83M。第二行顯示的就是遠端系統接收的情況。
這裏特別注意的是我們發送測試分組的大小不能大於socket的發送與接收緩衝大小。爲此,我們可以用過-m 選項指定發送測試分組大小爲1024字節。

1.3.4. TCP_RR

TCP_RR用於測試在一次TCP連接中,兩個節點間TCP交易的次數。例如數據庫應用。
[root@localhost ~]# netperf -t TCP_RR -H 202.192.75.117
TCP REQUEST/RESPONSE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 202.192.75.117 (202.192.75.117) port 0 AF_INET
Local /Remote
Socket Size Request Resp. Elapsed Trans.
Send Recv Size Size Time Rate
bytes Bytes bytes bytes secs. per sec
16384 87380 1 1 10.01 4766.62
16384 87380
這 個模式輸出的結果也是由兩行組成。第一行顯示本地系統的情況,第二行顯示的是遠端系統的信息。Trans Rate per sec表示在本次測試中兩個節點間每秒數據交易的次數。這裏我們可以得知在本地與202.192.75.117兩個節點中,每秒每個TCP連接的數據交易 次數平均爲4766.62次。
我們可以通過以下局部選項設置相關內容。
-r req,resp 設置request和reponse分組的大小
-s size 設置本地系統的socket發送與接收緩衝大小
-S size 設置遠端系統的socket發送與接收緩衝大小
-D 對本地與遠端系統的socket設置TCP_NODELAY選項

1.3.5. TCP_CRR

TCP_CRR,指的是每次數據交易都建立新的連接,例如HTTP
[root@localhost ~]# netperf -t TCP_CRR -H 202.192.75.117
TCP Connect/Request/Response TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 202.192.75.117 (202.192.75.117) port 0 AF_INET
Local /Remote
Socket Size Request Resp. Elapsed Trans.
Send Recv Size Size Time Rate
bytes Bytes bytes bytes secs. per sec
16384 87380 1 1 10.01 1658.27
16384 87380
在本地與202.192.75.117兩個節點中,每秒基於TCP_CRR的平均數據交易次數爲1658.27次。

1.3.6. UDP_RR

UDP_RR指的是,在基於UDP連接的數據交易情況。
[root@localhost ~]# netperf -t UDP_RR -H 202.192.75.117
UDP REQUEST/RESPONSE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 202.192.75.117 (202.192.75.117) port 0 AF_INET
Local /Remote
Socket Size Request Resp. Elapsed Trans.
Send Recv Size Size Time Rate
bytes Bytes bytes bytes secs. per sec
109568 109568 1 1 10.00 4917.31
109568 109568
這裏,可以看出我們使用請求及迴應報文大小都爲1個字節下的UDP連接,平均每秒數據交易次數爲4917.31次。

1.4. 結言

通過netperf工具的各種模式,我們已經能夠對我們當前網絡吞吐量、延遲、網絡設備緩衝區等潛在的問題進行有效的監測,爲我們網絡擁塞、網絡故障及網絡升級等提供準確有效的數據支持。

本文出自 “野狼的荒野 ” 博客,請務必保留此出處http://wolfbeing.blog.51cto.com/435511/190470

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章