iperf的相關介紹

2021-06-01 01:59:17 字數 4558 閱讀 3097

iperf 版本建議採用linux版本,事實上,windows版也很好用。

頻寬測試通常採用udp模式,因為能測出極限頻寬、時延抖動、丟包率。在進行測試時,首先以鏈路理論頻寬作為資料傳送速率進行測試,例如,從客戶端到伺服器之間的鏈路的理論頻寬為100mbps,先用 -b 100m進行測試,然後根據測試結果(包括實際頻寬,時延抖動和丟包率),再以實際頻寬作為資料傳送速率進行測試,會發現時延抖動和丟包率比第一次好很多,重複測試幾次,就能得出穩定的實際頻寬。

1、udp 模式

伺服器端

iperf -u -s

客戶端iperf -u -c 192.168.1.1 -b 100m -t 60

在udp模式下,以100mbps為資料傳送速率,客戶端到伺服器192.168.1.1上傳頻寬測試,測試時間為60秒。

iperf -u -c 192.168.1.1 -b 5m -p 30 -t 60

客戶端同時向伺服器端發起30個連線線程,以5mbps為資料傳送速率。

iperf -u -c 192.168.1.1 -b 100m -d -t 60

以100m為資料傳送速率,進行上下行頻寬測試。

2、tcp模式

伺服器端

iperf -s

客戶端iperf -c 192.168.1.1 -t 60

在tcp模式下,客戶端到伺服器192.168.1.1上傳頻寬測試,測試時間為60秒。

iperf -c 192.168.1.1 -p 30 -t 60

客戶端同時向伺服器端發起30個連線線程。

iperf -c 192.168.1.1 -d -t 60

進行上下行頻寬測試。

另外,-p 監聽或者連線的埠號

-w tcp滑動視窗的大小

另外 這裡是引用李晨光的原創部落格,寫的比較好

使用iperf調整網路

iperf 是乙個 tcp/ip 和 udp/ip 的效能測量工具,通過調諧各種引數可以測試tcp的最大頻寬,並報告頻寬、延遲,最大段和最大傳輸單元大小等統計資訊。iperf可以執行於linux/bsd、unix及windows等作業系統。

一、iperf工作原理

iperf主要的功能是調諧基於特定路徑的tcp連線的效能,我們知道tcp連線調諧最基本的措施是調諧tcp視窗的大小,視窗大小控制在任何節點網路中可以存在的資料大小如果該值太小, 傳送者將會在某段時間處於空閒狀態,從而影響傳送的效能。tcp視窗大小的理論值為鏈路瓶頸頻寬與往返時延的乘積:

bottleneck bandwidth * round trip time

例如鏈路瓶頸頻寬為45mbit/sec,往返時延為42ms(可以通過ping來測試),那麼視窗的理論值為:

45mbit/sec*42ms=(45e6)*(42e-3)

=1890000 bits

230kbyte

調諧視窗大小即可以上.理論值為基準,在該值上慢慢增大或減少,即可獲得最好的結果。

iperfn試tcp頻寬的原理較簡單,即客戶端和伺服器端建立連線,然後客戶端傳送一定大小的資料,並記下傳送的時間, 或者客戶端在一定的時間內傳送資料,並記下傳送的總資料。頻寬的大小等於傳送的總資料除以傳送的總時間。對伺服器端來說,就是在連線建立時間內,接收的總資料除以所花時間即為伺服器端所測得的頻寬。mss的大小通過tcp核心介面函式直接獲得。

測試udp的效能,客戶端可以指定udp資料流的速率。客戶端傳送資料時將根據客戶提供的速率計算資料報傳送之間的時延。另外客戶還可以指定傳送資料報的大小。每個傳送的資料報包含乙個id號,用來惟一的標識該報文。伺服器端則根據該id 號來確定資料報丟失和亂序。當把udp報文大小設定可以將整個報文放入i p 層的包(packet)內時,那麼udp所測得的報文丟失資料即為ip層包的丟失資料。這提供了乙個有效的測試包丟失情況的方法。資料報傳輸延遲抖動(jitter)的測試由伺服器端完成,客戶傳送的報文資料報含有傳送時間戳,伺服器端根據該時間資訊和接收到報文的時間戳來計算傳輸延遲抖動。傳輸延遲抖動反映傳輸過程中是否平滑。由於它是乙個相對值,所以並不需要客戶端和伺服器端時間同步。

二、iperf實現

iperf源**採用物件導向的c++語言實現,主要包括基本類和實現類兩部分。基本類提供了實現中需要用到的一些基本的物件,包括佇列、鍊錶、時間管理、鎖、條件、執行緒等,這些**不是特定於iperf應用的,可以移植到其他應用程式。實現類中主要包括針對iperf應用的類,包括實現客戶端/伺服器端傳送和接收資料的類,以及用於統計資訊的類等。這裡主要討論一下與應用關係最緊密的幾個類,其他的類不做詳述。

