[Babel-users] Marginal IHU [was: more eyeballs on some scaling bugs]

Juliusz Chroboczek jch at irif.fr
Sat Dec 22 16:35:10 GMT 2018


> I find it difficult to read the babeld code

It was difficcult to write.  I don't see why it should be easy to read ;-)

> I guess that reach is a bitmap of some kind, storing on which of the
> last 16 hellos the neighbour was reachable.

That's right.  The logic is in update_neighbour, and described in human
terms in Appendix A of RFC 6126bis.

> If a marginal ihu really is just a ihu that is sent on specific
> conditions, we could name this function send_ihu_on_$CONDITION() and avoid
> many questions with this small change.
> The only thing left to do is: understand the condition.

The idea is that:

  - we send at least one IHU every three Hellos;
  - if the link is lossy, we send one IHU with every Hello.

The condition reads as follows:

        if(neigh->txcost >= 384 || (neigh->hello.reach & 0xF000) != 0xF000)

If the direct cost of the link is above 384, or we've missed at least one
of the last four hellos, then the link is marginal, and we send the IHU
unconditionally.

-- Juliusz



More information about the Babel-users mailing list