[原創]首次SDN比賽的記錄-部分

SDN大賽環境搭建和第一大題實現html

  因爲物理設備不足的緣由,故用虛擬機實現Floodlight控制器,openvswitch(如下簡稱:OVS)和mininet各類要用到的SDN環境的搭建。下面將給出它們的搭建步驟和截圖,而後再用mininet模擬給出大賽題目的實現的要求。java

  環境:ubuntu-12.04-64bit(能接入Intenet上網)python

<1>安裝Floodlight控制器linux

  1)在root家目錄下執行以下命令:git

   #apt-get updategithub

      #apt-get install build-essential default-jdk ant python-devweb

      #apt-get install git數據庫

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

      #cd floodlightubuntu

      #git checkout fl-last-passed-build 或者 git checkout stable

      #ant //整合

      #java –jar ~/floodlight/target/floodlight.jar  //啓動服務

  2)下圖爲Floodlight正常啓動情形:

     

  上圖爲Floodlight已經啓動,處於監聽狀態。此時,在瀏覽器中輸入:http://localhost:8080/ui/index.html 便可打開Floodlight的Web界面。如圖:

     

  3)配置Floodlight的GUI界面,下載avior-1.3_win_x32.jar。

         經過如下命令啓動avior:

    #java –jar avior-1.3_win_x32.jar

    如圖:

     

    在圖中的IP輸入框中輸入安裝Floodligt控制器機器的IP地址,點擊Launch。則進入下圖界面:

       

  經過avior能夠圖形化管理Floodlight。

  到此爲止,Floodlight控制器搭建完畢。

 

<2>安裝OVS交換機

       1)使用root權限,安裝所需軟件:

       #apt-get install build-essential

       #apt-get install openssl

 

  2)安裝openvswitch-1.9.3:

       1.將下載文件拷貝到/home/ruanjian/文件夾下;

       2.解壓:#tar -xzf openvswitch-1.9.3.tar.gz

       3.生成內核模式的OpenvSwitch時需指定內核源碼編譯目錄,基本步驟爲:

           #cd openvswitch-1.9.3/

           #./configure --with-linux=/lib/modules/`uname -r`/build

           #make && make install

           #insmod datapath/linux/openvswitch.ko

       4.創建OpenvSwitch配置文件和數據庫:

           #mkdir -p /usr/local/etc/openvswitch

           #ovsdb-tool create /usr/local/etc/openvswitch/conf.db /usr/local/share/openvswitch/vswitch.ovsschema

       5.啓動配置數據庫:

           #ovsdb-server --remote=punix:/usr/local/var/run/openvswitch/db.sock --remote=db:Open_vSwitch,manager_options --private-key=db:SSL,private_key --certificate=db:SSL,certificate --bootstrap-ca-cert=db:SSL,ca_cert --pidfile --detach

       6.初始化數據庫:

           #ovs-vsctl --no-wait init

       7.啓動OpenvSwitch daemon,鏈接到一樣的Unix domain socket上:

           #ovs-vswitchd --pidfile --detach

   8.安裝結束。

 

  3)啓動OVS:

       當第二次使用的時候須要啓動OVS,步驟爲:

       1.進入目錄:

              #cd openvswitch-1.9.3/

       2.加載openvswitch模塊:

              #insmod datapath/linux/openvswitch.ko

       3.啓動配置數據庫:

              #ovsdb-server --remote=punix:/usr/local/var/run/openvswitch/db.sock --remote=db:Open_vSwitch,manager_options --private-key=db:SSL,private_key --certificate=db:SSL,certificate --bootstrap-ca-cert=db:SSL,ca_cert --pidfile --detach

       4.初始化數據庫(可選,第一次安裝時必須輸入,啓動不須要輸入,但輸入也不會有問題)

              #ovs-vsctl --no-wait init

       5.啓動OpenvSwitch daemon,鏈接到一樣的Unix domain socket上:

              #ovs-vswitchd --pidfile --detach

       6.啓動完成。

