【概要】Iperf是一款網絡性能測試工具,可以方便的用它進行SDN網絡帶寬和網絡質量的測試,Iperf支持協議、定時、緩沖區等參數的配置調整,報告TCP/UDP最大帶寬、延遲抖動、數據包丟失等統計信息。
1 Iperf安裝
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 1
客戶端到服務器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)
Tags: 工作原理 ubuntu 服務器 二進制 服務端
文章來源: