Subject: [homenet] Some preliminary babeld/pybabel interop testing

From: Juliusz Chroboczek <[email-masked]>
Date: Sat, 28 Mar 2015 14:40:52 +0100

We have found two issues that harmed interoperability between babeld and
pybabel, one a bug in pybabel and one in babeld.

  (1) the RFC has the following to say about TLVs (Section 4.3)

             If the body is longer than the expected length of
             a given type of TLV, any extra data MUST be silently
             ignored.

      Markus missed that bit, and he was dropping over-long TLVs, which
      caused him to drop any updates that contained radio interference
      information (draft-chroboczek-babel-diversity-routing).  Since Denis
      Ovsienko previously made the same mistake, this indicates that the
      RFC doesn't stress this point enough.  (Mea culpa, Joel Halpern had
      warned me about that.)

  (2) the RFC says the following about flag 0x40 in Update TLVs:

        if the bit with value 40 hexadecimal is set, then the low-order 8
        octets of the advertised prefix establish a new default router-id
        for this TLV and subsequent Update TLVs in the same packet.

      The reference implementation was mistakenly setting flag 0x40 in
      a case where the low-order 8 octets don't exist, and pybabel was
      dropping the TLV (and complaining loudly).  This is a bug in babeld,
      although I think that pybabel was not being sufficiently permissive.

Pybabel is looking rather good right now.  It would be great if somebody
sat down and implemented link quality estimation for it (Appendix A.2.2 or
something smarter), since Matthieu and I don't want to be seen touching
the code.

-- Juliusz