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()

  • 相关阅读:
    Nginx应用详解及配置
    mongodb复制+分片集原理
    memcached架构及缓存策略
    redis数据类型
    redis数据库安装 redis持久化及主从复制
    shell脚本-正则、grep、sed、awk
    kvm虚拟机管理基础
    kvm热添加和热迁移
    zabbix调用api检索方法
    kubernetes deployment升级和回滚
  • 原文地址:https://www.cnblogs.com/huanglong1123/p/13609244.html
Copyright © 2011-2022 走看看