Cbench(controller benchmarker)是一款OpenFlow控制器性能测试工具,通过模拟一定数量的交换机连接到控制器,发送packet-in消息,并等待控制器下发flow-mods消息来衡量控制器的性能。
1 安装Cbench
系统要求:debian/ubuntu,具体安装步骤如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# apt-get install autoconf automake libtool libsnmp-dev libpcap-dev # git clone git://gitosis.stanford.edu/oflops.git # cd oflops; git submodule init && git submodule update # git clone git://gitosis.stanford.edu/openflow.git # cd openflow; git checkout -b release/1.0.0 remotes/origin/release/1.0.0 # wget http://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 ../../netfpga-packet-generator-c-library/ # sudo ./autogen.sh && sudo ./configure && sudo make # cd .. # sh ./boot.sh ; ./configure --with-openflow-src-dir=; make # sudo make install # cd cbench |
注意:absolute path to openflow branch为git clone git://gitosis.stanford.edu/openflow.git的绝对路径。一般是/oflops/openflow 或者是/root/oflops/openflow。
环境安装好后即可进行控制器性能测试。
2 Cbench使用说明
2.1参数配置
表 1 Cbench 命令参数
说明:表格中的()内为默认值。
2.2性能测试案例
测试环境
- 已安装好待评估的Floodlight控制器
- Cbench已正确安装
Cbench的两种工作模式
- Latency模式:Cbench发送一个packet in消息并等待控制器返回匹配的flow mod消息,如此反复多次,统计每秒内发生的次数即每秒内收到的flow mod数量。
- Throughtput模式:对于每个OpenFlow会话,在缓存满之前Cbench一直发送packet in消息,计算返回的flow mod数,统计每秒内控制器能够处理事务的数量。
测试说明
图1 测试一
如上图1,Cbench对ip地址为192.168.5.122端口号为6633的控制器进行响应延迟测试,-s选项设置交换机数量,本次试验测试数量为1台交换机,交换机连接的MAC数量为默认的100000,忽略测试开始的第1次结果,统计了3次测试结果,取这些结果的倒数即为Cbench收到控制器响应的延迟时间。
图2 测试二
如上图2,在吞吐量模式下,测试模拟了4个交换机,每个交换机连接1000个主机,每次测试时长为5000ms,RESULT统计了1次测试结果。
图3 测试三
上图3重点说明了-r的使用方法,依次显示了1个交换机、2个交换机、3个交换机、4个交换机的测试结果。
图4 测试四
上图4中-w忽略前2次的测试,-C忽略最后2次的测试,其中warmup+ cooldown < number of tests 。
图5 测试五
上图5,-D选项可以延迟两次测试的间隔时间,以便在OpenFlow握手结束后有时间设置控制器的内部状态,例如Flowvisor需要这个来连接虚网控制器。-i参数用来延长连接交换机的时间,配合-I可以设置在一次延长连接过程中交换机的数量。
测试建议
(1)具体的性能测试可以通过递增交换机或主机来统计吞吐量或延时。
(2)避免测试系统的性能瓶颈,比如Cbench的瓶颈/网络的瓶颈/cpu的瓶颈,所以要适当对系统参数进行调优。