zoukankan      html  css  js  c++  java
  • 2020 SDN上机第一次作业

    实验一:Mininet源码安装和可视化拓扑工具

    一、实验任务

    使用源码安装Mininet的2.3.0d6版本,并使用可视化拓扑工具生成一个最简拓扑(1台交换机连接2台主机)。

    二、实验步骤

    1.实验环境

    安装了Ubuntu 16.04.7 Desktop amd64的虚拟机

    2.实验过程

    (1)源码安装

    安装过程中使用的命令

    $ mkdir 031802112huanglong

    $ sudo apt-get install git

    $ git clone git://github.com/mininet/mininet

    $ cd mininet

    $ sudo util/install.sh -a

    $ sudo mn --version

    显示 Enjoy Mininet 的字样则表示安装成功

    使用Mininet的CLI命令行测试基本功能:$ sudo mn --test pingall

    如果出现“cannot find required executable ifconfig.“执行下面的命令安装网络工具 net-tools

    $ sudo apt install net-tools

    (2)使用可视化工具

    使用的命令

    $ sudo ./mininet/examples/miniedit.py

    执行界面如下,可以拖动左侧边栏的主机 Host、交换机 Switch、路由器 Router、
    网络链路 NetLink、控制器 Controller 等组件到右侧空白处,实现网络拓扑的可视
    化仿真。 

    完成相关设置

    最简拓扑结构:

    目标拓扑:

     run起来,开始拓扑

     然后再 pingall 测试连通性

     最后File选择Export Level 2 Script,保存为py脚本。

    三、实验结果

     miniedittopo.py文件内容:

    #!/usr/bin/python

    from mininet.net import Mininet
    from mininet.node import Controller, RemoteController, OVSController
    from mininet.node import CPULimitedHost, Host, Node
    from mininet.node import OVSKernelSwitch, UserSwitch
    from mininet.node import IVSSwitch
    from mininet.cli import CLI
    from mininet.log import setLogLevel, info
    from mininet.link import TCLink, Intf
    from subprocess import call

    def myNetwork():

    net = Mininet( topo=None,
    build=False,
    ipBase='10.0.0.0/8')

    info( '*** Adding controller ' )
    c0=net.addController(name='c0',
    controller=Controller,
    protocol='tcp',
    port=6633)

    info( '*** Add switches ')
    s1 = net.addSwitch('s1', cls=OVSKernelSwitch)
    s2 = net.addSwitch('s2', cls=OVSKernelSwitch)

    info( '*** Add hosts ')
    h1 = net.addHost('h1', cls=Host, ip='10.0.0.1', defaultRoute=None)
    h2 = net.addHost('h2', cls=Host, ip='10.0.0.2', defaultRoute=None)
    h4 = net.addHost('h4', cls=Host, ip='10.0.0.4', defaultRoute=None)
    h3 = net.addHost('h3', cls=Host, ip='10.0.0.3', defaultRoute=None)

    info( '*** Add links ')
    net.addLink(h1, s1)
    net.addLink(h3, s1)
    net.addLink(s1, s2)
    net.addLink(s2, h4)
    net.addLink(s2, h2)

    info( '*** Starting network ')
    net.build()
    info( '*** Starting controllers ')
    for controller in net.controllers:
    controller.start()

    info( '*** Starting switches ')
    net.get('s1').start([c0])
    net.get('s2').start([c0])

    info( '*** Post configure switches and hosts ')

    CLI(net)
    net.stop()

    if __name__ == '__main__':
    setLogLevel( 'info' )
    myNetwork()

  • 相关阅读:
    Yii2安装任务调度扩展
    分享书籍[writing idiomatic python ebook]
    python待解决问题笔记
    dojo使用笔记: 自定义ConfirmDialog
    dojo使用疑难杂症集锦
    学习"大众点评网的架构设计与实践"
    一个前端html模板处理引擎(javascript)
    日历设计之重复事件规则设计
    TCP/IP之TCP的建立与终止
    python正则表达式
  • 原文地址:https://www.cnblogs.com/huanglong1123/p/13609244.html
Copyright © 2011-2022 走看看