Mininet 您所在的位置:网站首页 写出常用的3种网络拓扑结构名称 Mininet

Mininet

2023-11-13 17:11| 来源: 网络整理| 查看: 265

Mininet网络划分

Minnet可以创建多种拓扑网络,主要分为两类,一类是自动型,是指Mininet自带的拓扑类型, 通过--topo参数来指定,分别是linear、minimal、reversed、single、torus以及tree共六种;另一类是自定义型,是指通过py文件自定义拓扑类型,通过--custom和--topo两个参数搭配指定。下面分别说下两类的功能以及使用。

 

Mininet自动创建网络拓扑 1.liner 单一拓扑

single定制的拓扑里只有一个交换机,主机数量自由指定,呈放射状,通过如下命令创建拓扑:

#--topo=single,5: 指定拓扑类型以及主机数量 #--controller=remote,ip=192.168.0.2 : 指定接管这个网络的控制器 root@ubuntu:~# sudo mn --topo=single,5 --controller=remote,ip=192.168.0.2 *** Creating network *** Adding controller Connecting to remote controller at 192.168.0.2:6653 *** Adding hosts: h1 h2 h3 h4 h5 *** Adding switches: s1 *** Adding links: #可以发现,每个host都和交换机s1相连 (h1, s1) (h2, s1) (h3, s1) (h4, s1) (h5, s1) *** Configuring hosts h1 h2 h3 h4 h5 *** Starting controller c0 *** Starting 1 switches s1 ... *** Starting CLI: mininet> nodes available nodes are: c0 h1 h2 h3 h4 h5 s1 #可以发现我们这里只有一个交换机s1,5个host mininet> net h1 h1-eth0:s1-eth1 h2 h2-eth0:s1-eth2 h3 h3-eth0:s1-eth3 h4 h4-eth0:s1-eth4 h5 h5-eth0:s1-eth5 s1 lo: s1-eth1:h1-eth0 s1-eth2:h2-eth0 s1-eth3:h3-eth0 s1-eth4:h4-eth0 s1-eth5:h5-eth0 c0

拓扑图如下:

2.minimal最小化拓扑

只有一个交换机,交换机下面连接两个主机,是默认的拓扑方式,通过如下命令创建拓扑:

#--topo=minimal 才有最小化拓扑模型,只需要指定模型参数 root@ubuntu:~# sudo mn --controller=remote,ip=192.168.0.2 *** Creating network *** Adding controller Connecting to remote controller at 192.168.0.2:6653 *** Adding hosts: h1 h2 *** Adding switches: s1 *** Adding links: (h1, s1) (h2, s1) *** Configuring hosts h1 h2 *** Starting controller c0 *** Starting 1 switches s1 ... *** Starting CLI: mininet> nodes available nodes are: c0 h1 h2 s1 #只有一个交换机,两个host mininet> net h1 h1-eth0:s1-eth1 h2 h2-eth0:s1-eth2 s1 lo: s1-eth1:h1-eth0 s1-eth2:h2-eth0 c0

拓扑如下:

3.line线性拓扑

交换机连接呈线形排列,且每一个交换机下只能挂一个主机,通过如下命令创建拓扑:

#--topo=linear,3,2 :拓扑模型,交换机个数,每个交换机下的主机数 root@ubuntu:~# sudo mn --topo=linear,3,2 --controller=remote,ip=192.168.0.2 *** Creating network *** Adding controller Connecting to remote controller at 192.168.0.2:6653 *** Adding hosts: h1s1 h1s2 h1s3 h2s1 h2s2 h2s3 #主机 *** Adding switches: s1 s2 s3 #交换机 *** Adding links: (h1s1, s1) (h1s2, s2) (h1s3, s3) (h2s1, s1) (h2s2, s2) (h2s3, s3) (s2, s1) (s3, s2) *** Configuring hosts h1s1 h1s2 h1s3 h2s1 h2s2 h2s3 *** Starting controller c0 *** Starting 3 switches s1 s2 s3 ... *** Starting CLI: mininet> nodes available nodes are: c0 h1s1 h1s2 h1s3 h2s1 h2s2 h2s3 s1 s2 s3 mininet> net h1s1 h1s1-eth0:s1-eth1 h1s2 h1s2-eth0:s2-eth1 h1s3 h1s3-eth0:s3-eth1 h2s1 h2s1-eth0:s1-eth2 h2s2 h2s2-eth0:s2-eth2 h2s3 h2s3-eth0:s3-eth2 s1 lo: s1-eth1:h1s1-eth0 s1-eth2:h2s1-eth0 s1-eth3:s2-eth3 s2 lo: s2-eth1:h1s2-eth0 s2-eth2:h2s2-eth0 s2-eth3:s1-eth3 s2-eth4:s3-eth3 s3 lo: s3-eth1:h1s3-eth0 s3-eth2:h2s3-eth0 s3-eth3:s2-eth4 c0

