1 iperf
簡介
iperf是一款測試網絡性能的工具,基於服務器和客戶端模式,可以測試兩個虛擬機之間的TCP和UDP帶寬質量,提供網絡延時抖動、數據包丟失等信息。
安裝步驟
分別在兩個虛擬機中安裝iperf:
sudo apt-get install iperf
基本命令
服務器端
啓動服務器端iperf:
iperf -s /以服務器的形式打開iperf,監聽TCP端口
iperf -s -u /以服務器的形式打開iperf,監聽UDP端口
在測試過程中,服務器端也會同步打印出測試結果,甚至有些更爲詳細,可以查看。
客戶端
-t:指定測試時間,也就是傳輸數據的時間,默認爲10s。
此時,服務端顯示:
由於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