Неверное название топоса mytopo

я получил следующую ошибку при попытке запустить мою костюмированную топологию в мининете. я запускаю команду:

sudo mn --custom Q1_a.py --topo=mytopo

и я получаю ошибку:

Обнаружено исключение. Очистка... Исключение: неверное имя топографической точки mytopo

это мой файл Python Q1_a.py

from mininet.topo import Topo
from mininet.net import Mininet
from mininet.util import dumpNodeConnections
from mininet.log import setLogLevel

TOPOS = {'mytopo' : (lambda : mytopo(4))}

class mytopo(Topo):
    "Single switch connected to n hosts."
    def build(self, n=4):
        switch1 = self.addSwitch('s1')
	switch2=self.addSwitch('s2')
        host1 = self.addHost('h%s' % (1))
        self.addLink(host1, switch1)
        host2 = self.addHost('h%s' % (2))
        self.addLink(host2, switch1)
        host3 = self.addHost('h%s' % (3))
        self.addLink(host3, switch2)
        host4 = self.addHost('h%s' % (4))
        self.addLink(host4, switch2)	
    
def Q1_a():
    "Create and test a simple network"
    topo = mytopo(n=4)
    net = Mininet(topo)
    //net.start()
    //net.stop()

if __name__ == '__main__':
    # Tell mininet to print useful information
    setLogLevel('info')
    Q1_a()

буду рад помощи с этим


person Daniel Eppler    schedule 14.04.2020    source источник


Ответы (1)


Я назвал файл test.py и использовал код, который вы написали, за исключением строк 26 и 27, я использовал # для комментариев.

Если я запускаю, это работает:

mn --custom  test.py --topo=mytopo

test.py

from mininet.topo import Topo
from mininet.net import Mininet
from mininet.util import dumpNodeConnections
from mininet.log import setLogLevel

TOPOS = {'mytopo' : (lambda : mytopo(4))}

class mytopo(Topo):
    "Single switch connected to n hosts."
    def build(self, n=4):
        switch1 = self.addSwitch('s1')
    switch2=self.addSwitch('s2')
        host1 = self.addHost('h%s' % (1))
        self.addLink(host1, switch1)
        host2 = self.addHost('h%s' % (2))
        self.addLink(host2, switch1)
        host3 = self.addHost('h%s' % (3))
        self.addLink(host3, switch2)
        host4 = self.addHost('h%s' % (4))
        self.addLink(host4, switch2)

def Q1_a():
    "Create and test a simple network"
    topo = mytopo(n=4)
    net = Mininet(topo)
    #net.start()
    #net.stop()

if __name__ == '__main__':
    # Tell mininet to print useful information
    setLogLevel('info')
    Q1_a()
person Giuseppe    schedule 17.05.2020