關註上方 浩道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 --version
iperf 3.1.7
Linux haodaolinux01 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64
Optional 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,讓我們一起去學習,一起去進步,一起去漲薪!期待您的加入~~~ 關註回復「資料」可 免費獲取學習資料 (含有電子書籍、視訊等)。
喜歡的話,記得 點「贊」 和 「在看」 哦