zoukankan      html  css  js  c++  java
  • mininet实践应用

    mininet的安装和基本指令的了解

    安装过程

    在官网和一些博客的指导下,在虚拟机里安装mininet,我使用的是源代码安装方法,首先从GitHub上获取源代码git clone git://github.com/mininet/mininet,然后安装mininet,用到的指令是mininet/util/install.sh -n3V 2.5.0,中途遇到了很多问题,例如虚拟机设置出错,mininet测试报错No default OpenFlow controller found for default switch!
    经过资料查找,用git clone git://github.com/mininet/mininet ,cd mininet/util/,sudo ./install.sh -a指令安装OpenFlow模块.
    现在安装了控制器,可以进行一些mininet简单的操作和相应的拓扑应用。

    拓扑类型和基本指令

    拓扑类型有很多其中自带型拓扑有:
    1.单-拓扑:一个交换机,放射地连接一个或多个主机。

    2.最小化拓扑:只有一个交换机,交换机下面连接两个主机。

    3.线性拓扑:交换机连接呈线形排列,且每一个交换机下只能挂一个主机。

    4.树形拓扑:交换机的连接呈树形,且每个交换机下可以挂多个交换机。

    5.反向拓扑:这种拓扑类型与单一拓扑类型相同。

    6.环形拓扑:用到很少,在网上没有找到相关拓扑图。0
    除以上自带拓扑外,还可以用python文件编写或者用miniedit工具创建根据实际需要的自定义拓扑。参考资料

    这里列举一些mininet内部交互命令:
    dump:打印节点信息
    gterm:给定节点上开启gnome-terminal
    xterm:给定节点上开启xterm
    intfs:列出所有网络接口
    iperf:两个节点之间使用TCP尽心那个带宽测试
    iperfudp:两个节点间使用UDP进行带宽测试
    net:显示网络连接情况
    noecho:运行交互式窗口,关闭回应(echoing)
    pingpair:在两个节点之间互ping测试
    source:从外部文件中读取命令
    dpctl:在所有交换机上用dpctl执行相关命令,本地为tcp127.0.0.1:6634
    link:禁用或启用两个节点间的链路
    nodes:列出所有的节点信息
    pingall:所有节点间互ping
    py:执行python表达式
    sh:运行外部Shell命令
    quit/exit:退出

    mininet拓扑实战

    我这里用miniedit可视化工具进行自定义拓扑的创建。

    拓扑的创建和编辑

    首先进入mininet/example文件夹,用sudo ./miniedit.py打开miniedit可视化工具进行相应操作。
    创建自定义拓扑如图所示:

    控制器、交换机、主机的设置如下:



    最后在Edit功能中的preference中勾选Start CLI,以便输入内部指令。

    可以看到拓扑创建完成且可以输入内部指令了。

    对自定义拓扑一些简单的测试。

    首先是最基本的pingall,links,net检查各链路能否联通,各主机能否进行交互。结果如下:

    可以看到丢包率为0,各主机能够连通,链路也没问题,证明拓扑连接没有问题。
    接下来进行设备操作,用iperf测试两节点间iperf TCP带宽。

    测试总结

    我之所以创建一个这样的线性拓扑,目的是想探究主机之间的带宽和链路的关系,以及数据传输方式是否会因随机分配链路而产生带宽的变化,以上进行iperf TCP带宽测试中,我分别测了三次h1-h4,h1-h3,h1-h2,的带宽得出的平均值约为41,43,46。得到有两个结论,第一:由于链路的长短会产生带宽的差距,h1到h2只需要经过一个交换机,因此带宽会大一点,h1到其他主机要经过不同交换机和不同链路,因此带宽变小。第二:测试同一组主机,三次每次的带宽不同,得到的结论是每次交换数据会经过不同的链路分配,导致同一组主机之间的数据交换带宽也不是时刻相同。
    以上就是我对mininet的基础框架学习和简单的自定义拓扑实验,不懂的东西还有很多,例如更复杂的拓扑数据如何传输,丢包率的设置影响数据传输等,会在接下来的学习中尽力学到更多的相关知识。

  • 相关阅读:
    175. Combine Two Tables
    VirtualBox下安装CentOS7系统
    idea配置maven
    idea配置jdk
    SpringBoot在yml中添加自定义配置并识别
    多表联查另一个表的所有
    java后台判断字符串相等 equals
    查询字段内容截取
    idea刷新项目、清除项目缓存
    SpringBoot集成FreeMarker
  • 原文地址:https://www.cnblogs.com/maobenhao/p/13872541.html
Copyright © 2011-2022 走看看