[原创]首次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便可实现交替访问了。

相关文章
相关标签/搜索