1. 程式人生 > 其它 >mininet連線兩個ryu控制器的實現(2021.6.21)

mininet連線兩個ryu控制器的實現(2021.6.21)

克隆一個ryu虛擬機器(1號) ,得到2號ryu虛擬機器

開啟1,2號ryu控制器:進入ryu/ryu/app目錄,然後啟動相應模組:sudo ryu-manager --verbose simple_switch_13.py ofctl_rest.py rest_topology.py

mininet虛擬機器中,在桌面上自定義一個topo檔案,如:sudo gedit 1.py

1.py的內容:

#!/usr/bin/python

from mininet.net import Mininet
from mininet.node import Controller, RemoteController
from mininet.cli import CLI from mininet.log import setLogLevel, info def myNet(): #c0 c0_IP='192.168.231.131' #c1 c1_IP='192.168.231.133' net = Mininet( topo=None, build=False) # Create nodes h1 = net.addHost( 'h1', mac='01:00:00:00:01:00', ip='192.168.0.1/24' ) h2 = net.addHost( '
h2', mac='01:00:00:00:02:00', ip='192.168.0.2/24' ) # Create switches s1 = net.addSwitch( 's1', listenPort=6634, mac='00:00:00:00:00:01' ) s2 = net.addSwitch( 's2', listenPort=6634, mac='00:00:00:00:00:02' ) print "*** Creating links" net.addLink(h1, s1, ) net.addLink(h2, s2, ) net.addLink(s1, s2, )
# Add Controllers c0_ctrl = net.addController( 'c0', controller=RemoteController, ip=c0_IP, port=6653) c1_ctrl = net.addController( 'c1', controller=RemoteController, ip=c1_IP, port=6653) net.build() # Connect each switch to a different controller s1.start( [c0_ctrl] ) s2.start( [c1_ctrl] ) s1.cmdPrint('ovs-vsctl show') CLI( net ) net.stop() if __name__ == '__main__': setLogLevel( 'info' ) myNet()
1.py

在終端執行該檔案:sudo python 1.py

可以發現:交換機s1的master控制器為1號ryu控制器,s2的master控制器為2號ryu控制器。

如果想進行控制器角色轉換,比如s1的master控制器設定為2號ryu控制器,使用命令:

sudo ovs-vsctl set-controller s1 tcp:192.168.231.133:6653

此時再次檢視sudo ovs-vsctl show,發現角色轉變成功。