SDN測試工具-iperf、Cbench、sFlow(缺圖)

1 iperf

簡介

iperf是一款測試網絡性能的工具,基於服務器和客戶端模式,可以測試兩個虛擬機之間的TCP和UDP帶寬質量,提供網絡延時抖動、數據包丟失等信息。

安裝步驟

分別在兩個虛擬機中安裝iperf:

sudo apt-get install iperf

基本命令

服務器端

啓動服務器端iperf:

iperf -s         /以服務器的形式打開iperf,監聽TCP端口
iperf -s -u      /以服務器的形式打開iperf,監聽UDP端口

在測試過程中,服務器端也會同步打印出測試結果,甚至有些更爲詳細,可以查看。

客戶端

-t:指定測試時間,也就是傳輸數據的時間,默認爲10s。


-i:輸出頻率,即指定每隔多少秒測一次,餘數不算,最後一次爲整個t內的總和。
-n:要傳輸的數據量。
-P:多線程測試帶寬,顯示每個線程的測試結果以及每次測試各個線程的總和。

此時,服務端顯示:

-u:服務器端監聽UDP端口,客戶端也需要用-u指定使用UDP協議,否則默認TCP,在服務器端查看的參數更加清晰,包括延時和丟包情況。“Jitter”列表示抖動時間,也稱爲傳輸延遲,“Lost/Total Datagrams”列表示丟失的數據包和數據包數量,0%是平均丟包率。
-b:UDP模式使用的帶寬,單位bits/sec。此選項與-u選項相關。默認值是1 Mbit/sec。

由於Iperf工具是基於服務器和客戶端的工作模式,所以在進行測試之前應先在目標計算機上啓動服務器端程序,Iperf客戶端和服務器端程序其實都是同一個程序,只是使用了不同的命令選項而已。

iperf服務器端選項和啓動:

-s 以server模式啓動,eg:*iperf –s* 。Server端爲數據的接收端。
-D 以服務方式運行ipserf,eg:*iperf -s -D*
-R 停止iperf服務,針對-D,eg:iperf -s -R
-o <filename>  重定向輸出報告或錯誤信息到指定文件。
-c <hostname/IP> 如果Iperf運行爲服務器模式,則可利用-c參數指定一個客戶端,本機將接受指定客戶端的連接,但不支持UDP協議。
-P,--parallel #  設置Iperf服務模式下的最大連接數,默認值爲0,表示不限制連接數量。

iperf客戶端選項

-b,--bandwidth 指定客戶端通過UDP協議發送信息的帶寬,默認值爲1Mbit/s
-c,--client <hostname/IP> 指定Iperf服務器的主機名和IP地址
-d,--dualtest 同時進行雙向傳輸測試
-n,--num 指定傳輸的字節數,eg:*iperf -c 222.35.11.23 -n 100000*
-r,--tradeoff 單獨進行雙向傳輸測試
-t,--time 指定Iperf測試時間,默認10秒,eg:iperf -c 222.35.11.23 -t 5
-L,--listenport 指定一個端口,服務器將利用這個端口與客戶機連接
-P, --parallel 設置Iperf客戶端至Iperf服務器的連接數,默認值爲1
-S, --tos  設置發出包的類型,具體類型請參閱man文檔
-F 指定需要傳輸的文件
-T 指定ttl值

通用參數

-f [kmKM] 分別表示以Kbits, Mbits, KBytes, MBytes顯示報告,默認以Mbits爲單位,eg:*iperf -c 222.35.11.23 -f K*
-i sec 以秒爲單位顯示報告間隔,eg:iperf -c 222.35.11.23 -i 2
-l 緩衝區大小,默認是8KB,eg:iperf -c 222.35.11.23 -l 16
-m 顯示tcp最大mtu
-o 將報告和錯誤信息輸出到文件eg:iperf -c 222.35.11.23 -o ciperflog.txt
-p 指定服務器端使用的端口或客戶端所連接的端口eg:iperf -s -p 9999;iperf -c 222.35.11.23 -p 9999
-u 使用udp協議
-w 指定TCP窗口大小,默認是8KB
-B 綁定一個主機地址或接口(當主機有多個地址或接口時使用該參數)
-C 兼容舊版本(當server端和client端版本不一樣時使用)
-M 設定TCP數據包的最大mtu值
-N 設定TCP不延時
-V 傳輸ipv6數據包


示例

在mininet中使用iperf測試帶寬。測試網絡連通性後測主機間的帶寬:

iperf h1 h2

2 Cbench

簡介

Cbench是一款測試openflow控制器性能的工具,模擬一定數量的交換機連接控制器,發送packet-in消息,並等待控制器下發flow-mod消息,以此來衡量控制器的性能。

