本文主要介绍了在没有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界面。如下图:
切换到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.
http://yuba.stanford.edu/foswiki/bin/view/OpenFlow/Mininet
http://www.openflow.org/wk/index.php/OpenFlow_Tutorial
相关链接: