Mininet-wifi典型用法

  1. 执行 mn 命令未指定一个控制器的话,它会默认采用 ovsc 控制,ovs-controller


  1. Mininet-wifi如何和ryu配合?

       ryu-manager ryu.app.simple_switch_13       先要启动ryu,然后启动mininet-wifi去连接ryu

       mn --topo=linear --switch=user --ap=user --controller=remote,ip=192.168.0.193,port=6653

               ryu可以指定其它端口:
               ryu-manager --ofp-listen-host '192.168.0.127' --ofp-ssl-listen-port 11884 --ofp-tcp-listen-port 11884 ryu.app.simple_switch_13


  1. 目前已经有的网络拓扑(下面都是使用的RYU控制器和ofsoftswitch交换机):
    1. minimal

      创建两个host,一个switch,拓扑不能指定个数。

                     mn --topo=minimal --switch=user --ap=user --controller=remote,ip=192.168.0.193,port=6653

  1. single

        创建两个host,一个switch,可以指定参数,如果参数输入3,表示创建3个host,一个switch。

        mn --topo=single,3 --switch=user --ap=user --controller=remote,ip=192.168.0.193,port=6653

  1. reversed

        reversed(反向拓扑) 和 single的效果是一样的。

        mn --topo=reversed,5 --switch=user --ap=user --controller=remote,ip=192.168.0.193,port=6653

  1. linear

        创建5个AP,创建5个station,组成一条线

        mn --wifi --topo=linear,5 --switch=user --ap=user --controller=remote,ip=192.168.0.193,port=6653

  1. tree

        --topo=tree,3,2  : 拓扑模型,交换机的深度或者层数,每个交换机下连接的主机或者交换机个数。

        --topo=tree,3,2 : 三层,第一层1个交换机,第二层2个交换机,第三层4个交换机,主机:4 x 2 = 8

        --topo=tree,3,3 : 三层,第一层1个交换机,第二层3个交换机,第三层9个交换机,主机:9 x 3 = 27

        --topo=tree,3    : --topo=tree,3,2效果一样。

        创建tree型拓扑不能带--wifi参数,带--wifi参数创建不起来。

        tree 测试过10层网络拓扑,创建了1024个host,1023个switch,最终的结果是创建不起来,可能大概要耗时一天,cpu全都占用完了。

        mn --topo=tree,3 --switch=user --ap=user --controller=remote,ip=192.168.0.193,port=6653

  1. torus

        创建一个圆环面型拓扑,创建不起来。

        mn --topo=torus --switch=user --ap=user --controller=remote,ip=192.168.0.193,port=6653

 

  1. 5switch的线型组网:

clip_image001[4]

 

  1. 3层树形拓扑组网:

clip_image002[4]



  1. 自定义网络拓扑
    1. 我是在mininet-wifi的工程目录下面增加一个custom目录,这里存放新增的网络拓扑文件。

clip_image003[4]


  1. custom目录下新增mytopo.py文件。新增一个子类继承 Topo_WiFi,新增的拓扑类的 __init__ 函数里面 创建各个站点和link,文件代码如下:


frommn_wifi.topoimportTopo_WiFi

 

classMyTopo(Topo_WiFi):

"Simpletopologyexample."

 

def__init__(self):

"Createcustomtopo."

 

#Initializetopology

Topo_WiFi.__init__(self)

 

#addstationsandaccesspoints

sta1=self.addStation('sta1')

sta2=self.addStation('sta2')

sta3=self.addStation('sta3')

sta4=self.addStation('sta4')

sta5=self.addStation('sta5')

ap1=self.addAccessPoint('ap1')

ap2=self.addAccessPoint('ap2')

ap3=self.addAccessPoint('ap3')

ap4=self.addAccessPoint('ap4')

ap5=self.addAccessPoint('ap5')

ap6=self.addAccessPoint('ap6')

 

#addlinks

self.addLink(ap1,ap2)

self.addLink(ap1,ap3)

self.addLink(ap2,ap4)

self.addLink(ap2,sta2)

self.addLink(ap3,ap5)

self.addLink(ap3,ap6)

self.addLink(ap4,sta1)

self.addLink(ap5,sta3)

self.addLink(ap5,sta4)

self.addLink(ap6,sta5)

 

#addtotopo

topos={'mytopo':(lambda:MyTopo())}

 

  1. 指定mn的参数如下:

--wifi --custom ./custom/mytopo.py --topo=mytopo --switch=user --ap=user --controller=remote,ip=192.168.0.193,port=6653


  1. 最后创建出来的拓扑图如下:

clip_image004[4]

 

  1. 执行pingall,可以看到所以节点都可以ping通。
posted @ 2020-05-27 17:39  matthew2015  阅读(2292)  评论(0编辑  收藏  举报