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


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

    一、 实验目的

    掌握 Mininet 的源码安装方法和 miniedit 可视化拓扑生成工具。

    二、实验任务

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

    三、 实验步骤

    1. 实验环境

    安装了 Ubuntu 18.04.5 Desktop amd64 的虚拟机

    2. 实验过程

    (1)源码安装

    $ mkdir sdn //新建 sdn 目录, 所有的应用安装在该目录下
    $ sudo apt-get install git //安装 git
    $ cd sdn //进入 sdn 目录
    $ git clone git://github.com/mininet/mininet //下载 mininet 源码
    $ cd mininet
    $ sudo util/install.sh -a //在 mininet 目录下执行, -a 表示完整安装
    $ sudo mn --version //查看版本
    

    • 如果安装缓慢,可以尝试更换apt源(我更换了国内的阿里源)

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

    (2)使用可视化工具

    sudo ./mininet/examples/miniedit.py //在 Mininet 安装目录下执行
    

    执行这一步的时候出现了问题,运行miniedit.py时报错ImportError: No module named mininet.log

    • 如果根据网上已有的解决方案更改python版本会导致最后一步导出拓扑失败(注: 经查阅资料得知可以解决,解决方案附在实验步骤最后)
    • 老师给出了较为完善和方便的解决方案(本文采用该解决方案)

    解决方案:

    sudo cp -r /usr/local/lib/python3.6/dist-packages/ /usr/local/lib/python2.7/
    

    执行上述语句,将缺少的库拷贝到对应位置。

    再次执行

    sudo ./mininet/examples/miniedit.py
    

    问题解决

    将 4 台 Host、 2 台 Switch 和 1 台 Controller 拖出,并用 NetLink 连接,形成下图所示的网络拓扑

    鼠标右键点击 Host 和 Controller,选择设置属性(Properties): Host 部分主要是 将四台host的ip分别修改为10.0.0.1~10.0.0.4.Controller 部分主要是设置控制器类型,此处可按默认设置,如果是外部控制器,要选择 Remote Controller,之后填上 Controller 的 ip,如果是本机则按照默认的 127.0.0.1 即可。

    点击左上角的 Edit,进行全局设置,此时在默认设置的基础上,勾选“Start CLI”,将 OpenFlow 1.1 1.2 1.3 全部勾选。

    系统的 Terminal 上会显示当前确认的设置。

    点击左下角的 Run,运行拓扑,由于开启了 CLI,可使用 pingall 命令测试主机的
    连通性,并做其他扩展操作。

    拓扑生成并确认无误之后,可以点击 miniedit 左上角的 File 菜单,选择 Export Level 2 Script,将拓扑保存为 Python 脚本,方便之后执行脚本一键生成。

    (3)$\beta $世界线

    更改python版本后执行最后一步时导致的导出异常解决方案

    进入mininet/examples/, 编辑miniedit.py (可能需要用chmod修改读写权限)

    将该文件的1702行修改为

    f = open(fileName, 'w')
    

    保存后重新运行即可解决问题。

    四、实验心得

    • 通过SDN可以使传统网络的数据与控制解耦,增加网络灵活性
    • 做实验的时候遇到问题及时搜索解决方案,如果百度搜索不到,可以使用google搜索(实验过程最后的解决方案就是通过google找到的stackoverflow上的方案,百度完全找不到)

    五、参考链接

  • 相关阅读:
    junit单元测试:@Before、@After
    package打包报错:There are test failures
    报错:程序包com.sun.image.codec.jpeg不存在
    报错:Caused by: java.sql.SQLException: Field 'id' doesn't have a default value
    elementui表格table组件的树形表格
    Linux常用命令
    黑马程序员hibernate2017版4天的讲义免费下载
    腾讯云服务器如何开放端口?
    文本编辑器中使用正则表达式进行替换的示例
    Lambda表达式
  • 原文地址:https://www.cnblogs.com/forestj/p/13608618.html
Copyright © 2020-2023  润新知