拓扑如下:

4. tree 树形拓扑

交换机的连接呈树形,且每个交换机下可以挂多个交换机,通过如下命令创建拓扑:

#--topo=tree,3,2:拓扑模型,交换机的深度或者层数,每层交换机下连接的主机或者交换机个数 #--topo=tree,3,2: 三层,第一层一个交换机,第二层2个交换机,第三层4个交换,主机:4 x 2 = 8 #--topo=tree,3,3: 三层,第一层一个交换机,第二层3个交换机,第三层9个交换, 主机:9 x 3 = 27 #--mac 使主机mac尽量简单 root@ubuntu:~# sudo mn --topo=tree,3,2 --controller=remote,ip=192.168.0.2 --mac *** Creating network *** Adding controller Connecting to remote controller at 192.168.0.2:6653 *** Adding hosts: h1 h2 h3 h4 h5 h6 h7 h8 *** Adding switches: s1 s2 s3 s4 s5 s6 s7 *** Adding links: (s1, s2) (s1, s5) (s2, s3) (s2, s4) (s3, h1) (s3, h2) (s4, h3) (s4, h4) (s5, s6) (s5, s7) (s6, h5) (s6, h6) (s7, h7) (s7, h8) *** Configuring hosts h1 h2 h3 h4 h5 h6 h7 h8 *** Starting controller c0 *** Starting 7 switches s1 s2 s3 s4 s5 s6 s7 ... *** Starting CLI: mininet> nodes available nodes are: c0 h1 h2 h3 h4 h5 h6 h7 h8 s1 s2 s3 s4 s5 s6 s7 mininet> net h1 h1-eth0:s3-eth1 h2 h2-eth0:s3-eth2 h3 h3-eth0:s4-eth1 h4 h4-eth0:s4-eth2 h5 h5-eth0:s6-eth1 h6 h6-eth0:s6-eth2 h7 h7-eth0:s7-eth1 h8 h8-eth0:s7-eth2 s1 lo: s1-eth1:s2-eth3 s1-eth2:s5-eth3 s2 lo: s2-eth1:s3-eth3 s2-eth2:s4-eth3 s2-eth3:s1-eth1 s3 lo: s3-eth1:h1-eth0 s3-eth2:h2-eth0 s3-eth3:s2-eth1 s4 lo: s4-eth1:h3-eth0 s4-eth2:h4-eth0 s4-eth3:s2-eth2 s5 lo: s5-eth1:s6-eth3 s5-eth2:s7-eth3 s5-eth3:s1-eth2 s6 lo: s6-eth1:h5-eth0 s6-eth2:h6-eth0 s6-eth3:s5-eth1 s7 lo: s7-eth1:h7-eth0 s7-eth2:h8-eth0 s7-eth3:s5-eth2

拓扑如下:

5.reversed反向拓扑

这种拓扑类型与single单一拓扑类型相同,通过如下命令创建拓扑:

#--topo=reversed,4:拓扑类型,主机数(只有一个交换机) #--mac 使主机mac尽量简单 root@ubuntu:~# sudo mn --topo=reversed,4 --controller=remote,ip=192.168.0.2 --mac *** Creating network *** Adding controller Connecting to remote controller at 192.168.0.2:6653 *** Adding hosts: h1 h2 h3 h4 *** Adding switches: s1 *** Adding links: (h1, s1) (h2, s1) (h3, s1) (h4, s1) *** Configuring hosts h1 h2 h3 h4 *** Starting controller c0 *** Starting 1 switches s1 ... *** Starting CLI: mininet> nodes available nodes are: c0 h1 h2 h3 h4 s1 mininet> net h1 h1-eth0:s1-eth4 h2 h2-eth0:s1-eth3 h3 h3-eth0:s1-eth2 h4 h4-eth0:s1-eth1 s1 lo: s1-eth1:h4-eth0 s1-eth2:h3-eth0 s1-eth3:h2-eth0 s1-eth4:h1-eth0 c0

