mininet2.2.1 + floodlight1.9 环境搭建

简介#

mininet是什么?##

Stanford 大学 Nick McKeown 教授领导的研究小组基于 Linux Container 架构,开发出了这套进程虚拟化的平台。在 Mininet 的帮助下,你可以轻易的在自己的笔记本上测试一个软件定义网络 (Software-Defined Networks),对基于 Openflow、Open vSwitch 的各种协议等进行开发验证,或者验证自己的想法。

最令人振奋的是,所有的代码几乎可以无缝迁移到真实的硬件环境中。在实验室里,一行命令就可以创建一个支持 SDN 的任意拓扑的网络结构,并可以灵活的进行相关测试,验证了设计的正确后,又可以轻松部署到真实的硬件环境中。目前 Mininet 已经作为官方的演示平台对各个版本的 Openflow 协议进行演示和测试。

floodlight是什么?##

Floodlight是Apache授权并且基于JAVA开发的企业级OpenFlow控制器,它的稳定性、易用性已经得到SDN专业人士以及爱好者们的一致好评,并因其完全开源,这让SDN网络世界变得更加有活力。控制器作为SDN网络中的重要组成部分,能集中地灵活控制SDN网络,为核心网络及应用创新提供了良好的扩展平台。

简言之,我们通过mininet对SDN网络拓扑进行模拟,在通过floodlight(SDN控制器)对所模拟出的网络进行控制。

本文介绍了在virtual box虚拟机中安装mininet2.2.1+floodlight0.91仿真环境的过程,直接在Ubuntu中的环境搭建也可以参考本文。

安装#

系统安装##

VirtualBox下载地址

Ubuntu14.04下载地址,获取安装镜像选择Ubuntu14.04.4(amd64,LiveCD)。

虚拟机中安装64系统需要开启主板vt,具体安装过程不做赘述。

虚拟机的网络连接模式可以选择桥接模式,这样在本机中也可以通过网页浏览器观察floodlight控制器的情况。

虚拟机扩展工具安装:装好的虚拟机无法全屏,是因为在虚拟机系统里没有安装VirtualBox的增强驱动。首先启动虚拟机,点击设备,选择安装增强功能即可。本段参考地址

floodlight安装##

首先安装1.7版本以上的java

sudo apt-get install openjdk-7-jkd

选择我们刚刚安装的java版本,如果是新系统,本步骤无需执行

sudo update-alternatives --config java

确认java版本

java -version

升级本地的更新源

sudo apt-get update

安装java,python的运行和开发环境

sudo apt-get install build-essential defualt-jdk ant python-dev

安装git

sudo apt-get install git

克隆floodlight

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

进入floodlight目录

cd floodlight

查看floodlight版本情况

sudo git tag

选择v2.2.1分支

git checkout -b v0.91 v0.91

编译floodlight

sudo ant

运行floodlight

sudo java -jar target/floodlight.jar

查看虚拟机的ip地址

ifconfig

打开Firefox浏览器,输入地址,即可在网页中看到floodlight控制器中所得到的信息。本操作也可以在安装此台虚拟机的主机中执行。

http://*虚拟机IP*:8080/ui/index.html

mininet安装##

新建终端,用apt-get安装mininet

sudo apt-get install mininet

升级mininet版本

sudo git-clone https://github.com/mininet/mininet

进入mininet目录

cd mininet

查看mininet版本情况

sudo git tag

选择v2.2.1分支

git checkout -b 2.2.1 2.2.1

完整安装mininet VM以及其他依赖关系,以及openflow wireshark分离器和pox。

sudo ./util/install.sh -a

查看mininet版本号

mn --version

mininet与floodlight的连接##

可选择的,这里选择FatTree的SDN拓扑结构。

进入mininet的custom目录

cd ~/mininet/custom

新建FatTree.py脚本

sudo gedit ./FatTree.py

脚本内容如下

"""Custom topology example
Adding the 'topos' dict with a key/value pair to generate our newly defined
topology enables one to pass in '--topo=mytopo' from the command line.
"""
 
from mininet.topo import Topo
 
class MyTopo( Topo ):
    "Simple topology example."
 
    def __init__( self ):
        "Create custom topo."
 
        # Initialize topology
        Topo.__init__( self )
        L1 = 2
        L2 = L1 * 2 
        L3 = L2
        c = []
        a = []
        e = []
          
        # add core ovs  
        for i in range( L1 ):
                sw = self.addSwitch( 'c{}'.format( i + 1 ) )
                c.append( sw )
    
        # add aggregation ovs
        for i in range( L2 ):
                sw = self.addSwitch( 'a{}'.format( L1 + i + 1 ) )
                a.append( sw )
    
        # add edge ovs
        for i in range( L3 ):
                sw = self.addSwitch( 'e{}'.format( L1 + L2 + i + 1 ) )
                e.append( sw )
 
        # add links between core and aggregation ovs
        for i in range( L1 ):
                sw1 = c[i]
                for sw2 in a[i/2::L1/2]:
                # self.addLink(sw2, sw1, bw=10, delay='5ms', loss=10, max_queue_size=1000, use_htb=True)
			self.addLink( sw2, sw1 )
 
        # add links between aggregation and edge ovs
        for i in range( 0, L2, 2 ):
                for sw1 in a[i:i+2]:
	                for sw2 in e[i:i+2]:
                # self.addLink(sw2, sw1, bw=10, delay='5ms', loss=10, max_queue_size=1000, use_htb=True)
				self.addLink( sw2, sw1 )
 
        #add hosts and its links with edge ovs
        count = 1
        for sw1 in e:
                for i in range(2):
                	host = self.addHost( 'h{}'.format( count ) )
                	self.addLink( sw1, host )
                	count += 1
topos = { 'mytopo': ( lambda: MyTopo() ) }

保存并退出,运行mininet并连接floodlight

sudo mn --custom ~/mininet/custom/FatTree.py --topo mytopo --controller=remote,ip=*虚拟机IP*,port=6653

在网页中打开floodlight控制器,可以看到刚刚配置的FatTree拓扑。

posted @ 2018-04-18 11:36  bryanting  阅读(1004)  评论(0编辑  收藏  举报