I am new to Opendaylight (Boron) clustering using Mininet. I followed the instructions provided through "http://docs.opendaylight.org/en/stable-boron/getting-started-guide/common-features/clustering.html" and I configured three nodes cluster. All three nodes show the full topology of connected switches in the dlux GUI. However, when I try to ping all hosts using the "pingall" command. I am losing most of the packets. and the controller is only showing the part of the hosts in the topology.
h1 -> X X h4 h5 X h7 h8 h9 h10 h11 h12 h13 X h15 h16
h2 -> h1 h3 h4 h5 X h7 h8 h9 h10 h11 h12 h13 X h15 h16
h3 -> h1 h2 h4 h5 X h7 h8 h9 h10 h11 h12 h13 X h15 h16
h4 -> h1 h2 h3 h5 X h7 h8 h9 h10 h11 h12 h13 X h15 h16
h5 -> h1 h2 h3 h4 X h7 h8 h9 h10 h11 h12 h13 X h15 h16
h6 -> X X X X X X X X X X X X h14 X X
h7 -> h1 h2 h3 h4 h5 X h8 h9 h10 h11 h12 h13 X h15 h16
h8 -> h1 h2 h3 h4 h5 X h7 h9 h10 h11 h12 h13 X h15 h16
h9 -> h1 h2 h3 h4 h5 X h7 h8 h10 h11 h12 h13 X h15 h16
h10 -> h1 h2 h3 h4 h5 X h7 h8 h9 h11 h12 h13 X h15 h16
h11 -> h1 h2 h3 h4 h5 X h7 h8 h9 h10 h12 h13 X h15 h16
h12 -> h1 h2 h3 h4 h5 X h7 h8 h9 h10 h11 h13 X h15 h16
h13 -> h1 h2 h3 h4 h5 X h7 h8 h9 h10 h11 h12 X h15 h16
h14 -> X X X X X h6 X X X X X X X X X
h15 -> h1 h2 h3 h4 h5 X h7 h8 h9 h10 h11 h12 h13 X h16
h16 -> h1 h2 h3 h4 h5 X h7 h8 h9 h10 h11 h12 h13 X h15
*** Results: 24% dropped (182/240 received)
the topology works fine when testing under a single controller, I tested different topology sizes, and got the same results. I noticed that My akka.conf file is missing the class "dl-cluster-rpc" when compared to the example in the provided link.
I used the addSwitch and addHost functions to create the switches and hosts before starting the topology
sw = self.addSwitch('c{}'.format(i + 1),cls=OVSKernelSwitch, protocols='OpenFlow13')
host = self.addHost('h{}'.format(count))
the following is how I tried to add multiple controllers in my mininet:
topo = FatTreeTopo()
net = Mininet(topo=topo, controller=None, link=TCLink)
cnt1 = net.addController( 'cnt1',controller=RemoteController,ip='159.203.64.13')
cnt2 = net.addController( 'cnt2',controller=RemoteController,ip='159.203.10.11')
cnt3 = net.addController( 'cnt3',controller=RemoteController,ip='159.203.18.68')
info('*** Starting network\n')
cnt1.start()
cnt2.start()
cnt3.start()
switches = net.switches
for sname in switches:
sname.start([cnt1,cnt2,cnt3]
net.start()
I checked all switches being connected to the three controllers using the OVS-VSCTL command:
Bridge "e16"
Controller "tcp:159.203.103.171:6653"
is_connected: true
Controller "tcp:159.203.118.68:6653"
is_connected: true
Controller "tcp:159.203.64.133:6653"
is_connected: true
Moreover, the following shows the openflow table for a switch and I see rules for forwarding packet to all three controllers.
OFPST_FLOW reply (OF1.3) (xid=0x2): cookie=0x2b00000000000013, duration=511.822s, table=0, n_packets=206, n_bytes=17510, priority=100,dl_type=0x88cc actions=CONTROLLER:65535 cookie=0x2b0000000000001a, duration=506.785s, table=0, n_packets=3106, n_bytes=462409, priority=2,in_port=2 actions=output:4,output:3 cookie=0x2b0000000000001b, duration=506.785s, table=0, n_packets=69, n_bytes=4354, priority=2,in_port=4 actions=output:2,output:3,CONTROLLER:65535 cookie=0x2b0000000000001c, duration=506.757s, table=0, n_packets=81, n_bytes=4970, priority=2,in_port=3 actions=output:2,output:4,CONTROLLER:65535 cookie=0x2b00000000000013, duration=511.822s, table=0, n_packets=129, n_bytes=22447, priority=0 actions=drop
thanks a lot and best wishes