Bug 639, Bug 641, Bug 642: This is MD-SAL based sample implementation of a learning switch with optimizations in how packet is forwarded.
Link to detail documetation: https://wiki.opendaylight.org/view/OpenDaylight_Controller:MD-SAL:L2_Switch

It has following components:
PacketHandler examines Ethernet packets to find information about Mac-Port pairings.
 -informs AddressTracker about new Mac-Port pairings.
 -informs FlowWriterService about new flows, when the source & destination of a packet are known.
 -uses InventoryService to determine external ports and only send packets to those ports when flooding packets in the network.

AddressTracker stores the Mac-Port pairings in the MD-SAL data tree.

InventoryService provides information about the nodes and node connectors in the network.

FlowWriterService adds packet forwarding (mac-to-mac) flows to the MD-SAL data tree.
 -uses NetworkGraphDijkstra to determine all the intermediate nodes along a path.

TopologyLinkDataChangeHandler listens to topology updates and informs NetworkGraphDijkstra of these updates.

NetworkGraphDijkstra maintains the network graph and computes the shortest path between each node.

Change-Id: I33497a9e2136316de1db16e1c7f916cbc13f437f
Signed-off-by: Amit Mandke <ammandke@cisco.com>
Merge "Bug 639, Bug 641, Bug 642: This is MD-SAL based sample implementation of a learning switch with optimizations in how packet is forwarded. Link to detail documetation: https://wiki.opendaylight.org/view/OpenDaylight_Controller:MD-SAL:L2_Switch"