iperf網絡性能測試


一、iperf原理及概述

iPerf是一個網絡性能測試工具,可以測試TCP或者UDP的網絡吞吐量。

(1)TCP帶寬測試

      iPerf的主要目標是幫助調整特定路徑上的TCP連接。眾所周知,TCP最基本的調整問題是調整TCP窗口大小,它控制在任何一點在網絡中可以有多少數據。如果它太小,發送者將會在一段時間內處於空閑狀態,從而影響發送TCP的性能。TCP窗口大小的理論值是:瓶頸帶寬與往返延時的乘積,即:

bottleneck bandwidth * round trip time

      例如瓶頸鏈路是45 Mbit/sec,使用ping命令測量到的往返時延是42ms。那么TCP窗口的理論值是:

45 Mbit/sec * 42 ms = (45e6) * (42e-3) = 1890000 bits= 230 KByte

      在實際測試中,可以以計算得到的TCP窗口為基准,在這個值(如上面為230KByte)的基礎上,升高或者降低TCP窗口大小,可以得到一個性能的提升。

主要功能如下:

  • 測量網絡帶寬
  • 報告MSS/MTU值的大小和觀測值
  • 支持TCP窗口值通過套接字緩沖
  • 當P線程或Win32線程可用時,支持多線程。客戶端與服務端支持同時多重連接

(2)UDP帶寬測試

      帶寬測試一般來說采用UDP模式測試,因為在UDP模式下能測出極限帶寬、路徑時延、丟包率,這些測試項會在帶寬測試報告中打印出來。在進行測試時,先以鏈路理論帶寬作為數據發送速率進行測試,例如,從客戶端到服務器之間的鏈路的理論帶寬為1000Mbps,先用 -b 1000M進行測試,然后根據測試結果(包括實際帶寬,時延抖動和丟包率),再以實際帶寬作為數據發送速率進行測試,會發現時延抖動和丟包率比第一次好很多,重復測試幾次,就能得出穩定的實際帶寬。

      iperf是基於server-client模式工作的,因此,要使用iperf測試帶寬,需要建立一個服務端(用於丟棄流量)和一個客戶端(用於產生流量)。iperf服務端或者是客戶端,都是使用的同一個命令,不過是啟動命令的選項不同而已。

主要功能如下:

  • 客戶端可以創建指定帶寬的UDP流
  • 測量丟包
  • 測量延遲
  • 支持多播
  • 當P線程可用時,支持多線程。客戶端與服務端支持同時多重連接(不支持Windows)

二、iPerf常用選項

iPerf常用選項分為 通用選項、服務端特定選項以及客戶端特定選項。

(1)通用選項

-f <kmKM>

報告輸出格式。[kmKM]:format to report(Kbits, Mbits, KBytes, MBytes)

-i <sec>

在周期性報告帶寬之間暫停n秒。如周期是10s,則-i指定為2,每隔2秒報告一次帶寬測試情況,共計報告5次

-p

設置服務端監聽的端口,默認是5001

-u

使用UDP協議測試

-w n<K/M>

指定TCP窗口大小

-m

輸出MTU大小

-M

設置MTU大小

-o <filename>

結果輸出至文件

-e

輸出詳細測試報告,包括pps等

(2)服務端選項

-s

iperf服務器模式

-d

以后台模式運行服務端

-U

運行一個單一線程的UDP模式

(3)客戶端選項

-b

指定客戶端通過UDP協議發送數據的帶寬(bit/s),默認是1Mbit/s

-c <ServerIP> 

以客戶端模式運行iperf,並且連接至服務端主機ServerIP,eg:  iperf -c <server_ip>

-d

雙向測試

-t

指定iperf帶寬測試時間,默認是10s,eg:iperf -c <server_ip> -t 20

-P

指定客戶端並發線程數,默認只運行一個線程。 eg,指定3個線程 : iperf -c <server_ip> -P 3

-T

出棧多播數據包的TTL值。這本質上就是數據通過路由器的跳數,默認是1,鏈接本地。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM