如何在Mininet自定义拓扑上设置带宽?

时间:2015-05-28 02:21:20

标签: python bandwidth topology mininet

我想在Mininet自定义拓扑上设置带宽。

python代码是:

#!/usr/bin/python
from mininet.topo import Topo
from mininet.net import Mininet
from mininet.node import CPULimitedHost
from mininet.link import TCLink
from mininet.util import dumpNodeConnections
from mininet.log import setLogLevel

class MyTopo( Topo ):
"Simple topology example."

    def __init__( self, **opts):
        "Create custom topo."

        # Initialize topology
        Topo.__init__( self, **opts )

        # Add hosts and switches
        h1 = self.addHost('h1')        
        h2 = self.addHost( 'h2' )

        s3 = self.addSwitch( 's3' )
        s1 = self.addSwitch( 's1' )
        s2 = self.addSwitch( 's2' )

        # Add links
        self.addLink(h1,s1,bw=10)
        self.addLink(h2,s3,bw=20)
        self.addLink(s3,s2,bw=10)
        self.addLink(s1,s3,bw=10)

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

但它有错误

------------------------------------------------------------------
Caught exception. Cleaning up...
TypeError: __init__() got an unexpected keyword argument 'bw'
------------------------------------------------------------------

我该怎么办? 如何在Mininet自定义拓扑上设置带宽?

5 个答案:

答案 0 :(得分:4)

启动Mininet时,添加一个额外的参数--link=tc

答案 1 :(得分:4)

您应该使用--link参数。例如: sudo mn --topo tree,depth=2,fanout=5 --controller=remote,ip=10.0.0.1,port=6633 --switch ovsk,protocols=OpenFlow13, --link tc,bw=1,delay=10ms

我很快会以一个例子更新。

答案 2 :(得分:3)

您应在cls=TCLink上添加self.addLink(h1,s1,bw=10)

因此代码将为self.addLink(h1,s1,cls=TCLink,bw=10)

添加到其他addLink中使其生效

答案 3 :(得分:0)

说明python文件中的带宽和延迟,但在运行文件时,添加

- 链路= TC

在命令行中,它将正常工作。

答案 4 :(得分:0)

如果使用CLI命令mn运行Mininet,请添加--link=tc
如果您在python脚本中使用run()函数来启动Mininet,请使用

net = Mininet(topo = MyTopo(), link = TCLink)
net.start()

从带有TC链接的Mininet开始,以使带宽规范生效。