【概要】Iperf是一款網絡性能測試工具,能夠方便的用它進行SDN網絡帶寬和網絡質量的測試,Iperf支持協議、定時、緩衝區等參數的配置調整,報告TCP/UDP最大帶寬、延遲抖動、數據包丟失等統計信息。java
1 Iperf安裝ubuntu
Iperf安裝方法有多種,能夠下載源碼編譯安裝,也能夠直接使用編譯好的二進制版本,在ubuntu下安裝使用iperf尤其簡單,apt-get install iperf 便可,值得一提的是Mininet自帶Iperf,在SDN網絡上測試比較便捷。服務器
2 工做原理微信
使用Iperf測試時必須將一臺主機設置爲客戶端,一臺主機設置爲服務器。網絡
Iperf測試TCP工具
Iperf測試TCP帶寬的原理比較簡單,在客戶端和服務端創建三次握手鍊接後,客戶端帶寬的大小等於發送的總數據除以發送的總時間。對服務端測得的帶寬,則是接收的總數據除以所花時間。性能
TCP模式下簡單舉例:學習
Server:iperf -s測試
Client:iperf -c 10.0.0.1 -i 1spa
客戶端到服務器10.0.0.1上帶寬測試,每一秒鐘打印一次信息。
Iperf測試UDP
Iperf測試UDP性能時,客戶端能夠指定UDP數據流的速率。客戶端發送數據時,將根據客戶端提供的速率計算數據報發送之間的時延。
客戶端還能夠指定發送數據報的大小。每一個發送的數據報包含一個ID號,用來惟一標識報文,服務器端根據該ID號來肯定數據報丟失和亂序。
當把UDP報文大小設置能夠將整個報文放入IP層的包(packet)內時,那麼UDP所測得的報文丟失數據即爲IP層包的丟失數據,這提供了一個有效的測試包丟失狀況的方法。
數據報傳輸延遲抖動 (Jitter)的測試由服務器端完成,客戶發送的報文數據包含有發送時間戳,服務器端根據該時間信息和接收到報文的時間戳來計算傳輸延遲抖動。傳輸延遲抖動反映傳輸過程當中是否平滑。因爲它是一個相對值,因此並不須要客戶端和服務器端時間同步。
UDP模式下簡單舉例:
Server:iperf -s -u
Client:iperf -c 10.0.0.1 -u -b 100M
在UDP模式下,客戶端以100Mbps爲數據發送速率,測試客戶端到服務器10.0.0.1上的帶寬。
綜上,用如下方法測試網絡鏈接的質量:
- 延時(反應時間或者RTT):用ping命令量度
- Jitter(延時變化):用Iperf UDP測試來量度
- 數據報丟失:用Iperf UDP測試來量度
- 帶寬:經過TCP測試來量度
3 參數配置
表 1. 客戶端/服務器端通用參數
表 2. 服務器端參數
表 3. 客戶端參數
4 測試實例
測試環境
1) 已搭建好一套SDN網絡環境,使用Mininet模擬交換機和主機鏈接到一款OpenFlow控制器
2) 使用Mininet自帶的Iperf工具
應用實例
實例一:最簡參數實例
Iperf客戶端鏈接Iperf服務器的TCP默認端口5001,不然咱們能夠用-p參數修改Iperf服務器的端口,客戶端與服務器必須加上一樣的端口。結果顯示的帶寬是從用戶到服務器之間的帶寬。
實例二:雙向帶寬測試
-r參數能夠量度雙向帶寬,Iperf服務器會主動向客戶端發起鏈接。
實例三:同步雙向帶寬測試
使用-d 參數同步測量雙向帶寬,而上例的-r在初始狀態時,只會量度客戶到服務器的帶寬。
實例四:TCP窗口大小
在鏈接中,若是接收方來不及驗證,數據會暫時被存在一個緩衝區裏,這個緩衝區的上限就是所謂的TCP窗口大小,窗口的大小能夠在2到65,535 bytes之間。
實例五:UDP測試
UDP測試會獲得關於Jitter和數據包丟失的重要信息。
良好的鏈接質量,數據包的丟失率要小於1%,數據包的丟失率太高會致使許多TCP數據報須要重傳,從而影響帶寬。 Jitter表明的是延時變化,並不依賴於延時自己,你可能擁有很長的反應時間,可是Jitter卻很低。
5 結束語
Jperf與Iperf一塊兒使用的話能夠提供一個java寫成的圖形界面,你們能夠自行學習,這裏就不作介紹。若有不足之處請加羣探討指正,謝謝。
本文來源於SDNLAB,可點擊此閱讀原文。若是您對本文感興趣,可參與如下互動方式與做者近距離交流。
(1)微博(http://weibo.com/sdnlab/)
2) 微信(帳號:SDNLAB)
(3) QQ羣
SDN研究羣(214146842)
OpenDaylight研究羣(194240432)