iperf使用指南


注意:iperf板上版本和PC上版本要一致,至少都要是2或者3,不能一個是2,一個是3。

 

You also get a "connection refused" error when you use an iperf v3 client to send to an iperf v2 server.

The message is slightly different though:

iperf3: error - unable to connect to server: Connection refused

As the iperf3 doc states, they are not compatible (at least up to version 3.1.2). You can check the version on both server and client with

iperf -v


This is what happened to me. The windows version had the newest one (3.1.3) while for arch installing iperf gave me an old 2.0.5. Installing iperf3 on arch gave me the newest version, after which all went well

網絡性能評估主要是監測網絡帶寬的使用率,將網絡帶寬利用最大化是保證網絡性能的基礎,但是由於網絡設計不合理、網絡存在安全漏洞等原因,都會導致網絡帶寬利用率不高。要找到網絡帶寬利用率不高的原因,就需要對網絡傳輸進行監控,此時就需要用到一些網絡性能評估工具,而Iperf就是這樣一款網絡帶寬測試工具,本節將詳細介紹一下Iperf的使用。

 

1、 Iperf能做什么

 

Iperf是一款基於TCP/IP和UDP/IP的網絡性能測試工具,它可以用來測量網絡帶寬和網絡質量,還可以提供網絡延遲抖動、數據包丟失率、最大傳輸單元等統計信息。網絡管理員可以根據這些信息了解並判斷網絡性能問題,從而定位網絡瓶頸,解決網絡故障。

 

下面介紹Iperf的主要功能。

 

(1)TCP方面

 

測試網絡帶寬。

 

支持多線程,在客戶端與服務端支持多重連接。

 

報告MSS/MTU值的大小。

 

支持TCP窗口值自定義並可通過套接字緩沖。

 

(2)UDP方面

 

可以設置指定帶寬的UDP數據流

 

可以測試網絡抖動值、丟包數

 

支持多播測試

 

支持多線程,在客戶端與服務端支持多重連接。

 

 

 

 

Iperf是一個網絡性能測試工具。Iperf可以測試TCP和UDP帶寬質量。Iperf可以測量最大TCP帶寬,具有多種參數和UDP特性。 Iperf可以報告帶寬,延遲抖動和數據包丟失。利用Iperf這一特性,可以用來測試一些網絡設備如路由器,防火牆,交換機等的性能。

 

Iperf有兩種版本,windows版和linux版本。

下載地址:

https://iperf.fr/iperf-download.php

 

Iperf參數介紹

 

命令行選項

描述

客戶端與服務器共用選項

-f, --format [bkmaBKMA]

格式化帶寬數輸出。支持的格式有:
'b' = bits/sec 'B' = Bytes/sec
'k' = Kbits/sec 'K' = KBytes/sec
'm' = Mbits/sec 'M' = MBytes/sec
'g' = Gbits/sec 'G' = GBytes/sec
'a' = adaptive bits/sec 'A' = adaptive Bytes/sec
自適應格式是kilo-和mega-二者之一。除了帶寬之外的字段都輸出為字節,除非指定輸出的格式,默認的參數是a。
注 意:在計算字節byte時,Kilo = 1024, Mega = 1024^2,Giga = 1024^3。通常,在網絡中,Kilo = 1000, Mega = 1000^2, and Giga = 1000^3,所以,Iperf也按此來計算比特(位)。如果這些困擾了你,那么請使用-f b參數,然后親自計算一下。

-i, --interval #

設置每次報告之間的時間間隔,單位為秒。如果設置為非零值,就會按照此時間間隔輸出測試報告。默認值為零。

-l, --len #[KM]

設置讀寫緩沖區的長度。TCP方式默認為8KB,UDP方式默認為1470字節。

-m, --print_mss

輸出TCP MSS值(通過TCP_MAXSEG支持)。MSS值一般比MTU值小40字節。通常情況

-p, --port #

設置端口,與服務器端的監聽端口一致。默認是5001端口,與ttcp的一樣。

-u, --udp

使用UDP方式而不是TCP方式。參看-b選項。

-w, --window #[KM]

設置套接字緩沖區為指定大小。對於TCP方式,此設置為TCP窗口大小。對於UDP方式,此設置為接受UDP數據包的緩沖區大小,限制可以接受數據包的最大值。

-B, --bind host

綁定到主機的多個地址中的一個。對於客戶端來 說,這個參數設置了出棧接口。對於服務器端來說,這個參數設置入棧接口。這個參數只用於具有多網絡接口的主機。在Iperf的UDP模式下,此參數用於綁 定和加入一個多播組。使用范圍在224.0.0.0至239.255.255.255的多播地址。參考-T參數。

-C, --compatibility

與低版本的Iperf使用時,可以使用兼容模式。不需要兩端同時使用兼容模式,但是強烈推薦兩端同時使用兼容模式。某些情況下,使用某些數據流可以引起1.7版本的服務器端崩潰或引起非預期的連接嘗試。

-M, --mss #[KM}

通過TCP_MAXSEG選項嘗試設置TCP最大信息段的值。MSS值的大小通常是TCP/IP頭減去40字節。在以太網中,MSS值 為1460字節(MTU1500字節)。許多操作系統不支持此選項。

-N, --nodelay

設置TCP無延遲選項,禁用Nagle's運算法則。通常情況此選項對於交互程序,例如telnet,是禁用的。

-V (from v1.6 or higher)

綁定一個IPv6地址。
服務端:$ iperf -s –V
客戶端:$ iperf -c <Server IPv6 Address> -V
注意:在1.6.3或更高版本中,指定IPv6地址不需要使用-B參數綁定,在1.6之前的版本則需要。在大多數操作系統中,將響應IPv4客戶端映射的IPv4地址。

