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

Reply via email to