zoukankan      html  css  js  c++  java
  • 2019 SDN上机第1次作业

    1.作业要求:

    • 安装轻量级网络仿真工具Mininet
    • 用字符命令搭建给定的拓扑结构,并写出命令
    • 利用可视化工具搭建给定的拓扑结构,并要求支持OpenFlow 1.0 1.1 1.2 1.3,设置h1(10.0.0.10)、h2(10.0.0.11)、h3(10.0.0.12),拓扑搭建完成后使用命令验证主机ip,查看拓扑端口连接情况
    • 利用Python脚本完成给定的一个Fat-tree型的拓扑(交换机和主机名需与图中一致,即s1s6,h1h8,并且链路正确,请给出Mininet相关截图)
    • 作业博客链接:https://edu.cnblogs.com/campus/fzu/fzusdn2019/homework/9902

    2.具体操作步骤与截图说明:

    实验环境:VMware Workstation Pro14.1、ubuntu-16.04

    (1)安装轻量级网络仿真工具Mininet(使用GitHub源码进行安装):

    a.先在Ubuntu上安装git,打开终端并输入:

    sudo apt-get install git
    

    安装成功后终端上会显示如下界面:

    b.安装git成功后,在终端上输入:

    sudo git clone http://www.github.com/mininet/mininet
    

    git clone成功后终端上会显示如下界面:

    c.进入mininet目录下的util文件,执行install.sh脚本,参数-a表示默认全部安装,具体执行步骤如下:

    cd mininet
    cd util
    ./install.sh -a
    

    输入用户密码后系统就会自动执行安装了,安装过程可能会有点漫长,要耐心等待,安装成功后终端界面上会显示:

    (2)用字符命令搭建给定的拓扑结构,并写出命令:

    a.给定的拓扑结构如下所示:

    具体实现步骤:打开终端,在终端上输入:

    sudo mn --topo linear,3
    

    终端界面上会显示:

    b.给定的拓扑结构如下所示:

    具体实现步骤:打开终端,在终端上输入:

    sudo mn --topo tree,fanout=3,depth=2
    

    终端界面上会显示:

    注意在每次新建拓扑结构时要在终端上输入以下命令,以消除上次建立的拓扑结构的影响:

    sudo mn -c
    

    (3)利用可视化工具搭建给定的拓扑结构,并要求支持OpenFlow 1.0 1.1 1.2 1.3,设置h1(10.0.0.10)、h2(10.0.0.11)、h3(10.0.0.12),拓扑搭建完成后使用命令验证主机ip,查看拓扑端口连接情况

    给定的拓扑结构如下所示:

    具体实现步骤:

    a.进入mininet目录下的examples文件,运行miniedit.py脚本:

    cd mininet/examples
    sudo ./miniedit.py
    

    会出现相应的可视化拓扑控件,如下图所示:

    b.使用可视化拓扑控件建立如下拓扑:

    c.对设备进行配置,点击主机选择“Properties”选项,分别给主机h1、h2、h3设置IP地址(10.0.0.10)、(10.0.0.11)、(10.0.0.12):

    配置好IP地址后,在“Edit”中选择“Preferences”,进入此界面,可勾选“Start CLI”,这样的话,就可以命令行界面直接对主机等进行命令操作,也可以选择交换机支持的OpenFlow协议版本:

    d.保存好设计的拓扑结构,并点击Run按钮,运行网络:

    网络运行成功后,终端界面上会显示:

    e.使用net命令查看拓扑:

    f.使用xterm命令和ifconfig验证主机ip,查看拓扑端口连接情况:

    (4)利用Python脚本完成给定的一个Fat-tree型的拓扑(交换机和主机名需与图中一致,即s1s6,h1h8,并且链路正确,请给出Mininet相关截图)

    给定的Fat-tree型的拓扑如下图所示:

    Python代码如下所示:

    from mininet.topo import Topo
    from mininet.net import Mininet
    from mininet.node import RemoteController,CPULimitedHost
    from mininet.link import TCLink
    from mininet.util import dumpNodeConnections
     
    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( 's{}'.format( i + 1 ) )
                    c.append( sw )
        
            # add aggregation ovs
            for i in range( L2 ):
                    sw = self.addSwitch( 's{}'.format( L1 + i + 1 ) )
                    a.append( sw )
        
            # add edge ovs
     
            # 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
     
            #add hosts and its links with edge ovs
            count = 1
            for sw1 in a:
                    for i in range(2):
                        host = self.addHost( 'h{}'.format( count ) )
                        self.addLink( sw1, host )
                        count += 1
    topos = { 'mytopo': ( lambda: MyTopo() ) }
    

    将写好的Python脚本保存好之后,打开终端输入以下命令:

    sudo mn --custom fattree.py --topo mytopo --switch ovsk,protocols=OpenFlow10
    

    运行结果如下所示:

    使用net命令查看拓扑:

    参考链接:https://www.sdnlab.com/15128.html

    3.实验总结:

    ​ 在这次作业中,我学到了一些之前没有接触过的东西,首先,我学会了在虚拟机Ubuntu上使用GitHub源码安装Mininet。之后通过使用mininet,我懂得如何用字符命令搭建一些简单的网络拓扑,了解了如何利用可视化控件搭建网络拓扑,并利用一些简单的命令来查看拓扑搭建完成后主机的ip、拓扑端口连接情况等。通过这次实验,我加深了对网络拓扑的理解和认识,有了不少的收获。

  • 相关阅读:
    shell进行mysql统计
    java I/O总结
    Hbase源码分析:Hbase UI中Requests Per Second的具体含义
    ASP.NET Session State Overview
    What is an ISAPI Extension?
    innerxml and outerxml
    postman
    FileZilla文件下载的目录
    how to use webpart container in kentico
    Consider using EXISTS instead of IN
  • 原文地址:https://www.cnblogs.com/chenyoukun/p/11784762.html
Copyright © 2011-2022 走看看