服務器端專用選項

-s, --server

Iperf服務器模式

-D (v1.2或更高版本)

Unix平台下Iperf作為后台守護進程運行。在Win32平台下,Iperf將作為服務運行。

-R(v1.2或更高版本,僅用於Windows)

卸載Iperf服務(如果它在運行)。

-o(v1.2或更高版本,僅用於Windows)

重定向輸出到指定文件

-c, --client host

如果Iperf運行在服務器模式,並且用-c參數指定一個主機,那么Iperf將只接受指定主機的連接。此參數不能工作於UDP模式。

-P, --parallel #

服務器關閉之前保持的連接數。默認是0,這意味着永遠接受連接。

客戶端專用選項

-b, --bandwidth #[KM]

UDP模式使用的帶寬,單位bits/sec。此選項與-u選項相關。默認值是1 Mbit/sec。

-c, --client host

運行Iperf的客戶端模式,連接到指定的Iperf服務器端。

-d, --dualtest

運行雙測試模式。這將使服務器端反向連接到客戶端,使用-L 參數中指定的端口(或默認使用客戶端連接到服務器端的端口)。這些在操作的同時就立即完成了。如果你想要一個交互的測試,請嘗試-r參數。

-n, --num #[KM]

傳送的緩沖器數量。通常情況,Iperf按照10秒鍾發送數據。-n參數跨越此限制,按照指定次數發送指定長度的數據,而不論該操作耗費多少時間。參考-l與-t選項。

-r, --tradeoff

往復測試模式。當客戶端到服務器端的測試結束時,服務器端通過-l選項指定的端口(或默認為客戶端連接到服務器端的端口),反向連接至客戶端。當客戶端連接終止時,反向連接隨即開始。如果需要同時進行雙向測試,請嘗試-d參數。

-t, --time #

設置傳輸的總時間。Iperf在指定的時間內,重復的發送指定長度的數據包。默認是10秒鍾。參考-l與-n選項。

-L, --listenport #

指定服務端反向連接到客戶端時使用的端口。默認使用客戶端連接至服務端的端口。

-P, --parallel #

線程數。指定客戶端與服務端之間使用的線程數。默認是1線程。需要客戶端與服務器端同時使用此參數。

-S, --tos #

出棧數據包的服務類型。許多路由器忽略TOS字段。你可以指定這個值,使用以"0x"開始的16進制數,或以"0"開始的8進制數或10進制數。
例如,16進制'0x10' = 8進制'020' = 十進制'16'。TOS值1349就是:
IPTOS_LOWDELAY minimize delay 0x10
IPTOS_THROUGHPUT maximize throughput 0x08
IPTOS_RELIABILITY maximize reliability 0x04
IPTOS_LOWCOST minimize cost 0x02

-T, --ttl #

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

-F (from v1.2 or higher)

使用特定的數據流測量帶寬,例如指定的文件。
$ iperf -c <server address> -F <file-name>

-I (from v1.2 or higher)

與-F一樣,由標准輸入輸出文件輸入數據。

雜項

-h, --help

顯示命令行參考並退出 。

-v, --version

顯示版本信息和編譯信息並退出。

 

  1. 用Iperf測試路由器的性能

 

  1. 測試單線程TCP
  • 在服務端運行iperf,輸入命令iperf –s –p 12345 –i 1 –M 以在本機端口12345上啟用iperf

  • 在客戶端運行iperf,輸入命令iperf –c server-ip –p server-port –i 1 –t 10 –w 20K,其中參數說明如下:

    -c:客戶端模式,后接服務器ip

    -p:后接服務端監聽的端口

    -i:設置帶寬報告的時間間隔,單位為秒

    -t:設置測試的時長,單位為秒

    -w:設置tcp窗口大小,一般可以不用設置,默認即可

 

測試后截圖如下:

  

客戶端截圖

服務端截圖

其中:Interval表示時間間隔。Transfer表示時間間隔里面轉輸的數據量。Bandwidth是時間間隔里的傳輸速率。最后一行是本次測試的統計。測試可知帶寬平均為89.9Mbit/s。

 

 

  1. 測試多線程TCP

    在客戶端添加-P參即可測試多線程的TCP性能,如下為使用兩個線程的測試情況

    客戶端

     

  2. 測試單線程UDP(默認帶寬)
  • 在服務端運行iperf,輸入命令iperf –s -u –p 12345 –i 1 以在本機端口12345上啟用iperf,並運行於udp模式
  • 在客戶端運行iperf,輸入命令iperf -c server-ip -p server-port -i 1 -t 10 -b,其中參數說明如下:

    -c:客戶端模式,后接服務器ip

    -p:后接服務端監聽的端口

    -i:設置帶寬報告的時間間隔,單位為秒

    -t:設置測試的時長,單位為秒

    -b:設置udp的發送帶寬,單位bit/s

客戶端

服務端

     其中,Jitter為抖動,lost/total為丟包數量,Datagrams為包數量。

  1. 測試單線程UDP(帶寬為10Mbit/s)

    設置客戶端帶寬為10M即可,使用參數-b指定

                          

客戶端

服務端

 

  1. 測試多線程UDP

    與多線程TCP類似,只需要客戶端使用-P參數指定線程個數即可

 

  1. 測試UDP的雙向傳輸

    客戶端使用參數-d以運行雙測試模式,客戶端會與服務端進行udp往返測試。可以使用-L參數指定本端雙測試監聽的端口。

客戶端

服務端

  1. 測試UDP往復傳輸

    與雙向傳輸類似,使用參數-r以運行交互模式,仍然可以使用-L參數指定交互的端口。

客戶端

服務端


免責聲明!

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



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