Hi, Mitar. > Does Babel require bidirectional reachability?
Yes, although routing is not necessarily symmetric. > In "Cost Computation" section it is written that "if the txcost is > infinite, then the cost is infinite" so probably this means such links > are seen as non-existent (worst cost). No, you have that backwards. Txcost is in the direct direction, it's the rxcost that's in the inverse direction. See Section 3.4.2. >From A's point of view : txcost A -------> B <------ rxcost Rxcost is computed from B's hellos. Txcost is signalled by B using IHUs sent to A. > This is of course reasonable, as all packets require ACKs on > link-level so at least something should be coming back. How do you compute the txcost if you don't have inverse reachability? The txcost is signalled by IHUs, so if you're not receiving anything, you'll never update the txcost. (Well, you'll time-out, and the txcost will become infinite.) > But does bidirectional reachability than imply also symmetric routing? No. See Appendix A.2.1 for an example of a metric that may lead to asymmetric routing. > If I understand now the description correctly (and my test > implementation of it in Haskell works correctly), then all nodes are > computing shortest paths how they are reachable from other nodes. Not > what can they reach? How/when do then nodes exchange this information? Section 3.4.3 -- Babel nodes compute the paths of lowest *cost*. The important thing to understand is that the cost is derived from the rxcost and the txcost in a way that is implementation independent. A concrete way of thinking about it is to say that txcost is the cost of sending a frame, and rxcost is the cost of receiving a frame. If you set cost=rxcost, then you get what you're describing (shortest reverse path), and I agree with you that it doesn't make a lot of sense. If you set cost=txcost, as in A.2.1, then you get shortest direct path, which is what you're asking for. For ETX, you'll set cost = rxcost * txcost. There are other possibilities, for example cost = MAX(txcost, rxcost / 4). A more abstract view is that the cost is composed of two parts, one locally computed (rxcost) and one remotely computed (txcost). How the locally-computed and remotely-computed parts are combined is an implementation detail, the only constraint being that if the remote node signals that it's unreachable (txcost=infty), then it knows what it's saying. -- Juliusz _______________________________________________ Babel-users mailing list Babel-users@lists.alioth.debian.org http://lists.alioth.debian.org/mailman/listinfo/babel-users