當前位置: 妍妍網 > 碼農

推薦一款運維&網路工程師應知必會的頻寬測試工具!

2024-03-05碼農

關註上方 浩道Linux ,回復 資料 ,即可獲取海量 L inux Python 網路通訊、網路安全 等學習資料!

前言

大家好,這裏是 浩道Linux ,主要給大家分享 L inux P ython 網路通訊、網路安全等 相關的IT知識平台。

今天浩道跟大家分享推薦分享一款頻寬測試工具------IPerf,這款測試工具對於運維工程師或者網路工程師,還是比較受歡迎的。本文帶你安裝部署,並且列舉出它常用的測試命令,真正做到拿來即用,看完就沒有你不會用的!

一、IPerf工具介紹

IPerf3 是一款由美國伊利諾斯大學(University of Illinois)開發的開源網路效能測試工具,主要用於測試網路節點間(包括回環)TCP或UDP連線的效能。它可以測量 網路頻寬 網路品質 ,提供 網路延遲抖動 封包遺失率、最大傳輸單元 等統計資訊。

IPerf是一款基於TCP/IP和UDP/IP的網路效能測試工具,可以用來測量網路頻寬和網路品質,提供網路延遲抖動、封包遺失率、最大傳輸單元等統計資訊。網路管理員可以根據這些資訊了解並判斷網路效能問題,從而定位網路瓶頸,解決網路故障。

IPerf 是一款基於命令列模式的網路效能測試工具,是跨平台的,提供橫跨Windows、Linux、Mac的全平台支持。iperf 全程使用記憶體作為發送/接收緩沖區,不受磁盤效能的影響,對於機器配置要求很低。不過由於是命令列工具, iperf 不支持輸出測試圖形。

Iperf可以測試TCP和UDP頻寬品質,具有多種參數和UDP特性,可以用來測試一些網路裝置如路由器,防火墻,交換機等的效能。

IPerf功能包括:

TCP方面:測試網路頻寬,支持多執行緒,客戶端與伺服端支持多重連線,報告MSS/MTU值的大小,支持TCP視窗值自訂並可透過套接字緩沖。

UDP方面:可以設定指定頻寬的UDP數據流,測試網路抖動值、丟包數,支持多播測試,支持多執行緒,客戶端與伺服端支持多重連線。

二、IPerf工具安裝部署

IPerf的安裝支持yum方式安裝及源碼安裝兩種方式,安裝方式相對比較簡單,以下基於Centos7下透過yum方式安裝iperf3版本進行演示。

1、yum方式安裝

yum install -y iperf3

安裝完成後透過命令檢視對應版本如下:

[root@haodaolinux01 ~]# iperf3 --versioniperf 3.1.7Linux haodaolinux01 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64Optional features available: CPU affinity setting, IPv6 flow label, TCP congestion algorithm setting, sendfile / zerocopy, socket pacing

三、IPerf工具命令用法及常見參數

iperf可以執行在任何IP網路上,包括本地乙太網路、接入因特網、Wi-Fi網路等。Iperf是基於 客戶端-伺服端 模式實作的。在測量網路參數時,Iperf區分聽者(Audience)和說者(Speaker)兩種角色。說者向聽著發送一定量的數據,由聽者統計並記錄頻寬、時延抖動等參數。說者的數據全部發送完成後,聽者透過向說者回送一個封包,將測量數據告知說者。這樣,在聽者和說者兩邊都可以顯示記錄的數據。如果網路過於擁塞或誤碼率較高,當聽者回送的封包無法被說者收到時,說者就無法顯示完整的測量數據,而只能報告本地記錄的部份網路參數,發送的數據量、發送時間、發送頻寬等,像延時抖動等參數在說者一側則無法獲得(因此在報告時,伺服器和客戶端所得到的資訊是不同的)。

iperf的頻寬測試分為 TCP模式 UDP模式 ,這兩種模式中又分為 上行鏈路測試 下行鏈路測試

