Notice: Constant WP_DEBUG already defined in /var/www/html/wordpress/wp-content/plugins/changyan/sohuchangyan.php on line 12

Notice: Constant WP_DEBUG_LOG already defined in /var/www/html/wordpress/wp-content/plugins/changyan/sohuchangyan.php on line 13

Notice: Constant WP_DEBUG_DISPLAY already defined in /var/www/html/wordpress/wp-content/plugins/changyan/sohuchangyan.php on line 14
解决Floodlight1.2+Mininet问题及使用安装【zoues.com】 – zoues

LOADING

Follow me

解决Floodlight1.2+Mininet问题及使用安装【zoues.com】
五月 9, 2017|ITPaaSSDN

解决Floodlight1.2+Mininet问题及使用安装【zoues.com】

解决Floodlight1.2+Mininet问题及使用安装【zoues.com】

作者简介:刘宇欣,福州大学数学与计算机科学学院2015级软件工程研究生 ,研究方向:数据中心的拥塞控制;数据平面可编程。邮箱:562613629@qq.com。

前言

本来我觉得没必要写这篇教程的,因为关于安装floodlight,mininet构建数据中心拓扑的教程网上就有,何必再写这篇,这是因为我在复现的过程中,发现一些floodlight更新过程中带来的问题,一言以蔽之,就是floodlight在更新,而教程太老了。这篇教程其实就是我实现实验过程中遇到问题和解决问题的总结。包括解决了怎么安装floodlight1.2,floodlight1.2 web端无法访问,floodlight1.2 web端查看不到添加的交换机和主机的问题。

一、安装前准备工作

(1)Linux:Ubuntu14.04版本 这里提供镜像,各种版本都有http://pan.baidu.com/s/1skKN5CT 
(2)安装JDK,Ant 提供命令行 

Java

1
sudo aptget install buildessential defaultjdk ant pythondev

 
(3)安装git 提供命令行 

Java

1
sudo aptget install git

二、安装Floodlight

2.1 下载源

(1)从Github下载并编译Floodlight,提供命令行 

Java

1
git clone git://github.com/floodlight/floodlight.git 

(2)git下载速度慢的,可以选择从github上直接下载,然后解压,或者也可以从网盘下载,然后拷进虚拟机即可http://pan.baidu.com/s/1qYe2s8k

2.2 编译安装

Java

1
2
cd floodlight 
ant 

直接编译会出现如下错误,看到如下报错信息 
解决Floodlight1.2+Mininet问题及使用安装
解决Floodlight1.2+Mininet问题及使用安装
我们发现报错信息提示jdk版本需要1.8,我们看下我们的jdk版本 
解决Floodlight1.2+Mininet问题及使用安装
发现是1.7的,这是因为之前的安装jdk的命令,安装的是default-jdk,而ubuntu14.04的默认jdk是1.7,为什么会出这个问题? 

因为本文参照的教程在成稿时,floodlight不是现在1.2的版本,jdk的需求在1.7以下,所以没有问题,所以我们现在需要安装jdk1.8 
(1)源码包准备: 
首先到官网下载jdk,http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html,下载jdk-8u121-linux-x64.tar.gz 
解决Floodlight1.2+Mininet问题及使用安装
解决Floodlight1.2+Mininet问题及使用安装
(2)解压源码包 
通过终端在/usr/local目录下新建java文件夹,命令行: 

Java

1
# sudo mkdir /usr/local/java 

然后将下载到压缩包拷贝到java文件夹中,命令行: 
进入jdk源码包所在目录 

Java

1
# sudo cp jdk8u121linuxx64.tar.gz /usr/local/java 

然后进入java目录,命令行: 

Java

1
# cd /usr/local/java 

解压压缩包,命令行: 

Java

1
# sudo tar xvf jdk8u121linuxx64.tar.gz 

然后可以把压缩包删除,命令行: 

Java

1
# sudo rm jdk8u121linuxx64.tar.gz 

(3)设置jdk环境变量 
这里采用全局设置方法,它是是所有用户的共用的环境变量 

Java

1
$ sudo gedit ~/.bashrc 

如下图所示: 
解决Floodlight1.2+Mininet问题及使用安装
打开之后在末尾添加

