SDN环境搭建

我的平台:PC机器*1

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

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

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

一 安装Floodlight

Sudo apt-get install git

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

sudo apt-get install ant

配置java环境变量。从jdk官网下载linux_86版本并拷贝至任意目录下,解压至/usr/lib/jvm目录下,进行环境变量配置。

sudo gedit /etc/profile

添加以下代码:

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_31   //改为你的文件夹名称

export JRE_HOME=${JAVA_HOME}/jre  

export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib  

export PATH=${JAVA_HOME}/bin:$PATH

重新启动ubuntu系统或者执行source /etc/profile使配置生效。执行$:  env |grep jdk,可以查看环境变量如下:

JRE_HOME=/usr/lib/jvm/jdk1.8.0_31/jre

PATH=/usr/lib/jvm/jdk1.8.0_31/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

JAVA_HOME=/usr/lib/jvm/jdk1.8.0_31

CLASSPATH=.:/usr/lib/jvm/jdk1.8.0_31/lib:/usr/lib/jvm/jdk1.8.0_31/jre/lib

执行$:  java-version显示如下:

java version "1.8.0_31"

Java(TM) SE Runtime Environment (build 1.8.0_31-b13)

Java HotSpot(TM) Client VM (build 25.31-b07, mixed mode)

则环境变量配置成功。

cd floodlight

ant

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

二 安装Mininet

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

https://github.com/mininet/mininet/wiki/Mininet-VM-Images

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

下载镜像,解压, 先将文件mininet-2.0.0-113012-amd64-ovf.zip复制到磁盘上,解压后产生.vmdk文件,再使用Virtualbox导入.vmdk文件。单击启动按钮,启动虚拟机,账号密码都为mininet.同时为网卡采用桥接方式。注:如果没有地址分配,执行下:

$ sudo  dhclient  eth1//对应网卡DHCP分配IP地址

$ ifconfig –a

注释:虚拟机为桥接方式。

四 整合

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

注释:两个虚拟机设置为桥接方式,处于一个网段。

sudo mn --controller=remote,ip=,port=

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

可以登录floodligtweb界面。如下图:

 

切换到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

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

OK,that’s end.

你可能感兴趣的:(SDN,linux,linux,open,flow,SDN,环境搭建,mininet)