第二届SDN大赛--必答题1

来源:互联网 发布:linux 查看登陆的用户 编辑:程序博客网 时间:2024/06/06 04:44

第二届SDN大赛--必答题1


                                                 -------------温州大学 12网工

1小题:简单网络

一、 实验目的

搭建如图1.1所示的简单网络,通过流表操作来实现两台不同主机间的 ping 通与否。


 

1.1:简单网络拓扑

 

 

二、 实验环境搭建

(一)设计思路

如图1.1所示,简单网络由一台Controller,两台switch以及两台host组成。我们通过Controller添加流表让两台host无法ping通。

(二)设备以及平台

我们选择在物理机安装VMware Workstation 10。下载SDN Hubsdnhub.org)构建的all-in-one tutorial VM(以下称SDN虚拟机)并导入到VMware。这是一个预装了很多SDN相关的软件和工具的64位的Ubuntu 12.10虚拟机映像。内置软件和工具如下:

· SDN控制器:OpendaylightRyuFloodlightPoxTrema

· 例代码:hub,2层学习型交换机和其它应用

· Open vSwitch 1.11 :支持Openflow 1.0,实验性的支持 Openflow 1.2 和 1.3

· Mininet:创建和运行示例拓扑

· Eclipse 和 Maven

· Wireshark:协议数据包分析

我们使用的控制器为floodlight

三、 实验过程及结果

(一)初始环境

首次进入SDN虚拟机,打开终端,输入以下命令,对floodlight进行编译及运行:

>>cd floodlight

>>ant

>>java -jar target/floodlight.jar

floodlight开始监听交换机和6633端口(如图1.21.3所示)。 

 

1.2:编译并运行floodlight

 

 

1.3:已运行的floodlight

(二)mininet创建拓扑

在终端中输入以下命令创建拓扑:

>>sudo mn --custom /home/ubuntu/mininet/custom/topo-2sw-2host.py --topo mytopo --switch ovsk --controller=remote,ip=192.168.181.142,port=6633

 

topo-2sw-2host.py文件是该系统中已有的文件,可直接使用,且拓扑与题目要求相同。文件内容如下:

"""Custom topology example

Two directly connected switches plus a host for each switch:

   host --- switch --- switch --- host

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 )

    

        # Add hosts and switches

        leftHost = self.addHost( 'h1' )

        rightHost = self.addHost( 'h2' )

        leftSwitch = self.addSwitch( 's3' )

        rightSwitch = self.addSwitch( 's4' )

 

        # Add links

        self.addLink( leftHost, leftSwitch )

        self.addLink( leftSwitch, rightSwitch )

        self.addLink( rightSwitch, rightHost )

 

topos = { 'mytopo': ( lambda: MyTopo() ) }

 

结果如图1.4所示,此拓扑由两台主机h1,h2和两台交换机s3,s4组成,拓扑图如图1.1所示。

 

图1.4mininet建立拓扑

 

打开浏览器输入 http://localhost:8080/ui/index.html,进入图形化的 mininet 可视界面(如图1.51.6所示)。

 

 

 

图1.5Mininet 图形化界面

 

 

图1.6Mininet 图形化拓扑结构界面

 

(三)测试主机是否ping通

mininet中输入以下命令,测试h1h2能否ping(如图1.7所示):

>>pingall

 

图1.7:测试h1h2的连接

 

此时丢包率为 0%即两台主机h1h2可以ping通。

(四)添加流表使主机间无法ping通

终端中输入以下命令:

>>ovs-ofctl dump-flows s3

>>ovs-ofctl add-flow s3 priority=1,in_port=2,actions=drop

如图1.8和图1.9所示。图1.8中显示的流表为Controller添加的临时流表,5s后会自动失效。

 

图1.8:查看交换机s3的流表

 

图1.9:添加流表使h1h2不能连通

 

 

图1.10:添加的流表信息

由图1.10显示,在添加了该流表后,输入pingall命令,丢包率达100%,主机h1和h2无法ping通,实现题目要求。

 

 

 

0 0