l2_multi is an example that does shortest paths between endpoints (it uses Floyd-Warshall instead of Dijkstra's, but that's just a detail). And the spanning_tree component doesn't disable entire ports, IIRC -- just flooding on those ports. So if you have loops and use l2_multi and spanning_tree, when the destination is known, you get a shortest path. When the destination isn't known or is multicast/broadcast, it uses the tree.
-- Murphy On Feb 17, 2015, at 9:09 PM, Murat Karakus <muratkaraku...@gmail.com> wrote: > Hi All, > > I am trying to implement a network having loops (e.g. 4 switches connected to > each other and one host connected to each switch). When I try to ping a host, > it does not work because of the loops. Using spanning_tree component may work > in this case but I don't want it since it deletes a port to get out of the > loop which reduces the possible multi paths between src and dst. I don't want > this because I want to route my packets based on QoS values of links. (i.e. > if one path from the loop does not meet the QoS requirement, another may > meet.) > > For this purpose, I want my controller (POX) to discover all switches (w/ > ports) and links with their corresponding QoS values and store them for > future QoS routing. Does the discovery.py component do what I explained > without QoS values? > > Also, is there any (already implemented in POX) routing component like > Dijkstra algorithm to find a path between given src and dst? Or, we should > implement it? > > > Thanks, > Murat > >