美文网首页Ryu
mininet入门(二)

mininet入门(二)

作者: 糯米藕 | 来源:发表于2015-11-25 16:53 被阅读8019次

    基本操作命令

    help/-h是学习命令最好的方式,首先查看启动mininet相关的参数:

    sudo mn -h
    

    其中最常用的几个参数是:controller、topo、custom、switch。controller用来指定控制器,一般后跟控制器IP和port,topo用来指定拓扑类型,一共有五种类型的拓扑,分别是single、linear、tree、reversed和minimal,而custom用于自定义拓扑,读取python文件中定义的拓扑。switch用于指定交换机类型。

    启动mininet后,再次使用help学习mininet的相关命令:

    help
    

    其中查看信息常用的命令是:

    nodes           #列出所有结点
    net             #列出所有网络链路
    dump            #列出结点、链路相关信息
    h1 ifconfig -a  #显示h1的网络接口信息
    s1 ps -a        #显示s1的所有进程
    

    测试网络连通性常用的命令:

    h1 ping h2          #h1 ping h2
    h1 ping -c 5 h2  #h1 ping h2,并有-c限定次数
    pingall          #所有主机间互ping
    

    其他命令:

    exit              #退出mininet命令行
    sudo mn -c        #清除mininet缓存
    sudo mn --innamespace --switch user #仅用于user模式,将switch置于不同的namespace中,隔离不同的交换机
    

    当然,不进入mininet命令行界面也可以测试连通性和带宽,这就需要借助--test了:

    sudo mn --test pingair  #测试连通性
    sudo mn --test iperf    #测试带宽
    

    当然使用test的同时还可以使用--topo指定拓扑类型。

    mininet常用的命令参数

    --topo

    mininet一共有五种类型的拓扑,分别是single、linear、tree、reversed和minimal,其中single和reversed出来的效果是一致的,而minimal是默认的拓扑结构。

    可以通过命令查询topo类型:

    sudo mn help
    

    查询到的参数如下所示:


    help.PNG

    1、single
    single指单个,这种类型的拓扑只有一个交换机,而主机的个数可以任意指定。拓扑呈星型。

    sudo mn --topo=single,3 --controller=remote,ip=[],port=[]
    

    拓扑如下所示:


    single.PNG

    2、linear
    linear指直线,一个交换机配一个主机,而主机和交换机的个数都可以任意指定。拓扑呈直线型。

    sudo mn --topo=linear,3 --controller=remote,ip=[],port=[]
    

    拓扑如下所示:


    linear.PNG

    3、tree
    tree意为树,这种类型的拓扑显然呈数状,交换机呈树杈状分散开来,最下面一层的交换机挂两个主机。tree后面的参数是指树的个数。

    sudo mn --topo=tree,3 --controller=remote,ip=[],port=[]
    

    拓扑如下所示:


    tree.PNG

    4、reversed
    reversed指颠倒、反的,这种类型的拓扑与single的拓扑一致。

    sudo mn --topo=reversed,3 --controller=remote,ip=[],port=[]
    

    拓扑如下所示:


    reversed.PNG

    4、minimal
    minimal指最小的,是默认的mininet拓扑,默认一个 交换机挂两个主机,不跟参数。

    sudo mn --topo=minimal --controller=remote,ip=[],port=[]
    

    拓扑如下所示:


    minimal.PNG

    当然,也可以用--custom自定义拓扑。

    --custom

    使用python API可以轻松的定义拓扑结构,例如以下示例,mytopo.py定义了一个3个主机的星型拓扑:

    #!/usr/bin/python
    from mininet.topo import Topo
    
    class MyTopo( Topo ):
    
    def __init__( self ):
      
        # Initialize topology
        Topo.__init__( self )
    
        # Add hosts and switches
        leftHost = self.addHost( 'h1' )
        rightHost = self.addHost( 'h2' )
        middleHost = self.addSwitch( 'h3' )
        Switch = self.addSwitch( 's0' )
    
        # Add links
        self.addLink( leftHost, Switch )
        self.addLink( leftSwitch, Switch )
        self.addLink( middleHost, Switch )
    
    topos = { 'mytopo': ( lambda: MyTopo() ) }
    

    运行以下命令:

    sudo mn --custm topo.py --topo mytopo.py
    

    运行结果:

    --mac

    创建mininet时默认会为每个主机分配一个mac地址,但是每次创建mininet这个mac地址都会随之改变,这样一来调试难度就大了。--mac的作用就是保证mac简单、易读,一般都尽量小。对比可以看出:


    --switch

    一共有三种交换机类型,分别是内核型、user型和OVS型。相比较而言,user型的性能最差,所谓user就是os为每个用户划分一个单独的用户空间,这也就意味着数据包需要额外经历一个内核到用户空间的过程,那就会导致延时增大,吞吐量减小。每个mininet虚拟机中都会预安装一个OVS,OVS型switch和内核型的性能差不多,甚至更好一些。

    测量三种类型的bandwith并对比:

    sudo mn --test iperf    #测得16.8 Gbits/s
    sudo mn --switch user --test iperf   #测得1.13 Mbit/s
    sudo mn --switch ovsk --test iperf   #测得17.1 Gbits/s

    相关文章

      网友评论

        本文标题:mininet入门(二)

        本文链接:https://www.haomeiwen.com/subject/gxxdhttx.html