哦,天啊,SDN实验,永远滴痛。

今天折腾SDN的实验,使用SDN的Controller Benchmark测试工具Cbench来测试SDN控制器的性能。众所周知(也许只我一菜逼知道),由于一些文档的缺乏,加上各种工具版本的更迭导致的各工具之间不兼容问题,SDN的实验环境极其难以部署(吧)。今天在Ubuntu16.04LTS环境下搭建了该测试环境,费了不少功夫,不过也算是完成了。

实验环境

搭建步骤

一. 安装Floodlight控制器

1. 安装jdk8

由于最新版Floodlight控制器依赖Java8版本,所以操作系统中需要配置jdk8环境。

我一开始使用命令行安装的openjdk-1.8,但是导致Floodlight安装过程出现了问题,所以从jdk官网下载了jdk1.8,通过.bashrc配置系统变量,解决了Floodlight安装错误问题。

  • 从oracle官网下载jdk1.8-linux-x64版
    1
    我下载的版本是 jdk-8u251-linux-x64.tar.gz
  • 解压到/opt/java文件夹中(这里其实可以随意,只要后面配对系统环境变量就行)
    1
    sudo tar -zxvf jdk-8u251-linux-x64.tar.gz -C /opt/java/
  • 配置环境变量,在~/.bashrc中添加下列两行
    1
    2
    # cd ~
    # vim .bashrc
    1
    2
    export JAVA_HOME=/opt/java/jdk1.8.0_251
    export PATH=${JAVA_HOME}/bin:${PATH}
  • 使.bashrc生效
    1
    source ~/.bashrc

2. 安装Floodlight控制器

  • 安装依赖
    1
    # sudo apt-get install build-essential ant maven python-dev
  • 进入~目录
  • 操作如下
    1
    2
    3
    4
    5
    6
    7
    8
    # git clone git://github.com/floodlight/floodlight.git
    # cd floodlight
    # git submodule init
    # git submodule update
    # ant

    # sudo mkdir /var/lib/floodlight
    # sudo chmod 777 /var/lib/floodlight

二. 安装OpenFlow

  • 进入~目录
  • 操作如下
    1
    # git clone git://github.com/mininet/openflow.git
  • 这里得到OpenFlow的目录是你用户目录下的openflow目录,等会需要用到,直接进入该目录输入pwd即可获取完整绝对路径

三. 安装Cbench

  • 安装必要的依赖
    1
    # sudo apt-get install autoconf automake libtool libpcap-dev
  • 注意这里我没有按照官网上安装libsnmp-dev,因为我安装的时候出错了。用如下方法安装:(aptitude可以帮助你安装需要的依赖,或者帮助你选择降级部分依赖来使得能够正确安装与使用)
    1
    2
    # sudo apt-get install aptitude
    # sudo aptitude install libsnmp-dev
  • 安装Cbench,在~目录下,这里的/home/funny/openflow是我之前OpenFlow安装的目录
    1
    2
    3
    4
    5
    6
    # git clone git://github.com/mininet/oflops.git
    # cd oflops/
    # sh boot.sh
    # ./configure --with-openflow-src-dir=/home/funny/openflow
    # make
    # sudo make install
  • 如果在make过程中出现libconfig.h: No such file or directory的错误,则安装libconfig-dev
    1
    # sudo apt-get install libconfig-dev

至此,Cbench就完整的安装完成了。开始做实验吧(哭脸)~