解决Floodlight1.2+Mininet问题及使用安装

作者简介:刘宇欣,福州大学数学与计算机科学学院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 提供命令行 

 
(3)安装git 提供命令行 

二、安装Floodlight

2.1 下载源

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

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

2.2 编译安装

直接编译会出现如下错误,看到如下报错信息 


我们发现报错信息提示jdk版本需要1.8,我们看下我们的jdk版本 

发现是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 


(2)解压源码包 
通过终端在/usr/local目录下新建java文件夹,命令行: 

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

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

解压压缩包,命令行: 

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

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

如下图所示: 

打开之后在末尾添加

重启后我们可以发现jdk已经更新到1.8版本了 

然后编译:

编译成功 

然后启动floodlight,通过命令行 

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

结果出现下面的问题 ,floodlight1.2的管理界面无法访问

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


编译完后启动floodlight :

再通过http://localhost:8080/ui/index.html访问floodlight的管理界面,发现可以顺利访问 

2)用旧的版本0.91
另一种,就是目前为止有效的就是下载0.91版本,即旧版本没有问题,下载地址为 
http://www.projectfloodlight.org/download/ 

然后解压编译 

再通过http://localhost:8080/ui/index.html访问floodlight的管理界面,发现可以顺利访问 

三、安装mininet并连接Floodlight

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

接着需要构建网络拓扑,就以数据中心网络为例,我构建了一个脚本fattree.py,
 
完成后只需要用mininet执行脚本即可:

请根据实际情况将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指定加载拓扑的名字 

执行过程如下图所示: 


这是0.91版本的

这是1.2版本的 

注意:做完试验后,建议把floodlight和mininet关闭,别直接关机,否则后果自负。

参考材料

https://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


  • 本站原创文章仅代表作者观点,不代表SDNLAB立场。所有原创内容版权均属SDNLAB,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用,转载须注明来自 SDNLAB并附上本文链接。 本站中所有编译类文章仅用于学习和交流目的,编译工作遵照 CC 协议,如果有侵犯到您权益的地方,请及时联系我们。
  • 本文链接https://www.sdnlab.com/19189.html
分享到:
相关文章
条评论

登录后才可以评论

yuxinliu 发表于17-05-09
8