cbench安装与使用说明

cbench用来测试OpenFlow控制器或是OpenFlow网络虚拟化平台实在是太合适了。它的原理是不断循环产生“新的”流(注意是新的),从而用大量的packet-in消息检验控制器或是平台的抗压能力。通过发送packet-in消息和查看flow-mod消息下发的统计消息,将性能指标呈现给用户。

cbench毕竟不是mininet,它的着眼点在调试。所以,虽然cbench也能虚拟出许多多台交换机和大批主机,但是开放的参数很少。不过,这对于测试已经足够了。

安装配置过程如下,官网上的过程可以照搬。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#第一步:安装依赖包 无脑apt-get即可
$ sudo apt-get install autoconf automake libtool libsnmp-dev libpcap-dev
#第二步:安装oflops 因为cbench是在oflops环境下的 不要装在openflow目录下 同目录下即可
$ git clone git://gitosis.stanford.edu/oflops.git
#进入目录 完成更新
$ cd oflops; git submodule init && git submodule update
#第三步:安装openflow环境 接着进入分支
$ git clone git://gitosis.stanford.edu/openflow.git
$ cd openflow; git checkout -b release/1.0.0 remotes/origin/release/1.0.0
#第四步 安装libconfig包 对cbench编译配置
$ 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 //容易出错权限不够 sudo 或者 sudo chmod 777 别忘了改回去
$ cd ../../netfpga-packet-generator-c-library/
$ sudo ./autogen.sh && sudo ./configure && sudo make //同理
$ cd ..
#第五步 可以开始安装cbench了
$ sh ./boot.sh ; ./configure --with-openflow-src-dir=<absolute path to openflow branch>; make
$ sudo make install //同理 安装好即可出现启动文件
$ cd cbench

以上的步骤中容易出两种情况的错误:

  • 权限不够,make报错 “xxxxxx Permission denied”,/usr/local/lib,include,share会出现
  • 依赖包补全,make报错“xxx: command not found”,笔者的错误是g++不识别,sudo apt-get install g++ 再次make就好了
    至此,cbench安装完成。可以使用cbench的各种参数完成你的仿真了。下面这行代码即可执行仿真命令(前提是本机上6633端口得有控制器),由于cbench有默认参数,所以这也是可以执行的。
    1
    2
    $ ./cbench
    $ ./cbench -h

cbench的参数就都能看到了。参数的详细介绍可以见SDNAP

要想进行测试,还需要安装控制器。如POX或者Floodlight等。这比较简单,POX:

1
2
3
$ cd pox
# 启动
$ ./pox.py openflow.of_01 forwarding.l2_learning

Floodlight要稍复杂一点:

1
2
3
4
5
6
7
8
# 先安装操作环境,Floodlight是用Java写的所以要有标准JDK和构建工具ant Eclipse可选
$ sudo apt-get install build-essential default-jdk ant python-dev eclipse
$ git clone http://github.com/Floodlight/Floodlight.git //文件较大
$ cd Floodlight
$ checkout fl-last-passed-build
$ ant
# 启动
$ java -jar target/Flooglight.jar

根据个人经验,如果之前做个SDN的相关实验,有可能报错端口6633已被占用。这很可能是ovs-controller的开机启动导致的。

1
2
$ ps -aux | grep controller //杀干净吧
$ kill xxxx(进程号)

不过Floodlight的服务器可能还会启动不成功,不过并不影响实验。在Floodlight/src/main/resources/Floodlightdefault.properties中可以更改Floodlight的默认配置。

控制器也安好后,可以根据你的需要来启动测试了。cbench存储了范例,便是如下一行代码的结果。

1
./cbench -c localhost -p 6633 -m 10000 -l 10 -s 16 -M 1000 -t

-M 后的参数是不同MAC地址的主机数。根据个人体验,主机数较多点仿真出来的效果会比较好。