Mininet設定の各ホストでQuaggaのインスタンスを実行したいとします。以下のコードで実装されているように、私は/tmp/<host>/etc/quagga
をホストごとに/etc/quagga
としてマウントし、ホスト(プライベートディレクトリ)ごとにディレクトリ内の設定ファイルを隔離することができます。しかし、各ホストでQuaggaサービスを開始すると(下のファイルipconf
の最後の行)、それらはすべて同じPID番号を共有します。それぞれに独自のQuagga構成ファイルがありますが、すべて同じプロセスを効果的に作成します。Mininetのプロセス用に別個のPID空間を持つホスト
それぞれ独自のPIDを持つ別々のQuaggaインスタンスが必要です。どうすればこれを達成できますか?
カスタム・トポロジーファイル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
:
h1 /etc/init.d/quagga restart
h2 /etc/init.d/quagga restart
h3 /etc/init.d/quagga restart
h4 /etc/init.d/quagga restart
h5 /etc/init.d/quagga restart
コマンドはMininetを実行します
sudo mn --custom mininet/custom/my_topo.py --topo=my_topo --controller=remote,ip=192.168.56.101,port=6633 --pre=ipconf