我创建了一个自定义mininet拓扑如下:

from mininet.topo import Topo
from mininet.net import Mininet
from mininet.cli import CLI

class MyTopo (Topo):

    def __init__(self):
        Topo.__init__(self)

        # Add hosts and switches
        s1 = self.addSwitch('s1')
        s2 = self.addSwitch('s2')
        s3 = self.addSwitch('s3')

        for i in range(1, 21):
            self.addHost('h%s'%i, ip='10.0.0.%s'%i)
            self.addLink('h%s'%i, s1)

        for i in range(21,41):
            self.addHost('h%s'%i, ip='10.0.0.%s'%i)
            self.addLink('h%s'%i, s2)

        for i in range(41,61):
            self.addHost('h%s'%i, ip='10.0.0.%s'%i)
            self.addLink('h%s'%i, s3)

        #Add link between switches
        self.addLink(s1, s2)
        self.addLink(s2, s3)


topo = MyTopo()
net = Mininet(topo)
net.start()
h1 = net.get('h1')
print(h1)
result = h1.cmd('ifconfig')
print(result)
CLI(net)
net.stop()
topos = { 'mytopo': ( lambda: MyTopo() ) }

我在终端使用 sudo mn --custom /home/bob/pox/ext/My_topology1.py --topo=mytopo --mac 作为命令 . 这里有2个问题:

  • Mininet创建此拓扑两次 . 首先它运行 net.start() 并显示 print(result) ,当我退出mininet bash时,它再次开始创建拓扑 . 我想只创建一次拓扑 . 什么是问题,我该如何解决?

  • 如您所见,我使用 --mac 但是当它第一次创建拓扑时,结果是: Ethernet HWaddr 82:86:c5:f1:38:bd 但第二次是正确的: Ethernet HWaddr 00:00:00:00:00:01 . 我怎样才能解决这个问题?