Netperf性能測試工具(轉發)

 

分類: 網絡與安全html

2013-05-09 15:25:57windows

 

Netperf是一款開源的網絡性能測試工具,主要針對TCP和UDP傳輸進行測試。它有4種工做模式:TCP_STREAM、TCP_RR、UDP_STREAM、UDP_RR。後續將會對每一個工做模式進行詳細說明。安全

關於Linux系統下如何安裝,這裏不做說明,網上資料有不少不少。有沒有Windows版本的Netperf呢?固然有的,須要下載的話,請戳這裏:NetPerf-2.4.5-w32.zip。【請注意它所適用的操做系統版本】經本人親測,XP SP3確實可使用。其中,netserver做爲server端,netperf做爲client端。網絡

在第一次運行netserver時,遇到這樣一個問題:工具

 

C:\>netserver.exe  
  1. netserver: fopen of debug file as new stdout failed!: The system cannot find the path specified.  

 

解決辦法,在C盤根目錄下建立一個目錄temp,就能夠了。爲何呢,看源代碼:性能

 

Source: netserver.c  
  1.   
  2. #ifndef DEBUG_LOG_FILE   
  3. #ifndef WIN32   
  4. #define DEBUG_LOG_FILE "/tmp/netperf.debug"   
  5. #else   
  6. #define DEBUG_LOG_FILE "c:\\temp\\netperf.debug"   
  7. #endif /* WIN32 */   
  8. #endif /* DEBUG_LOG_FILE */  

好,這樣就能夠正常使用了。測試

netperf經常使用的全局參數有:ui

  • -h help
  • -H 指定server端IP
  • -t 指定測試類型,包括TCP_STREAM、TCP_RR、UDP_STREAM、UDP_RR4種。
  • -l 指定測試時間,單位是秒。

1. TCP_STREAM

測試TCP流式通信時的網絡帶寬,這是netperf的default測試類型。google

 

C:\>netperf -H 192.168.1.152 -t TCP_STREAM -l 10  
  1. TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.1.152 (192.168.1.152) port 0 AF_INET  
  2. Recv    Send    Send  
  3. Socket  Socket  Message Elapsed  
  4. Size    Size    Size    Time    Throughput  
  5. bytes   bytes   bytes   secs.   10^6bits/sec  
  6. 8192    8192    8192    10.00   454.21  
測試結果代表,TCP帶寬爲454.21Mbps。

 

2. UDP_STREAM

測試UDP流式通信時的網絡帶寬。值得注意的是,UDP測試時,須要確保發送端數據緩衝區不能大於接收端緩衝區,不然確定會出現數據包丟失,形成測試結果不許確。-m參數用來指定發送端緩衝區大小,-M參數用來指定接收端緩衝區大小。spa

 

C:\>netperf -H 192.168.1.152 -t UDP_STREAM -l 10 -- -m 1024 -M 1024  
  1. UDP UNIDIRECTIONAL SEND TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.1.152 (192.168.1.152) port 0 AF_INET  
  2. Socket    Message Elapsed    Messages  
  3. Size      Size    Time       Okay Errors    Throughput  
  4. bytes     bytes   secs.      #    #         10^6bits/sec  
  5. 8192      1024    10.01           0         386.00  
  6. 8192              10.01                     56.27  

 

第一行結果是本地的發送統計,也就是本地發送UDP的吞吐量爲386Mbps,第二行是server端的接收統計,吞吐量爲56.27Mbps。

 

3. TCP_RR

在一次TCP鏈接中,client端和server端的transaction次數。

 

C:\>netperf -H 192.168.1.152 -t TCP_RR  
  1. TCP REQUEST/RESPONSE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.1.152 (192.168.1.152) port 0 AF_INET : first burst 0  
  2. Local /Remote  
  3. Socket Size  Request Resp.  Elapsed Trans.  
  4. Send   Recv  Size    Size   Time    Rate  
  5. bytes  Bytes bytes   bytes  secs.   per sec  
  6. 8192   8192  1       1      10.00   10076.08  
  7. 8192   8192  
測試結果中,第一行是本地統計結果,第二行是遠端統計結果,Request和Response報文大小都是1個字節,C/S兩端每秒的transaction次數是10076.08。

 

4. UDP_RR

在基於UDP的鏈接中,client端和server端的transaction次數。

 

C:\>netperf -H 192.168.1.152 -t UDP_RR  
  1. UDP REQUEST/RESPONSE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.1.152 (192.168.1.152) port 0 AF_INET : first burst 0  
  2. Local /Remote  
  3. Socket Size  Request Resp.  Elapsed Trans.  
  4. Send   Recv  Size    Size   Time    Rate  
  5. bytes  Bytes bytes   bytes  secs.   per sec  
  6. 8192   8192  1       1      10.00   9120.10  
  7. 8192   8192  

一樣地,測試結果中,第一二行分別是本地和遠端統計結果,Request和Response報文大小都是1個字節,C/S兩端每秒的transaction次數是9120.10。

那麼,在TCP_RR和UDP_RR測試中,Request和Response報文大小如何指定呢?用到的是-r參數。使用方法是,-r req, [rsp]。

相關文章
相關標籤/搜索