TCP模式:測量網路頻寬、報告MSS/MTU值的大小和觀測值、支持TCP視窗值透過套接字緩沖、當P執行緒或Win32執行緒可用時,支持多執行緒。客戶端與伺服端支持同時多重連線;

UDP模式:客戶端可以建立指定頻寬的UDP流、測量丟包、測量抖動、支持多播、當P執行緒可用時,支持多執行緒。客戶端與伺服端支持同時多重連線(不支持Windows);

上行鏈路:客戶端發送數據,伺服端接受數據

下行鏈路:伺服端發送數據,客戶端接受數據

在完成iperf安裝後,執行「iperf3 –h」即可顯示iperf的詳細用法。iperf的命令列選項共分為三類,分別是 客戶端與伺服器端公用選項 伺服器端專用選項 客戶端專用選項

以下針對這三類參數羅列常見的參數選項。

(一)伺服端常見參數選項

(1)-s,--server: 將iperf以server模式啟動,例如:iperf3 –s,iperf3預設啟動的監聽埠為5201,可以透過「-p」選項修改預設監聽埠

(2)-D: 將iperf作為後台守護行程執行,例如:iperf3 -s -D

(二)客戶端常見參數選項

(1)-c,--client host: 將iperf以客戶端模式啟動,host是server端地址,eg:iperf3 -c 192.168.20.232

(2)-u,--udp: 表示采用UDP協定發送報文,不帶該參數列示采用TCP協定。

(3)-b,--bandwidth [K|M|G]: 指定UDP模式使用的頻寬,單位bits/sec,預設值是1 Mbit/sec。

(4)-t,--time: 指定數據傳輸的總時間,即在指定的時間內,重復發送指定長度的封包。預設10秒。

(5)-l,--len: 設定讀寫緩沖區的長度,單位為 Byte。TCP預設為8KB,UDP預設為1470字節。通常測試 PPS 的時候該值為16,測試BPS時該值為1400。

(6)-n,--num [K|M|G]: 指定傳輸封包的字節數,例如:iperf3 -c 192.168.20.232 –n 100M

(7)-P,--parallel: 指定客戶端與伺服端之間使用的執行緒數。預設是1個執行緒。需要客戶端與伺服器端同時使用此參數。

(8)-w,--window: 指定套接字緩沖區大小,在TCP方式下,此設定為TCP視窗的大小。在UDP方式下,此設定為接受UDP封包的緩沖區大小,用來限制可以接收封包的最大值

(9)-B,--bind: 用來繫結一個主機地址或介面,這個參數僅用於具有多個網路介面的主機。在UDP模式下,此參數用於繫結和加入一個多播組。

(10)-M,--mss: 設定TCP最大資訊段的值

(11)-N,--nodelay: 設定TCP無延時

(12)-V: 繫結一個IPv6地址。

(13)-d,--dualtest: 執行雙測試模式。將使伺服器端反向連線到客戶端,使用-L參數中指定的埠(或預設使用客戶端連線到伺服器端的埠)。使用參數-r以執行互動模式。

(14)-L,--listenport: 指定伺服端反向連線到客戶端時使用的埠。預設使用客戶端連線至伺服端的埠。

(15)-r,--tradeoff: 往復測試模式。當客戶端到伺服器端的測試結束時,伺服器端反向連線至客戶端。當客戶端連線終止時,反向連線隨即開始。如果需要同時進行雙向測試,請嘗試-d參數。

(三)客戶端與伺服端通用參數

(1)-f,--farmat [k|m|g|K|M|G]: 指定頻寬輸出單位,「[k|m|g|K|M|G]」分別表示以Kbits, Mbits, Gbits, KBytes, MBytes,GBytes顯示輸出結果,預設Mbits,eg:iperf3 -c 192.168.20.232 -f M

(2)-p,--port: 指定伺服器端監聽的埠或客戶端所連線的埠,預設是5201埠。