Cbench有兩種工作方式,分別是latency和throughput。latency指Cbench發送一個packet_in消息並等待控制器回覆匹配的flow mod消息,如此反覆,統計每秒鐘收到的flow mod數量。throughput指Cbench一直髮送packet_in消息直到控制器緩存滿了爲止,計算返回的flow mod的數量,統計每秒控制器處理事務的數量

安裝步驟

1、下載依賴包:

#sudo apt-get install autoconf automake libtool libsnmp-dev libpcap-dev

2、安裝openflow:

git clone git://gitosis.stanford.edu/openflow.git
cd openflow
git checkout -b mybranch origin/release/1.0.0
cd ..

3、安裝oflops:

git clone git://gitosis.stanford.edu/oflops.git
cd oflops
git submodule init
git submodule update
cd ..

4、安裝libconfig:

wget http://www.hyperrealm.com/libconfig/libconfig-1.4.9.tar.gz
tar -xvzf libconfig-1.4.9.tar.gz
cd libconfig-1.4.9
./configure
sudo make
sudo make install
cd ../oflops/netfpga-packet-generator-c-library/
./autogen.sh
./configure
make
cd ..
sh ./boot.sh
./configure --with-openflow-src-dir=【openflow的絕對地址,可以通過find命令查看】
make /此處可能會出現如圖1的錯誤
sudo make install
cd cbench

1、執行./configure後由於環境原因這一步可能會報錯,一般是因爲gcc、g++、bison等沒有安裝,根據編譯結果自行安裝所缺的依賴。

2、圖1錯誤是由於沒有安裝pkg-config造成的,補充安裝即可。

圖1:


apt-get install pkg-config
make

到這裏Cbench基本安裝完成了,下面可以嘗試使用了。

基本命令

  • -c(controller):連接控制器,後接控制器主機名或IP
  • -d(debug):打印日誌信息
  • -h(help):幫助信息
  • -l(loops):指定測試的次數,默認16次
  • -M(mac address):每個交換機連接的主機數量,默認100000個
  • -m(ms per test):指定每次測試的時間,默認1000ms
  • -p(port):控制器的端口,默認6633
  • -r(ranged test):依次顯示1、2、3個......交換機的測試結果
  • -s(switches):模擬的交換機的數量,默認16個
  • -t(throughput):指定運行模式爲throughput,默認是latency
  • -w(warmup):忽略前幾次的測試結果,默認1
  • -C(cooldown):忽略後幾次的測試結果,默認0
  • -D(delay):收到features_reply等待一定時間後再進行測試
  • -i(connect delay):延長交換機連接控制器的時間,默認0ms
  • -I(connect group size):配合-i,指定一次延時連接中交換機的數量
  • -L(learn dst macs):測試前發送ARP報文,以便控制器學習MAC地址
  • -o(dpid offset):交換機DPID偏移,默認1

    示例

    測試opendaylight控制器的性能,安裝Cbench後,啓動opendaylight,用Cbench連接、測試opendaylight。

    cbench –c [controller-IP] –p [controller-port] –s 1 –l 4

    第一次使用時出現了圖所示的問題,這是由於使用shell造成的,在虛擬機中直接實驗就可以了。



3 sFlow

簡介

sFlow是一種網絡流量分析協議,sFlow流量監控工具監測設備端口進行數據流隨機採樣,並且提供各接口的流量信息。sFlow分爲sFlow agent和sFlow collector。sFlow內嵌在網絡設備中,獲取設備的實時信息後封裝成sFlow報文發送給sFlow collector。collector作爲遠端服務器,負責彙總、分析sFlow報文並且生成流量報告。

sFlow可以提供完整的第二層到第四層甚至全網範圍內的實時流量信息,而且適用於超大網絡流量環境下的流量分析,能夠詳細、實時地爲用戶分析網絡流量的性能、趨勢以及可能存在的問題。且幾乎不會對被統計的設備造成任何負擔、管理成本極低。

安裝步驟

安裝sFlow collector

本實驗選用的sFlow軟件是sflow-rt,首先下載sflow-rt壓縮包,然後:

cbench –c [controller-IP] –p [controller-port] –s 1 –l 4

配置sFlow agent

s
udo ovs-vsctl -- --id=@sflow create sflow agent=[設備端口] target=\"[sflow-rt IP]\" header=128 sampling=10 polling=1 -- set bridge s1 sflow=@sflow

示例1

兩臺虛擬機,一臺安裝mininet並且配置sFlow agent,另一臺安裝sFlow collector。在mininet中創建一個網絡拓撲,通過執行ping產生網絡流量,然後在collector web查看監控結果。

示例2

選用三個虛擬機,通過mininet模擬一個switch和三臺host,在mininet中配置sFlow agent,控制器選擇Floodlight,sFlow collector選擇sFlow-rt。



文章整理自http://www.jianshu.com/p/d8ff2f96614f

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章