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拓撲。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章