類似圖中這樣的概念,每個方格都是一個VM
首先為了確定server VM 跟 Client VM 的網路在沒有中間mininet的情況下沒辦法互通
我分別將server 和client的網路介面設為 host only
將VMnet2設為server VM的網路介面,而VMnet3則是client VM的網路介面
而在MininetVM則要同時把 VMnet2,3都加進來
由於VMnet都是host only並沒有橋接的關係,到目前為止 Server vm 和Client vm沒辦法相通
但可以各自與mininet相通
接下來我們透過mininet來架設一個簡易的網路拓樸
from mininet.net import Mininet
from mininet.node import Controller, RemoteController, OVSController
from mininet.cli import CLI
from mininet.link import Intf
from mininet.log import setLogLevel, info
def myNetwork():
net = Mininet( topo=None,
build=False)
info( '*** Adding controller\n' )
c0= net.addController(name='c0',
controller=RemoteController,
ip='192.168.2.130') //設定controller資訊,我的controller是在另一台VM上
info( '*** Add switches\n')
s1 = net.addSwitch('s1', failMode ='secure') //設定switch為secure模式
s2 = net.addSwitch('s2', failMOde ='secure')
Intf( 'eth1', node=s1 ) // eth1為先前設定的VMnet2
Intf( 'eth2', node=s2 ) // eth2 為VMnet3
info( '*** Add links\n')
net.addLink(s1,s2)
info( '*** Starting network\n')
net.start()
CLI(net)
net.stop()
if __name__ == '__main__':
setLogLevel( 'info' )
myNetwork()
上面程式碼存成.py 執行之後 mininet就會產生一個網路拓樸--具有兩個switch
switch1接到實體的eth2,switch2則是接到eth3
在Opendaylight的網頁介面上可以看到剛剛架好的網路拓樸
原本以為這樣server (192.168.20.128) 就ping的到client (192.168.30.128)
但後來發現還要去設定路由表,加一個新的網段到自己的subnet
於是就在server端新增client端192.168.30.xxx的網段
ip route add 192.168.30.0/24 dev eth0
同樣也在client端新增server網段的subnet
ip route add 192.168.20.0/24 dev eth0
之後server跟client端就能透過mininet 架設的拓樸來連接了
沒有留言:
張貼留言