iperf主要類圖結構包括9個類。iperf 的核心部分均在perfsocket類中實現,包括客戶端和伺服器端傳送和接收資料、頻寬報告、資料丟失及延遲抖動報告,以及視窗大小和mss報告等功能。其中speaker和client為客戶端的物件,listener、audience和server為伺服器端的物件。客戶端和伺服器端的通訊通過三個訊息完成:connect、write及shutdown。這裡connect不同於tcp中的連線,它還包含乙個資料報文,其資訊為雙向測試而傳給伺服器端的資訊,主要用於雙向測試時讓伺服器端啟動客戶端執行緒而所需要的資訊。udp 測試的過程基本上跟tcp類似。udp報文包含了乙個應用報文頭,其主要欄位為報文id和時間資訊,這個主要是為了測試udp報文的丟失、亂序以及延遲抖動效能。udp的第乙個報文用來建立連線,不作為應用資料,其資訊為雙向測試而傳給伺服器端的資訊,主要用於雙向測試時讓伺服器端啟動客戶端執行緒而所需要的資訊。udp與tcp第乙個報文內容的主要區別是udp報文還包括乙個應用報文頭。udp傳輸結束通過客戶端傳送乙個fin 的報文來實現,該報文的報文id為負數,伺服器端接收到fin報文後即停止接收報文並回送乙個ackfin報文給客戶,ackfin 報文包含了伺服器端得到的測試資料。

操作舉例:

1)tcp測試

伺服器執行:#iperf -s -i 1 -w 1m

客戶端執行:#iperf -c host -i 1 -w 1m

其中-w表示tcp window size,host需替換成伺服器位址。

2)udp測試

伺服器執行:#iperf -u -s

客戶端執行:#iperf -u -c 10.32.0.254 -b 900m  -i 1  -w 1m  -t 60

其中-b表示使用頻寬數量,千兆鏈路使用90%容量進行測試就可以了。

iperf 是乙個 tcp/ip 和 udp/ip 的效能測量工具,能夠提供網路吞吐率資訊,以及震動、丟包率、最大段和最大傳輸單元大小等統計資訊;從而能夠幫助我們測試網路效能,定位網路瓶頸。

引數說明

-s 以server模式啟動,eg:iperf -s

-c 以client模式啟動,host是server端位址,eg:iperf -c 222.35.11.23

通用引數

-f [k|m|k|m] 分別表示以kbits, mbits, kbytes, mbytes顯示報告,預設以mbits為單位,eg:iperf -c 222.35.11.23 -f k

-i sec 以秒為單位顯示報告間隔,eg:iperf -c 222.35.11.23 -i 2

iperf是client端向server端傳送資料

server端顯示的是接收速率,最好加i引數,進行速率跟蹤

client 顯示的是傳送速率

server 顯示接收速率

-l 緩衝區大小,預設是8kb,eg:iperf -c 222.35.11.23 -l 16

可以使用不同的包長,進行測試

-m 顯示tcp最大mtu值

-o 將報告和錯誤資訊輸出到檔案eg:iperf -c 222.35.11.23 -o c:/iperflog.txt

-p 指定伺服器端使用的埠或客戶端所連線的埠eg:iperf -s -p 9999;iperf -c 222.35.11.23 -p 9999

-u 使用udp協議

測試htb的時候最好用udp,udp通訊開銷小,測試的頻寬更準確

-w 指定tcp視窗大小,預設是8kb

如果視窗太小,有可能丟包

-b 繫結乙個主機位址或介面(當主機有多個位址或介面時使用該引數)

-c 相容舊版本(當server端和client端版本不一樣時使用)

-m 設定tcp資料報的最大mtu值

-n 設定tcp不延時

-v 傳輸ipv6資料報

server專用引數

-d 以服務方式執行ipserf,eg:iperf -s -d

-r 停止iperf服務,針對-d,eg:iperf -s -r

client端專用引數

-d 同時進行雙向傳輸測試

-n 指定傳輸的位元組數,eg:iperf -c 222.35.11.23 -n 100000

-r 單獨進行雙向傳輸測試

-b 指定傳送頻寬,預設是1mbit/s

在測試qos的時候,這是最有用的引數。

-t 測試時間,預設10秒,eg:iperf -c 222.35.11.23 -t 5

預設是10s

-f 指定需要傳輸的檔案

-t 指定ttl值

Amfphp相關的介紹

amfphp 是php的rpc工具,它可以使php與下述技術無縫通訊 一 什麼是rpc?遠端程式呼叫 rpc,remote procedure call 是一種客戶端與伺服器端交換資料方式。我們可以呼叫本地物件的帶有不同引數的方法 設定 並接受呼叫結果。我們不用關心傳送和接收資料的實現細節。實現細節...

Hive的相關介紹

為什麼使用hive 直接使用hadoop所面臨的問題 人員學習成本太高 專案週期要求太短 mapreduce實現複雜查詢邏輯開發難度太大 使用hive的優點 操作介面採用類sql語法,提供快速開發的能力。避免了去寫mapreduce,減少開發人員的學習成本。擴充套件功能很方便。1.1 什麼是hive...

svn的相關介紹

subversion svn 是乙個開源的版本控制系統,也就是說 subversion 管理著隨時間改變的資料。這些資料放置在乙個 資料檔案庫 repository 中。這個檔案庫很像乙個普通的檔案伺服器,不過它會記住每一次檔案的變動。這樣你就可以把檔案恢復到舊的版本,或是瀏覽檔案的變動歷史。svn...