我想在每个主机上以Mininet设置运行Quagga的实例。正如在下面的代码中实现的,我能够为每个主机挂载/tmp/<host>/etc/quagga
作为/etc/quagga
,在每个主机的目录(私有目录)中隔离配置文件。但是当我在每个主机中启动Quagga服务时(下面ipconf
文件的最后一行),它们都共享相同的PID号,实际上为所有主机创建了相同的进程,尽管每个主机都有自己的Quagga配置文件。在
我希望有单独的Quagga实例,每个实例都有自己的PID。我怎样才能做到这一点?在
自定义拓扑文件my_topo.py
:
from mininet.topo import Topo
class my_topo(Topo):
"My custom topology settings"
def __init__(self, enable_all=True):
"Create custom topo."
Topo.__init__(self)
private_dirs = [("/etc/quagga", "/tmp/%(name)s/etc/quagga")]
h1 = self.addHost("h1",
ip="172.31.1.100/24",
privateDirs=private_dirs)
h2 = self.addHost("h2",
ip="172.31.2.100/24",
privateDirs=private_dirs)
h3 = self.addHost("h3",
ip="172.31.3.100/24",
privateDirs=private_dirs)
h4 = self.addHost("h4",
ip="172.31.4.100/24",
privateDirs=private_dirs)
h5 = self.addHost("h5",
ip="172.32.1.2/30",
privateDirs=private_dirs)
sA = self.addSwitch("s5")
sB = self.addSwitch("s6")
sC = self.addSwitch("s7")
sD = self.addSwitch("s8")
self.addLink(h1, sA)
self.addLink(h2, sB)
self.addLink(h3, sC)
self.addLink(h4, sD)
self.addLink(sA, sB)
self.addLink(sB, sD)
self.addLink(sD, sC)
self.addLink(sC, sA)
self.addLink(sA, sD)
self.addLink(h2, h5, 1, 0)
self.addLink(h4, h5, 1, 1)
topos = { "my_topo": ( lambda: my_topo() ) }
命令文件ipconf
:
运行Mininet的命令:
sudo mn --custom mininet/custom/my_topo.py --topo=my_topo --controller=remote,ip=192.168.56.101,port=6633 --pre=ipconf
我自己想出了如何使用Mininext将进程与每个主机隔离开来,这是一个微型网的扩展,它在主机之间提供了更好的隔离。由于Mininext与Mininet的最新版本不兼容,我不得不按照Mininext存储库中的指示将后者降级到2.1.0版本。现在我可以很好地在每个主机上运行不同的Quagga实例。在
以下是使用Mininext库改编的拓扑代码,以防任何人面临相同的情况:
Quagga配置文件必须放在
configs
目录中,该目录与拓扑文件位于同一目录中。configs
为每个主机都有目录,就像每个主机都是/etc/quagga
目录一样。在相关问题 更多 >
编程相关推荐