<3>安裝mininet模擬器

  1)安裝步驟:

    #rm /usr/local/bin/ovs* /usr/local/sbin/ovs*  //刪除OVS的殘餘

    #apt-get install mininet/precise-backports   //安裝mininet

       2)啓動mininet:

         #mn(報錯,6633端口默認啓用。需關閉:#netstat -nap|grep 6633找到進程號以後用:(#kill 進程號)或(#kill -9 進程號)殺死進程)

         #service openvswitch-switch start

        #mn –controller=remote,ip=210.38.2487.2,ports=6633 //指定Floodlight爲遠程控制器(前提:上述過程安裝的Floodlight已啓動)。

      4)啓動成功。以下圖爲啓動狀況和默認拓撲圖狀況:

     

     

      5)此時能夠經過Web界面看到相關信息和拓撲圖,以下圖:

      1.Dashboard

     

  2.Topology

     

  3.Switches

     

  4.Hosts

     

 

<4>安裝wireshark

      1.安裝:

            #apt-get install wireshark

  2.啓動wireshark:

            #wireshark  或者 #wireshark &   //後臺運行

      以下圖:

     

  3.修改配置文件去除錯誤提示:

           1)#vi /etc/wireshark/init.lua

    2)將文件的倒數第二行用「--」註釋便可。即:--dofile(DATA_DIR.."console.lua")

           3)重啓wireshark便可。

  4.使用:

            啓動wireshark後,啓動floodlight控制器,而後啓動mininet。在wireshark界面Filter中輸入of(過濾openflow數據包)並打開lo接口開始抓包。將會有數據包信息刷新 記錄。以下圖:

      

<5>安裝xterm

  1.安裝須要軟件:

            #apt-get install screen

  2.在圖形界面啓動mininet,而後啓動節點設備的xterm便可。如:xterm h1 h2 h3 s4 s5 c0 。以下圖:

     

  3.進入mininet後輸入:#xterm -sb &   //能夠單獨對mininet進行操做。以下圖:

     

1、       必答題

 

  1. 經過上述搭建的環境,啓動mininet。默認拓撲圖以下: 

                  

  2.此時host1 ping host2,結果是ping不通。以下圖:

     

  3.開啓另外一個終端,查看一下s1的流表。結果爲空。以下圖:

     

  4.使用命令添加流表,實現host1能ping通host2並查看此時s1的流表以下圖:

 

    1)添加流表:

     

    2)ping測試:

     

  3)查看s1流表:

     

       5.到此爲止,必答題完成。

 

2、       選答題(A題):

 

  1. 根據題目要求,自定義以下拓撲圖結構進行試驗:

 

  2.實現思路:

        經過自定義拓撲圖結構,在mininet上運行該自定義拓撲結構。而後修改兩個bridge上的流表實現通信要求。根據要求,要實現host1能與host二、host3通信實現能遠程桌面,而host2和host3之間不能通信。那麼經過下發流表實現,創建流表的核心是兩個bridge上相連的port,s4上與s5相連的port2把來自host1的數據轉發到s5。同時,把來自s5的數據轉發到host1相連的port1上。而後s5上與s4相連的port1把s5上的port2(鏈接host2)和port3(鏈接host3)的數據都轉發到s4。同時,把來自s4的數據FLOOD到初port1的全部port。除此流表以外的全部數據均不能相互轉發通信。便可實現host1與host二、host3通信,而host2不能與host3通信。

  3.新建topo-2sw-3host.py文件,自定義拓撲圖。代碼以下:

     

  4.啓動該拓撲圖:

     

  1)查看拓撲結構:

     

  2)經過Floodlight的Web界面查看:

     

  5.ping測試,如今爲全ping通狀態。以下圖:

       

  6.分別爲s4和s5添加相應的流表,實現host1能ping通host2和host3,但host2不能ping通host3。以下圖:

      1)添加流表

     

      2)ping測試

     

  3)查看s4和s5的流表

     

      7.到此爲止,選答題完成。

 

3、實現web交替訪問:

  應用topo-2sw-3host.py的拓撲圖結構,開啓mininet並使用mininet外的floodlight。分別在host2和host3中創建以下兩個文件:index.html和test.py。前者用於網站首頁訪問,後者用於開啓簡單web服務。Test.py內容爲:import SimpleHTTPServer \換行 SimpleHTTPServer.test()

並在控制器下編寫load balancer腳本load.sh。內容以下:

  

而後再控制器上啓動腳本:./load.sh

以後,在host2和host3上經過命令:python test.py 100 &後臺開啓簡單web服務。在host1上訪問:wget –O – http://10.0.0.200:100便可實現交替訪問了。

相關文章
相關標籤/搜索