Bug-590: Packet loss on first time ping test

In this commit, we are addressing a race that could cause the exception (ie first ip packet) to
be lost. What is observed with this bug is that the non-arp packet -- in this case the icmp packet --
is being 'exceptioned' to the SimpleForwarding code path because the node has not yet been programmed
with a flow that would cause it to forward the packet to its destination w/out involving the controller.

The race in this case is caused by Simpleforwarding handling the packet before HostTracker is fully aware
of the destination host. In such case, the forwarding fails to determine where to send the packet and drops it.

The proposed change in this commit takes a stab at handling the race by keeping the packet until either
1) the destination is known by HostTracker or 2) a max time expires. In order to accomplish that, the change
includes the creation of a thread that will periodically age out any packet that have been pending for too
long. The change also adds a concurrent map for efficient lookup among the pending packets. There is a
limitation in this implementation: it will keep at most 1 packet pending per destination ip address. This is
believed not to be a problem, because of the short amount of time it takes for hostTracker to learn about the
destination after the packet is put int the pending map.

Change-Id: I7ec1de69f7841eb7ca5603715b54685be9781401
Signed-off-by: Flavio Fernandes <ffernand@redhat.com>
Increase mdsal's notification queue size, make it configurable.

Add System property mdsal.notificationqueue.size to allow tweaking
of queue size.
Increase default queue size from 10 to 1000.

Change-Id: I91e8ac3939092af2b26a7a4d952fe561557b7a46
Signed-off-by: Tomas Olvecky <tolvecky@cisco.com>
FRM should use async function on southbound event

- On reacting to southbound events (switch up/down, ports added/removed, ...)
  FRM is supposed to use asynchronous calls for flows installation/removal.
  This is needed because these events may affect a large number of flows,
  for which we do not want to slow down the processing via sync calls.
  Also, logic has been we never do process synchronously a southbound event.
- In case of port up, FRM was still using a synchronous call.
  This patch is for taking care of that.

Change-Id: I4b6dae0df75ad778ea2f1d555a258a48ea66c57b
Signed-off-by: Alessandro Boch <aboch@cisco.com>
Merge "Bug-590: Packet loss on first time ping test"
Merge "FRM should use async function on southbound event"
Initial mdsal and config karaf features

This loads cleanly into karaf :)

Instructions for checking:

cd controller/

mvn clean install

cd opendaylight/distributions/opendaylight-karaf/target/assembly/bin
sh karaf

at the karaf prompt

feature:install odl-mdsal-restconf
feature:list -i

(odl-mdsal-restconf will pull everything else through).

PatchSet2:  Fixed failure to use odl- prefix in features for -all

Change-Id: Ib85347eaab7729d1b2723eb7ce59a3c18f2eef0e
Signed-off-by: Ed Warnicke <eaw@cisco.com>
Merge "Increase mdsal's notification queue size, make it configurable."
Merge "Initial mdsal and config karaf features"