(3)-i,--interval: 指定每次報告之間的時間間隔,單位為秒,eg:iperf3 -c 192.168.20.232 -i 5

(4)-F: 指定檔作為數據流進行頻寬測試。例如:iperf3 -c 192.168.20.232 -F haodaolinux.tar.gz

(四)其它常見參數

(1)-h,--help: 顯示命令列參考並結束。

(2)-v,--version: 顯示版本資訊和編譯資訊並結束。

四、IPerf常見測試場景

環境準備如下:

(1)客戶端IP地址:192.168.20.231

(2)伺服端端IP地址:192.168.20.232

(一)測試TCP吞吐量

1、透過使用簡單命令參數測試。

(1)伺服端上執行「iperf3 -s」,即可開啟iperf的伺服器模式。

iperf3 -s

在預設情況下,iperf3將在伺服端開啟一個5201監聽埠,此時就可以將另一台伺服器作為客戶端執行iperf功能測試了。

(2)客戶端執行測試命令進行測試

iperf3-c 192.168.20.232

(3)伺服端的監聽結果如下圖所示:

(4)客戶端的監聽結果如下圖所示:

透過以上監聽結果可以看出,iperf預設的執行時間是10秒鐘,每隔一秒鐘輸出一次傳輸狀態,在輸出的最後,iperf還給出了總的數據發送、接收量,並給出了頻寬速率平均值 2.58Gbits/sec左右

2、透過增加命令相關參數進行測試

(1)伺服端端開啟iperf的伺服器模式,指定TCP埠為5222

iperf3 -s -i 2 -p 5222

(2)客戶端啟動iperf的客戶端模式,連線伺服端

iperf3-c 192.168.20.232-i 2 -t 20 -p 5222

(3)伺服端的監聽結果如下圖所示:

(4)客戶端的監聽結果如下所示:

從監聽結果看出,輸出狀態的間隔變為每2秒鐘一次,總共執行測試時間為20秒,測試的頻寬速率約為2.63Gbits/sec左右;

Interval表示時間間隔。

Transfer表示時間間隔裏面轉輸的數據量。

Bandwidth是時間間隔裏的傳輸速率。

Retr表示重傳的封包數量。

Cwnd表示擁塞視窗的大小。

(二)UDP的丟包和延遲測試

(1)在伺服端上開啟相關命令

iperf3 -s -i 2

(2) 客戶端啟動iperf的客戶端模式,透過-b參數來指定使用100Mb頻寬測試

iperf3-c 192.168.20.232-u-b 100M-i 2

(3)伺服端的監聽結果如下圖所示:

(4) 客戶端的監聽結果如下圖所示:

從監聽結果看出UDP的網路效能如下:

Interval:傳輸總共用時10s

Transfer: 總共傳輸的數據量118MB

Bandwidth: 平均頻寬99.3Mbits/sec

Jitter:抖動0.033ms

Lost/Total Datagrams:丟包的個數5566/總共傳輸包85707個 丟包率6.5%

五、總結

工欲善其事,必先利其器,實用的工具可以讓你在實際工作中如虎添翼。IPerf工具選項參數眾多。以上只是列舉一些常用的參數並進行常用的場景進行測試。大家如果想深入使用這款工具,可以自行去使用一番,相信你會收獲更多!

更多精彩

關註公眾號 浩道Linux

浩道Linux ,專註於 Linux系統 的相關知識、 網路通訊 網路安全 Python相關 知識以及涵蓋IT行業相關技能的學習, 理論與實戰結合,真正讓你在學習工作中真正去用到所學。同時也會分享一些面試經驗,助你找到高薪offer,讓我們一起去學習,一起去進步,一起去漲薪!期待您的加入~~~ 關註回復「資料」可 免費獲取學習資料 (含有電子書籍、視訊等)。

喜歡的話,記得 點「贊」 「在看」