Как настроить пропускную способность в пользовательской топологии Mininet?

Я хочу установить пропускную способность для пользовательской топологии Mininet.

Код питона:

#!/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?


person NWOWN    schedule 28.05.2015    source источник


Ответы (5)


Вы должны использовать аргумент --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

Я обновлю с примером в ближайшее время.

person sinhayash    schedule 27.06.2015
comment
Но что, если в вашей пользовательской топологии несколько сотен каналов с разными требованиями к пропускной способности? Было бы глупо вводить это в командной строке, есть ли способ указать это в файле python? - person John Scolaro; 01.09.2017
comment
@JohnScolaro Mininet не может имитировать такую ​​большую сеть, вам нужно искать другие решения, такие как MiniNeXT. - person sinhayash; 13.02.2020
comment
Здесь bw=1 эквивалентно 1 Мбит/с. Как установить пропускную способность ссылки на 1 Гбит/с, так как она принимает значения от 1 до 1000? - person Vinay; 13.10.2020
comment
Пожалуйста, задайте новый вопрос - person sinhayash; 15.10.2020

Вы должны добавить cls=TCLink к self.addLink(h1,s1,bw=10)

поэтому код будет self.addLink(h1,s1,cls=TCLink,bw=10)

Добавьте к другому addLink, чтобы заставить его работать

person Raviyo Andika    schedule 28.11.2018
comment
Это должен быть принятый ответ, поскольку он использует Python, например пример @kown. - person Josiah L.; 04.02.2020

При запуске Mininet добавить дополнительный аргумент --link=tc

person bilalba    schedule 27.06.2015

Укажите пропускную способность и задержки в файле python, но при запуске файла добавьте

--ссылка=TC

в командной строке и все будет работать.

person Uddhav Suman    schedule 19.10.2017

Если вы используете команду CLI mn для запуска Mininet, добавьте --link=tc.
Если вы используете функцию run() в скрипте python для запуска Mininet, используйте

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

чтобы начать с Mininet со ссылками TC для работы спецификации пропускной способности.

person zz2492    schedule 24.09.2020