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

ant

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

二 安装Mininet

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

http://floodlight.openflowhub.org/files/floodlight-vm.zip

这是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=<controller ip> –port=<openFlowPort 6633 by default>

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

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

  Floodlight+Mininet搭建OpenFlow(一):环境搭建_第1张图片

    

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

执行如下,看看结果:

mininet>nodes

mininet>dump

mininet>net

mininet>pingall

Floodlight+Mininet搭建OpenFlow(一):环境搭建_第2张图片

此时看拓扑的实际上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.

http://yuba.stanford.edu/foswiki/bin/view/OpenFlow/Mininet

http://www.openflow.org/wk/index.php/OpenFlow_Tutorial

相关链接:

  1. Floodlight+Mininet搭建OpenFlow(二):协议分析http://blog.csdn.net/zwto1/article/details/23282579
  2.  Floodlight+Mininet搭建OpenFlow(三):Floodlight进阶http://blog.csdn.net/zwto1/article/details/23432093
  3. Floodlight+Mininet搭建OpenFlow(四):流表操作http://blog.csdn.net/zwto1/article/details/23432291
  4. Floodlight+Mininet搭建OpenFlow(五):复杂网络http://blog.csdn.net/zwto1/article/details/23432431

你可能感兴趣的:(Floodlight+Mininet搭建OpenFlow(一):环境搭建)