拓扑如下:

6.turse环形拓扑

个人不是很理解也很少用到,这里不做介绍,有兴趣可以百度自查。

 

Mininet自定义拓扑--custom

现在有这样一个网络拓扑需求,如下:

很显然,这个网络拓扑并不能用Mininet自动创建网络拓扑模型,只能通过自己定制网络拓扑模型,定制py脚本如下:  

#!/usr/bin/python from mininet.topo import Topo class MyTopo( Topo ): def __init__( self ): "Create custom topo." # Initialize topology Topo.__init__( self ) # 生成所需要的主机和交换机 h1 = self.addHost( 'h1' ) h2 = self.addHost( 'h2' ) h3 = self.addHost( 'h3' ) h4 = self.addHost( 'h4' ) h5 = self.addHost( 'h5' ) sw1= self.addSwitch( 'sw1' ) sw2 = self.addSwitch( 'sw2' ) sw3= self.addSwitch( 'sw3' ) sw4= self.addSwitch( 'sw4' ) sw5= self.addSwitch( 'sw5' ) sw6= self.addSwitch( 'sw6' ) # 添加连线,交换机和交换机之间,交换机和主机之间 self.addLink( sw1, sw2) self.addLink( sw1, sw3) self.addLink( sw2, sw4) self.addLink( sw2, h2) self.addLink( sw3, sw5) self.addLink( sw3, sw6) self.addLink( sw4, h1) self.addLink( sw5, h3) self.addLink( sw5, h4) self.addLink( sw6, h5) #实例化类 topos = { 'mytopo': ( lambda: MyTopo() ) } #注意:‘mytopo’这个参数必须和命令行--topo的参数一致,如果不一致,运行时报“Exception: Invalid topo name mytopo2”

一般定制化的py脚本主要就是实例化一个继承Topo的类,上述脚本的这个类就是:MyTopo

下面通过命令行利用上述脚本创建网络模型,如下:

#--custom ./mytopo_test.py :py文件 #--topo mytopo: py文件中实例化对象时指定的参数 root@ubuntu:~# sudo mn --controller=remote,ip=192.168.0.2 --custom ./mytopo_test.py --topo mytopo --mac *** Creating network *** Adding controller Connecting to remote controller at 192.168.0.2:6653 *** Adding hosts: h1 h2 h3 h4 h5 *** Adding switches: sw1 sw2 sw3 sw4 sw5 sw6 *** Adding links: (sw1, sw2) (sw1, sw3) (sw2, h2) (sw2, sw4) (sw3, sw5) (sw3, sw6) (sw4, h1) (sw5, h3) (sw5, h4) (sw6, h5) *** Configuring hosts h1 h2 h3 h4 h5 #5个host *** Starting controller c0 *** Starting 6 switches sw1 sw2 sw3 sw4 sw5 sw6 ...#6个交换机 *** Starting CLI: mininet> nodes available nodes are: c0 h1 h2 h3 h4 h5 sw1 sw2 sw3 sw4 sw5 sw6 mininet> net h1 h1-eth0:sw4-eth2 h2 h2-eth0:sw2-eth3 h3 h3-eth0:sw5-eth2 h4 h4-eth0:sw5-eth3 h5 h5-eth0:sw6-eth2 sw1 lo: sw1-eth1:sw2-eth1 sw1-eth2:sw3-eth1 sw2 lo: sw2-eth1:sw1-eth1 sw2-eth2:sw4-eth1 sw2-eth3:h2-eth0 sw3 lo: sw3-eth1:sw1-eth2 sw3-eth2:sw5-eth1 sw3-eth3:sw6-eth1 sw4 lo: sw4-eth1:sw2-eth2 sw4-eth2:h1-eth0 sw5 lo: sw5-eth1:sw3-eth2 sw5-eth2:h3-eth0 sw5-eth3:h4-eth0 sw6 lo: sw6-eth1:sw3-eth3 sw6-eth2:h5-eth0 c0

拓扑图如下:

经对比,同我们的定制需求拓扑相同。

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有