Java

1
2
3
4
export JAVA_HOME=/usr/local/java/jdk1.8.0_121
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:JAVAHOME/lib:{JRE_HOME}/lib
export PATH=JAVAHOME/bin:PATH 

重启后我们可以发现jdk已经更新到1.8版本了 
解决Floodlight1.2+Mininet问题及使用安装
然后编译:
解决Floodlight1.2+Mininet问题及使用安装
编译成功 
解决Floodlight1.2+Mininet问题及使用安装
然后启动floodlight,通过命令行 

Java

1
# java jar target/floodlight.jar 

启动后,通过浏览器访问floodlight的管理界面,http://localhost:8080/ui/index.html 

结果出现下面的问题 ,floodlight1.2的管理界面无法访问
解决Floodlight1.2+Mininet问题及使用安装
通过查资料发现,似乎是最新的版本的问题,有两个方法解决
1)用git Submodule配置 
一种需要通过git Submodule命令进行一系列的设置,通过命令行(这边稍微解释下git Submodule命令,git Submodule 是一个很好的多项目使用共同类库的工具,他允许类库项目做为repository,子项目做为一个单独的git项目存在父项目中,子项目可以有自己的独立的commit,push,pull。而父项目以Submodule的形式包含子项目,父项目可以指定子项目header,父项目中会的提交信息包含Submodule的信息,再clone父项目的时候可以把Submodule初始化。) 

Java

1
2
3
4
# git pull origin master 
# git submodule init 
# git submodule update 
# ant 

解决Floodlight1.2+Mininet问题及使用安装
编译完后启动floodlight :

Java

1
# java jar target/floodlight.jar 

再通过http://localhost:8080/ui/index.html访问floodlight的管理界面,发现可以顺利访问 
解决Floodlight1.2+Mininet问题及使用安装
2)用旧的版本0.91
另一种,就是目前为止有效的就是下载0.91版本,即旧版本没有问题,下载地址为 
http://www.projectfloodlight.org/download/ 
解决Floodlight1.2+Mininet问题及使用安装
然后解压编译 

Java

1
2
ant 
java jar target/floodlight.jar 

再通过http://localhost:8080/ui/index.html访问floodlight的管理界面,发现可以顺利访问 
解决Floodlight1.2+Mininet问题及使用安装

三、安装mininet并连接Floodlight

安装完控制器后,我们就需要安装mininet构建拓扑结构了,命令行如下 

Java

1
sudo aptget install mininet 

接着需要构建网络拓扑,就以数据中心网络为例,我构建了一个脚本fattree.py,
解决Floodlight1.2+Mininet问题及使用安装 
完成后只需要用mininet执行脚本即可:

Java

1
# sudo mn custom /home/lyx/fattree.py topo mytopo controller=remote,ip=218.193.113.249,port=6633 switch ovsk,protocols=OpenFlow10 

请根据实际情况将ip为floodlight所在服务器的ip,添加protocols参数指定OpenFlow协议版本。然后针对port,当6633web界面没有反应时,试着换着用6653,有可能6633被占用了,特别是floodlight version1.2 (特别提醒)
mn为mininet启动命令。 

–mac指定虚拟主机的mac地址顺序编号,若不带此参数则随机编号 
–controller指定of交换机的控制器 
–switch指定虚拟交换机的类型,ovsk表示虚拟交换机为ovs Kernel mode 
–custom指定自定义拓扑文件 
–topo指定加载拓扑的名字 

执行过程如下图所示: 
解决Floodlight1.2+Mininet问题及使用安装
解决Floodlight1.2+Mininet问题及使用安装
这是0.91版本的
解决Floodlight1.2+Mininet问题及使用安装
这是1.2版本的 
解决Floodlight1.2+Mininet问题及使用安装
注意:做完试验后,建议把floodlight和mininet关闭,别直接关机,否则后果自负。

参考材料

http://www.sdnlab.com/2909.html 
http://www.linuxidc.com/Linux/2015-01/112030.htm 
https://floodlight.atlassian.net/wiki/spaces/floodlightcontroller/pages/8650780/Floodlight+VM 
https://segmentfault.com/a/1190000003076028

no comments
Share