|
From: Flavio Fernandes <ffernand@redhat.com>
Subject: Re: ODL CONTROLLER-232
Date: April 28, 2014 at 6:29:02 PM EDT
To: Luis Gomez <ecelgp@gmail.com>
Hi Luis,
I spent most of today trying to reproduce the problem using the vms you pointed me to, and
the latest integration-base build. I failed miserably (see below). :/ What I really would like to see
is the log file when it does not work. Can you please set the 3 logs to trace and reproduce the
problem and send them to me?
W/out those, I’m pretty unsure on whether my assumption for the fix is going to do anything.
Sorry,
— flavio
mininet@mininet-vm:~/controller-base/opendaylight\> more version.properties
org.opendaylight.controller.version = 0.1
org.opendaylight.controller.build.scm.version = 61bad4207cc91cd14d8d38a255ad6549c20ff54e
org.opendaylight.controller.build.user = jenkins-controller
org.opendaylight.controller.build.workspace = **********
org.opendaylight.controller.build.timestamp = 1398697205857
org.opendaylight.controller.build.machine = **********
—
mininet@mininet-vm:~/controller-base/opendaylight\> ./run.sh -of13
setLogLevel org.opendaylight.controller.samples.simpleforwarding.internal TRACE
setLogLevel org.opendaylight.controller.hosttracker.internal TRACE
setLogLevel org.opendaylight.controller.routing TRACE
...
mininet@mininet-vm:~\> ~/integration/vm/scripts/start_mininet_of13.sh
-
-
- Creating network
- Adding controller
- Adding hosts:
h1 h2 h3 h4
- Adding switches:
have protcol params!
s1 have protcol params!
s2 have protcol params!
s3
- Adding links:
(h1, s2) (h2, s2) (h3, s3) (h4, s3) (s1, s2) (s1, s3)
- Configuring hosts
h1 h2 h3 h4
- Starting controller
- Starting 3 switches
s1 OVSswitch opts: protocols=OpenFlow13
s2 OVSswitch opts: protocols=OpenFlow13
s3 OVSswitch opts: protocols=OpenFlow13
-
-
- Starting CLI:
mininet>
mininet>
mininet>
mininet>
mininet> pingall
- Ping: testing ping reachability
h1 -> h2 h3 h4
h2 -> h1 h3 h4
h3 -> h1 h2 h4
h4 -> h1 h2 h3
- Results: 0% dropped (12/12 received)
mininet>
On Apr 28, 2014, at 11:57 AM, Luis Gomez <ecelgp@gmail.com> wrote:
Hi Flavio,
Yes I use same VM to run controller + mininet and I use latest base edition. With this setup I see same issue with old 1.0 plugin and new 1.3 plugin.
Now after your mail I have tried with different setup: controller VM + mininet VM and you are right I do not see the problem with old OF1.0 plugin (at least with tree,2 and tree,3 topologies) but still I see it with OF1.3 plugin.
BR/Luis
On Apr 28, 2014, at 5:32 AM, Flavio Fernandes <ffernand@redhat.com> wrote:
Hello Luis!
Thanks for the kind words. The way I have been testing so far has been by building/running ODL straight out
of my laptop: Mac OS X. I tend to use the latest and greatest 1.2-snapshot codebase.
Also, I have mininet running from a virtual machine. I downloaded mininet VM from the mininet’s
website: mininet-2.1.0-130919-ubuntu-13.04-server-amd64-ovf. To run the VM, I use vmware fusion.
I gave the VM 1 Gb and 1 processor. Using that setup, I was able to reproduce the original issues. What I think happened is that the race is now slightly tighter and the difference in our setups is enough to run differently.
Thanks for the link! We should add a reference to it in CONTROLLER-232. Can you take care of that, please?
I’m grabbing the vms from the link you provided. I should have done that sooner, huh? I’m hoping that with those,
I should be able to see it. Questions on that:
1) do you see the bug when mininet and the controller are in different vms?
2) from your example, it seems that you have ODL and mininet co-located, and you are using OF1.0. So all
you use to reproduce this bug is 1 VM?
3) You are running the ‘base’ distribution of ODL, right?
Thanks,
— flavio
|
|
Hi Flaviof:
I just played with mininet. After setting the logs to TRACE:
<logger name="org.opendaylight.controller.hosttracker" level="TRACE"/>
<logger name="org.opendaylight.controller.routing" level="TRACE"/>
<logger name="org.opendaylight.controller.forwardingrulesmanager" level="TRACE"/>
I get the following outputs: (It looks better compared to the last time - Luis filed it) Let me know if you need opendaylight.log for the details.
mininet@mininet-vm:~\> sudo mn --topo tree,3 --controller 'remote,ip=127.0.0.1,port=6633' --switch ovsk,protocols=OpenFlow13
-
-
- Creating network
- Adding controller
- Adding hosts:
h1 h2 h3 h4 h5 h6 h7 h8
- Adding switches:
have protcol params!
s1 have protcol params!
s2 have protcol params!
s3 have protcol params!
s4 have protcol params!
s5 have protcol params!
s6 have protcol params!
s7
- Adding links:
(h1, s3) (h2, s3) (h3, s4) (h4, s4) (h5, s6) (h6, s6) (h7, s7) (h8, s7) (s1, s2) (s1, s5) (s2, s3) (s2, s4) (s5, s6) (s5, s7)
- Configuring hosts
h1 h2 h3 h4 h5 h6 h7 h8
- Starting controller
- Starting 7 switches
s1 OVSswitch opts: protocols=OpenFlow13
s2 OVSswitch opts: protocols=OpenFlow13
s3 OVSswitch opts: protocols=OpenFlow13
s4 OVSswitch opts: protocols=OpenFlow13
s5 OVSswitch opts: protocols=OpenFlow13
s6 OVSswitch opts: protocols=OpenFlow13
s7 OVSswitch opts: protocols=OpenFlow13
-
-
- Starting CLI:
mininet>
mininet>
mininet> pingall
- Ping: testing ping reachability
h1 -> h2 h3 h4 h5 h6 h7 h8
h2 -> h1 h3 h4 h5 h6 h7 h8
h3 -> h1 h2 h4 h5 h6 h7 h8
h4 -> h1 h2 h3 h5 h6 h7 h8
h5 -> h1 h2 h3 h4 h6 h7 h8
h6 -> h1 h2 h3 h4 h5 h7 h8
h7 -> h1 h2 h3 h4 h5 h6 h8
h8 -> h1 h2 h3 h4 h5 h6 h7
- Results: 0% dropped (56/56 received)
mininet>
mininet>
mininet>
mininet> quit
- Stopping 7 switches
s1 ..s2 ...s3 ...s4 ...s5 ...s6 ...s7 ...
- Stopping 8 hosts
h1 h2 h3 h4 h5 h6 h7 h8
- Stopping 1 controllers
c0
- Done
completed in 39.013 seconds
mininet@mininet-vm:~\>
mininet@mininet-vm:~\>
mininet@mininet-vm:~\> sudo mn --topo tree,3 --controller 'remote,ip=127.0.0.1,port=6633'
- Creating network
- Adding controller
- Adding hosts:
h1 h2 h3 h4 h5 h6 h7 h8
- Adding switches:
s1 s2 s3 s4 s5 s6 s7
- Adding links:
(h1, s3) (h2, s3) (h3, s4) (h4, s4) (h5, s6) (h6, s6) (h7, s7) (h8, s7) (s1, s2) (s1, s5) (s2, s3) (s2, s4) (s5, s6) (s5, s7)
- Configuring hosts
h1 h2 h3 h4 h5 h6 h7 h8
- Starting controller
- Starting 7 switches
s1 OVSswitch opts:
s2 OVSswitch opts:
s3 OVSswitch opts:
s4 OVSswitch opts:
s5 OVSswitch opts:
s6 OVSswitch opts:
s7 OVSswitch opts:
-
-
- Starting CLI:
mininet>
mininet>
mininet>
mininet> pingall
- Ping: testing ping reachability
h1 -> h2 h3 h4 h5 h6 h7 X
h2 -> h1 h3 h4 h5 h6 h7 h8
h3 -> h1 h2 h4 h5 h6 h7 h8
h4 -> h1 h2 h3 h5 h6 h7 h8
h5 -> h1 h2 h3 h4 h6 h7 h8
h6 -> h1 h2 h3 h4 h5 h7 h8
h7 -> h1 h2 h3 h4 h5 h6 h8
h8 -> h1 h2 h3 h4 h5 h6 h7
- Results: 1% dropped (55/56 received)
mininet>
mininet>
mininet> quit
- Stopping 7 switches
s1 ..s2 ...s3 ...s4 ...s5 ...s6 ...s7 ...
- Stopping 8 hosts
h1 h2 h3 h4 h5 h6 h7 h8
- Stopping 1 controllers
c0
- Done
completed in 33.244 seconds
mininet@mininet-vm:~\>
mininet@mininet-vm:~\>
mininet@mininet-vm:~\>
mininet@mininet-vm:~\> sudo mn --topo tree,4 --controller 'remote,ip=127.0.0.1,port=6633' --switch ovsk,protocols=OpenFlow13
- Creating network
- Adding controller
- Adding hosts:
h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16
- Adding switches:
have protcol params!
s1 have protcol params!
s2 have protcol params!
s3 have protcol params!
s4 have protcol params!
s5 have protcol params!
s6 have protcol params!
s7 have protcol params!
s8 have protcol params!
s9 have protcol params!
s10 have protcol params!
s11 have protcol params!
s12 have protcol params!
s13 have protcol params!
s14 have protcol params!
s15
- Adding links:
(h1, s4) (h2, s4) (h3, s5) (h4, s5) (h5, s7) (h6, s7) (h7, s8) (h8, s8) (h9, s11) (h10, s11) (h11, s12) (h12, s12) (h13, s14) (h14, s14) (h15, s15) (h16, s15) (s1, s2) (s1, s9) (s2, s3) (s2, s6) (s3, s4) (s3, s5) (s6, s7) (s6, s8) (s9, s10) (s9, s13) (s10, s11) (s10, s12) (s13, s14) (s13, s15)
- Configuring hosts
h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16
- Starting controller
- Starting 15 switches
s1 OVSswitch opts: protocols=OpenFlow13
s2 OVSswitch opts: protocols=OpenFlow13
s3 OVSswitch opts: protocols=OpenFlow13
s4 OVSswitch opts: protocols=OpenFlow13
s5 OVSswitch opts: protocols=OpenFlow13
s6 OVSswitch opts: protocols=OpenFlow13
s7 OVSswitch opts: protocols=OpenFlow13
s8 OVSswitch opts: protocols=OpenFlow13
s9 OVSswitch opts: protocols=OpenFlow13
s10 OVSswitch opts: protocols=OpenFlow13
s11 OVSswitch opts: protocols=OpenFlow13
s12 OVSswitch opts: protocols=OpenFlow13
s13 OVSswitch opts: protocols=OpenFlow13
s14 OVSswitch opts: protocols=OpenFlow13
s15 OVSswitch opts: protocols=OpenFlow13
-
-
- Starting CLI:
mininet>
mininet>
mininet> pingall
- Ping: testing ping reachability
h1 -> h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 X h14 h15 h16
h2 -> h1 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16
h3 -> h1 h2 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16
h4 -> h1 h2 h3 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16
h5 -> h1 h2 h3 h4 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16
h6 -> h1 h2 h3 h4 h5 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16
h7 -> h1 h2 h3 h4 h5 h6 h8 h9 h10 h11 h12 h13 h14 h15 h16
h8 -> h1 h2 h3 h4 h5 h6 h7 h9 h10 h11 h12 h13 h14 h15 h16
h9 -> h1 h2 h3 h4 h5 h6 h7 h8 h10 h11 h12 h13 h14 h15 h16
h10 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h11 h12 h13 h14 h15 h16
h11 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h12 h13 h14 h15 h16
h12 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h13 h14 h15 h16
h13 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h14 h15 h16
h14 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h15 h16
h15 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h16
h16 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15
- Results: 0% dropped (239/240 received)
mininet>
mininet>
mininet> quit
- Stopping 15 switches
s1 ..s2 ...s3 ...s4 ...s5 ...s6 ...s7 ...s8 ...s9 ...s10 ...s11 ...s12 ...s13 ...s14 ...s15 ...
- Stopping 16 hosts
h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16
- Stopping 1 controllers
c0
- Done
completed in 71.186 seconds
mininet@mininet-vm:~\>
mininet@mininet-vm:~\>
mininet@mininet-vm:~\> sudo mn --topo tree,4 --controller 'remote,ip=127.0.0.1,port=6633'
- Creating network
- Adding controller
- Adding hosts:
h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16
- Adding switches:
s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 s11 s12 s13 s14 s15
- Adding links:
(h1, s4) (h2, s4) (h3, s5) (h4, s5) (h5, s7) (h6, s7) (h7, s8) (h8, s8) (h9, s11) (h10, s11) (h11, s12) (h12, s12) (h13, s14) (h14, s14) (h15, s15) (h16, s15) (s1, s2) (s1, s9) (s2, s3) (s2, s6) (s3, s4) (s3, s5) (s6, s7) (s6, s8) (s9, s10) (s9, s13) (s10, s11) (s10, s12) (s13, s14) (s13, s15)
- Configuring hosts
h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16
- Starting controller
- Starting 15 switches
s1 OVSswitch opts:
s2 OVSswitch opts:
s3 OVSswitch opts:
s4 OVSswitch opts:
s5 OVSswitch opts:
s6 OVSswitch opts:
s7 OVSswitch opts:
s8 OVSswitch opts:
s9 OVSswitch opts:
s10 OVSswitch opts:
s11 OVSswitch opts:
s12 OVSswitch opts:
s13 OVSswitch opts:
s14 OVSswitch opts:
s15 OVSswitch opts:
-
-
- Starting CLI:
mininet>
mininet>
mininet> pingall
- Ping: testing ping reachability
h1 -> h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 X
h2 -> h1 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16
h3 -> h1 h2 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16
h4 -> h1 h2 h3 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16
h5 -> h1 h2 h3 h4 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16
h6 -> h1 h2 h3 h4 h5 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16
h7 -> h1 h2 h3 h4 h5 h6 h8 h9 h10 h11 h12 h13 h14 h15 h16
h8 -> h1 h2 h3 h4 h5 h6 h7 h9 h10 h11 h12 h13 h14 h15 h16
h9 -> h1 h2 h3 h4 h5 h6 h7 h8 h10 h11 h12 h13 h14 h15 h16
h10 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h11 h12 h13 h14 h15 h16
h11 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h12 h13 h14 h15 h16
h12 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h13 h14 h15 h16
h13 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h14 h15 h16
h14 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h15 h16
h15 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h16
h16 -> h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15
- Results: 0% dropped (239/240 received)
mininet>
mininet>
mininet> quit
- Stopping 15 switches
s1 ..s2 ...s3 ...s4 ...s5 ...s6 ...s7 ...s8 ...s9 ...s10 ...s11 ...s12 ...s13 ...s14 ...s15 ...
- Stopping 16 hosts
h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16
- Stopping 1 controllers
c0
- Done
completed in 62.396 seconds
mininet@mininet-vm:~\>
mininet@mininet-vm:~\>
mininet@mininet-vm:~\>
mininet@mininet-vm:~\> sudo mn --topo tree,3 --controller 'remote,ip=127.0.0.1,port=6633'*** Creating network
- Adding controller
- Adding hosts:
h1 h2 h3 h4 h5 h6 h7 h8
- Adding switches:
s1 s2 s3 s4 s5 s6 s7
- Adding links:
(h1, s3) (h2, s3) (h3, s4) (h4, s4) (h5, s6) (h6, s6) (h7, s7) (h8, s7) (s1, s2) (s1, s5) (s2, s3) (s2, s4) (s5, s6) (s5, s7)
- Configuring hosts
h1 h2 h3 h4 h5 h6 h7 h8
- Starting controller
- Starting 7 switches
s1 OVSswitch opts:
s2 OVSswitch opts:
s3 OVSswitch opts:
s4 OVSswitch opts:
s5 OVSswitch opts:
s6 OVSswitch opts:
s7 OVSswitch opts:
-
-
- Starting CLI:
mininet>
mininet>
mininet> pingall
- Ping: testing ping reachability
h1 -> h2 h3 X h5 h6 h7 h8
h2 -> h1 h3 h4 h5 h6 h7 h8
h3 -> h1 h2 h4 h5 h6 h7 h8
h4 -> h1 h2 h3 h5 h6 h7 h8
h5 -> h1 h2 h3 h4 h6 h7 h8
h6 -> h1 h2 h3 h4 h5 h7 h8
h7 -> h1 h2 h3 h4 h5 h6 h8
h8 -> h1 h2 h3 h4 h5 h6 h7
- Results: 1% dropped (55/56 received)
mininet>
mininet>
mininet> quit
- Stopping 7 switches
s1 ..s2 .
..s3 ...s4 ...s5 ...s6 ...s7 ...
- Stopping 8 hosts
h1 h2 h3 h4 h5 h6 h7 h8
- Stopping 1 controllers
c0
- Done
completed in 46.181 seconds
mininet@mininet-vm:~\>
mininet@mininet-vm:~\>
mininet@mininet-vm:~\>
mininet@mininet-vm:~\> sudo mn --topo tree,3 --controller 'remote,ip=127.0.0.1,port=6633' --switch ovsk,protocols=OpenFlow13
- Creating network
- Adding controller
- Adding hosts:
h1 h2 h3 h4 h5 h6 h7 h8
- Adding switches:
have protcol params!
s1 have protcol params!
s2 have protcol params!
s3 have protcol params!
s4 have protcol params!
s5 have protcol params!
s6 have protcol params!
s7
- Adding links:
(h1, s3) (h2, s3) (h3, s4) (h4, s4) (h5, s6) (h6, s6) (h7, s7) (h8, s7) (s1, s2) (s1, s5) (s2, s3) (s2, s4) (s5, s6) (s5, s7)
- Configuring hosts
h1 h2 h3 h4 h5 h6 h7 h8
- Starting controller
- Starting 7 switches
s1 OVSswitch opts: protocols=OpenFlow13
s2 OVSswitch opts: protocols=OpenFlow13
s3 OVSswitch opts: protocols=OpenFlow13
s4 OVSswitch opts: protocols=OpenFlow13
s5 OVSswitch opts: protocols=OpenFlow13
s6 OVSswitch opts: protocols=OpenFlow13
s7 OVSswitch opts: protocols=OpenFlow13
-
-
- Starting CLI:
mininet>
mininet> pingall
- Ping: testing ping reachability
h1 -> h2 X h4 h5 h6 h7 h8
h2 -> h1 h3 h4 h5 h6 h7 h8
h3 -> h1 h2 h4 h5 h6 h7 h8
h4 -> h1 h2 h3 h5 h6 h7 h8
h5 -> h1 h2 h3 h4 h6 h7 h8
h6 -> h1 h2 h3 h4 h5 h7 h8
h7 -> h1 h2 h3 h4 h5 h6 h8
h8 -> h1 h2 h3 h4 h5 h6 h7
- Results: 1% dropped (55/56 received)
mininet>
mininet>
mininet> quit
- Stopping 7 switches
s1 ..s2 ...s3 ...s4 ...s5 ...s6 ...s7 ...
- Stopping 8 hosts
h1 h2 h3 h4 h5 h6 h7 h8
- Stopping 1 controllers
c0
- Done
completed in 71.230 seconds
mininet@mininet-vm:~\>
Thanks,
Madhusudhan
|
|
OK, the results of my test:
1) With 2 CPU Cores, it does not work at all with OF10 or OF13 plugins with even a small topology of tree,1 (1 switch), here is the debug log:
2014-04-29 16:48:55.098 PDT [SwitchEvent Thread] DEBUG o.o.c.h.internal.HostTracker - Received for Host: IP 10.0.0.1, MAC 2e02c8cff6a0, HostNodeConnector [nodeConnector=OF|1@OF|00:00:00:00:00:00:00:01, vlan=0, staticHost=false, arpSendCountDown=0]
2014-04-29 16:48:55.098 PDT [Thread-84] DEBUG o.o.c.h.internal.HostTracker - New Host Learned: MAC: 2e02c8cff6a0 IP: 10.0.0.1
2014-04-29 16:48:55.099 PDT [Thread-84] DEBUG o.o.c.h.internal.HostTracker - Notifying Applications for Host 10.0.0.1 Being Added
2014-04-29 16:48:55.098 PDT [SwitchEvent Thread] TRACE o.o.c.s.s.i.SimpleForwardingImpl - Received a frame of size: 42
2014-04-29 16:48:55.099 PDT [Thread-84] DEBUG o.o.c.s.s.i.SimpleForwardingImpl - Adding policyMatch(DIP = 10.0.0.1) Action(outPort= OF|1@OF|00:00:00:00:00:00:00:01) to node OF|00:00:00:00:00:00:00:01
2014-04-29 16:48:55.099 PDT [SwitchEvent Thread] DEBUG o.o.c.h.internal.HostTracker - Received for Host: IP 10.0.0.2, MAC de700b56a32c, HostNodeConnector [nodeConnector=OF|2@OF|00:00:00:00:00:00:00:01, vlan=0, staticHost=false, arpSendCountDown=0]
2014-04-29 16:48:55.099 PDT [Thread-84] DEBUG o.o.c.s.s.i.SimpleForwardingImpl - Inside installPerHostRules
2014-04-29 16:48:55.100 PDT [SwitchEvent Thread] TRACE o.o.c.s.s.i.SimpleForwardingImpl - Received a frame of size: 42
2014-04-29 16:48:55.101 PDT [SwitchEvent Thread] DEBUG o.o.c.h.internal.HostTracker - Host Added to ARPPending List, IP: /10.0.0.2
2014-04-29 16:48:55.101 PDT [SwitchEvent Thread] DEBUG o.o.c.h.internal.HostTracker - hostFind(): Host Not Found for IP: IP=[10.0.0.2], Inititated Host Discovery ...
2014-04-29 16:48:55.101 PDT [Thread-84] DEBUG o.o.c.s.s.i.SimpleForwardingImpl - Successfully installed policy FlowEntry[flowName = [10.0.0.1/32 on N OF|00:00:00:00:00:00:00:01], groupName = 10.0.0.1/32, node = OF|00:00:00:00:00:00:00:01, flow = Flow[match = Match [fields=
{NW_DST=NW_DST(10.0.0.1), DL_TYPE=DL_TYPE(2048)}
, matches=2176], actions = [SET_DL_DST[address = 2e02c8cff6a0], OUTPUT[OF|1@OF|00:00:00:00:00:00:00:01]], priority = 1, id = 0, idleTimeout = 0, hardTimeout = 0]] on switch OF|00:00:00:00:00:00:00:01
2014-04-29 16:48:55.101 PDT [Thread-84] DEBUG o.o.c.s.s.i.SimpleForwardingImpl - Leaving installPerHostRules
2014-04-29 16:48:55.102 PDT [Thread-84] DEBUG o.o.c.h.internal.HostTracker - Notifying Topology Manager for Host 10.0.0.1 Being Added
2014-04-29 16:48:55.102 PDT [SwitchEvent Thread] TRACE o.o.c.s.s.i.SimpleForwardingImpl - Received a frame of size: 98
2014-04-29 16:48:55.102 PDT [SwitchEvent Thread] TRACE o.o.c.s.s.i.SimpleForwardingImpl - Handle punted IP packet: Ethernet: [DestinationMACAddress: de700b56a32c, SourceMACAddress: 2e02c8cff6a0, EtherType: 0800]
2014-04-29 16:48:55.102 PDT [SwitchEvent Thread] DEBUG o.o.c.h.internal.HostTracker - Host Added to ARPPending List, IP: /10.0.0.2
2014-04-29 16:48:55.102 PDT [SwitchEvent Thread] DEBUG o.o.c.h.internal.HostTracker - hostFind(): Host Not Found for IP: IP=[10.0.0.2], Inititated Host Discovery ...
2014-04-29 16:48:55.104 PDT [Thread-85] DEBUG o.o.c.h.internal.HostTracker - New Host Learned: MAC: de700b56a32c IP: 10.0.0.2
2014-04-29 16:48:55.104 PDT [Thread-85] DEBUG o.o.c.h.internal.HostTracker - Host Removed from ARPPending List, IP: IP=[10.0.0.2]
2014-04-29 16:48:55.104 PDT [Thread-85] DEBUG o.o.c.h.internal.HostTracker - Notifying Applications for Host 10.0.0.2 Being Added
2014-04-29 16:48:55.104 PDT [SwitchEvent Thread] DEBUG o.o.c.h.internal.HostTracker - Received for Host: IP 10.0.0.2, MAC de700b56a32c, HostNodeConnector [nodeConnector=OF|2@OF|00:00:00:00:00:00:00:01, vlan=0, staticHost=false, arpSendCountDown=0]
2014-04-29 16:48:55.104 PDT [Thread-85] DEBUG o.o.c.s.s.i.SimpleForwardingImpl - Adding policyMatch(DIP = 10.0.0.2) Action(outPort= OF|2@OF|00:00:00:00:00:00:00:01) to node OF|00:00:00:00:00:00:00:01
2014-04-29 16:48:55.104 PDT [Thread-85] DEBUG o.o.c.s.s.i.SimpleForwardingImpl - Inside installPerHostRules
2014-04-29 16:48:55.105 PDT [SwitchEvent Thread] DEBUG o.o.c.h.internal.HostTracker - hostListener returned without adding the host
2014-04-29 16:48:55.105 PDT [SwitchEvent Thread] TRACE o.o.c.s.s.i.SimpleForwardingImpl - Received a frame of size: 42
2014-04-29 16:48:55.105 PDT [SwitchEvent Thread] DEBUG o.o.c.h.internal.HostTracker - Received for Host: IP 10.0.0.2, MAC de700b56a32c, HostNodeConnector [nodeConnector=OF|2@OF|00:00:00:00:00:00:00:01, vlan=0, staticHost=false, arpSendCountDown=0]
2014-04-29 16:48:55.106 PDT [SwitchEvent Thread] DEBUG o.o.c.h.internal.HostTracker - hostListener returned without adding the host
2014-04-29 16:48:55.106 PDT [Thread-85] DEBUG o.o.c.s.s.i.SimpleForwardingImpl - Successfully installed policy FlowEntry[flowName = [10.0.0.2/32 on N OF|00:00:00:00:00:00:00:01], groupName = 10.0.0.2/32, node = OF|00:00:00:00:00:00:00:01, flow = Flow[match = Match [fields=
{NW_DST=NW_DST(10.0.0.2), DL_TYPE=DL_TYPE(2048)}
, matches=2176], actions = [SET_DL_DST[address = de700b56a32c], OUTPUT[OF|2@OF|00:00:00:00:00:00:00:01]], priority = 1, id = 0, idleTimeout = 0, hardTimeout = 0]] on switch OF|00:00:00:00:00:00:00:01
2014-04-29 16:48:55.106 PDT [Thread-85] DEBUG o.o.c.s.s.i.SimpleForwardingImpl - Leaving installPerHostRules
2014-04-29 16:48:55.106 PDT [SwitchEvent Thread] TRACE o.o.c.s.s.i.SimpleForwardingImpl - Received a frame of size: 42
2014-04-29 16:48:55.106 PDT [Thread-85] DEBUG o.o.c.h.internal.HostTracker - Notifying Topology Manager for Host 10.0.0.2 Being Added
2014-04-29 16:48:55.107 PDT [SwitchEvent Thread] DEBUG o.o.c.h.internal.HostTracker - Received for Host: IP 10.0.0.2, MAC de700b56a32c, HostNodeConnector [nodeConnector=OF|2@OF|00:00:00:00:00:00:00:01, vlan=0, staticHost=false, arpSendCountDown=0]
2014-04-29 16:48:55.107 PDT [SwitchEvent Thread] DEBUG o.o.c.h.internal.HostTracker - hostListener returned without adding the host
2014-04-29 16:48:55.110 PDT [SwitchEvent Thread] TRACE o.o.c.s.s.i.SimpleForwardingImpl - Received a frame of size: 42
2014-04-29 16:49:05.099 PDT [SwitchEvent Thread] DEBUG o.o.c.h.internal.HostTracker - Received for Host: IP 10.0.0.2, MAC de700b56a32c, HostNodeConnector [nodeConnector=OF|2@OF|00:00:00:00:00:00:00:01, vlan=0, staticHost=false, arpSendCountDown=0]
2014-04-29 16:49:05.100 PDT [SwitchEvent Thread] DEBUG o.o.c.h.internal.HostTracker - hostListener returned without adding the host
2) With 3+ CPU cores, OF10 plugin works good until tree, 6 (63 switches, the the maximum I have tried), with OF13 the maximum is tree,4 (15 switches), after that I see packet loss
|
|
From: Flavio Fernandes <ffernand@redhat.com>
Subject: Re: ODL CONTROLLER-232
Date: April 30, 2014 at 5:54:09 AM EDT
To: Luis Gomez <ecelgp@gmail.com>, Colin Dixon <colin@colindixon.com>
Cc: Madhusudhan Kandadai <madhusudhan.opendaylight@yahoo.com>, Giovanni Meo <gmeo@cisco.com>
Hi Luis,
Thank you for your log! So the fact that the packet is getting lost is indeed due to hostTracker not
being done learning about the host before the exception packet is processed. That is good, because
we can add some mechanism for addressing that, should we deem it to be important enough.
Colin: if you look at the highlighted lines (below) and the code, it is very easy to see what happens.
A time '2014-04-29 16:48:55.102 PDT’, the exception packet comes to SimpleForwardingImpl
but it ends up getting dropped due to hostFind(dIP) call returning null. The interesting part is that immediately after, not even a second later, hostTracker learns about the host. 
Assuming we want to solve this race, all we need is a way to hang on to the packet for a short while. That is
my plan of action, assuming you agree. My gut tells me we should fix it, because 1) it is pretty simple stuff and 2) we should not be worrying about how many cores are in use. I would like to talk to you about the implementation, still.
Thanks,
— flavio
private void handlePuntedIPPacket(IPv4 pkt, NodeConnector incomingNodeConnector) {
...
HostNodeConnector destHost = hostTracker.hostFind(dIP);
/*
- In cases when incoming and outgoing connectors are in the same node, there is no need
- to verify that there is a route. Because of that, we will only need routing.getRoute()
- if we know that src and dst nodes are different.
*/
if (destHost != null
…
===
https://www.dropbox.com/s/hu86tbj1qcbsfh8/Screenshot%202014-04-30%2005.32.06.png
2014-04-29 16:48:55.102 PDT [SwitchEvent Thread] TRACE o.o.c.s.s.i.SimpleForwardingImpl - Received a frame of size: 98
2014-04-29 16:48:55.102 PDT [SwitchEvent Thread] TRACE o.o.c.s.s.i.SimpleForwardingImpl - Handle punted IP packet: Ethernet: [DestinationMACAddress: de700b56a32c, SourceMACAdd\
ress: 2e02c8cff6a0, EtherType: 0800]
2014-04-29 16:48:55.102 PDT [SwitchEvent Thread] DEBUG o.o.c.h.internal.HostTracker - Host Added to ARPPending List, IP: /10.0.0.2
2014-04-29 16:48:55.102 PDT [SwitchEvent Thread] DEBUG o.o.c.h.internal.HostTracker - hostFind(): Host Not Found for IP: IP=[10.0.0.2], Inititated Host Discovery ...
2014-04-29 16:48:55.104 PDT [Thread-85] DEBUG o.o.c.h.internal.HostTracker - New Host Learned: MAC: de700b56a32c IP: 10.0.0.2
2014-04-29 16:48:55.104 PDT [Thread-85] DEBUG o.o.c.h.internal.HostTracker - Host Removed from ARPPending List, IP: IP=[10.0.0.2]
2014-04-29 16:48:55.104 PDT [Thread-85] DEBUG o.o.c.h.internal.HostTracker - Notifying Applications for Host 10.0.0.2 Being Added
|