Floodlight+Mininet搭建OpenFlow(一):环境搭建

本文主要介绍了在没有OpenFlow硬件设备的情况下如何搭建一个OpenFlow环境。

国外有高手也写了一份文档:

How to Build an SDN Lab without Needing OpenFlow Hardware

http://networkstatic.net/2012/07/how-to-build-an-sdn-lab-without-needing-openflow-hardware/

上面这个是采用OpenvSwitch作为OpenFlow交换机加上KVM虚拟出host来部署的,基于KVM的虚拟机对硬件要求较高,远不如Mininet的高效和简洁,当然了,这只是在实验环境下。

而我的环境搭建和这个不同,相比来说,某些方面可能更全面一点(包括可以抓OF协议包进行分析,操作配置更加简单等)。

我的平台:PC机器*1

平台细节:Ubuntu12.04+Floodlight+Mininet,其中,需要使用到虚拟机软件,我使用的是virtualbox。这样一来,整个环境如下:

PC机器上安装Floodlight,作为OpenFlow环境的控制器。

PC机器上virtualbox中运行带有Mininet的虚拟机,用来模拟出OpenFlow交换机,以及host,以及自定义的网络拓扑结构。

一 安装Floodlight

sudo apt-get install build-essential default-jdk ant python-dev
git clone git://github.com/floodlight/floodlight.git
cd floodlight
git checkout stable
ant

java -jar target/floodlight.jar #运行Floodlight

二 安装Mininet

Mininet主要是虚拟OpenFlow交换机以及host节点。并且能构造出自定义的拓扑。虚拟OpenFlow交换机主要是基于OpenvSwitch。

http://floodlight.openflowhub.org/files/floodlight-vm.zip (目前这个文件已经丢失)

https://github.com/mininet/mininet/blob/master/INSTALL (安装可参考这个)

这是Floodlight提供的镜像,自带了Floodlight控制器(开机自运行),以及Mininet,以及支持OpenFlow协议的wireshark,我们只用这个镜像来虚拟拓扑以及OpenFlow交换机,而不使用自带的Floodlight控制器,而把Floodlight控制器本PC上运行。经我测试,VM中自带的Floodlight控制器抓包有问题。而且这种构造比较符合OpenFlow的概念。

下载镜像,解压,sudo执行其中的floodlightcontroller.vbox.sh,即可在VBOX中增加一个虚拟机,名叫floodlightcontroller,以root身份执行VirtualBox,启动这个VM。登录名floodlight,无需密码.

进入后给root设置密码,然后安装

sudo apt-get install libcanberra-gtk-module

三 运行支持OpenFlow的wireshark

PC上执行:

ssh -X root@VM-IP

登录以后执行:

wireshark &

在PC端就可以调用到VM中带有的支持OpenFlow的wireshark。-X参数意味着X11转发。

四 整合

之后在VM中运行mininet,并指定与controller相连。

sudo mn –controller=remote,ip=,port=<openFlowPort 6633 by default>

查看PC上floodlight信息,可以发现有OpenFlow Switch与之相连。进入http://localhost:8080/ui/index.html

可以登录floodligt的web界面。如下图:

切换到mininet中,这个命令自带创建了一个OpenFlow交换机,两个host。

执行如下,看看结果:

mininet>nodes
mininet>dump
mininet>net
mininet>pingall


此时看拓扑的实际上h2 h3是能够ping通的。OpenFlow交换机初始执行的就是一个普通二层交换,现在我们加入一个流表,从哪个口进的包就从哪个口出去。

dpctl add-flow tcp:127.0.0.1:6634 in_port=1,actions=output:1

此时在floodlight的web界面中可以看到这个flow entry。此时执行pingall发现h2 h3就无法相互ping通了。

OK,that’s end.


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

登录后才可以评论

Jerry 发表于15-11-16
2