[Babel-users] Babel in Bird 1.6.0

Dave Taht dave.taht at gmail.com
Sat Apr 30 17:44:15 UTC 2016


I can confirm that toke's current set of fixes compiles on a rpi3, AND
that I am too stupid to figure out how to create a correct, basic,
babeld .conf file for bird.

On Sat, Apr 30, 2016 at 10:39 AM, Toke Høiland-Jørgensen <toke at toke.dk> wrote:
> Juliusz Chroboczek <jch at pps.univ-paris-diderot.fr> writes:
>
>>> Okay, actually trying to put this into code: Is the intention here that
>>> a null-router ID update is acceptable only on *wildcard* retractions or
>>> on *all* retractions?
>>
>> In RFC 6126, there's nothing special about a null router-ID: it's just
>> a router ID.
>
> I didn't actually mean a 'null router ID'. I meant an *unset* router ID.
> I.e., if flag 0x40 is set or the update is preceded by a router ID TLV,
> the router ID is *set*. It may or may not be set to all-zeroes, but that
> is orthogonal. So I was referring to the text stating "the current
> router-id and seqno is not used" - does that refer to all retractions or
> just wildcard ones?
>
> (I suspect the answer to be the former, and that the fact that this
> poses problems is an artifact of the current update handling flow in the
> Bird code; but want to be sure before I change it).
>
>> However, for AEs 0 and 1, the address is too short to carry a router-ID
>> (it's 0 and 4 octets respectively, while a router-ID is 8 octets).  The
>> intention was that a shorter address should be stored in the right side of
>> a router-ID, and padded with zeroes; e.g. the IPv4 address (AE 1) 1.2.3.4
>> maps to the router-ID 0:0:0:0:1:2:3:4, and the zero-length address (AE 0)
>> maps to 0:0:0:0:0:0:0:0.  However, I don't think this is spelled out in
>> RFC 6126.
>
> Well, I've always thought about 0x40 as specifying that the router ID be
> the 64 bits from the address that is semantically encoded by the TLV,
> not the literal bytes in the TLV itself. I.e. Bird does this:
>
>   if (tlv->flags & BABEL_FLAG_ROUTER_ID)
>   {
>     state->router_id = ((u64) _I2(msg->prefix)) << 32 | _I3(msg->prefix);
>     state->router_id_seen = 1;
>   }
>
> where msg is the internal data structure containing the parsed values.
>
> This means there's no problem in combining flag 0x40 with AE 0; but for
> IPv4 addresses it needs to be specified whether the addresses should be
> padded to the right or the left.
>
>> So my current thinking is:
>>
>>   - if a Babel speaker receives an update with AE 0 or 1 and bit 0x40 set,
>>     it MUST set the router-ID to the address in the update, right justified
>>     and padded with zeroes;
>
> Yes, this seems reasonable, and should go into a -bis I guess.
>
>>   - a Babel speaker SHOULD NOT set bit 0x40 in updates with AE 0 or 1,
>>     lest the author meet the wrath of Markus.
>
> This is "for the time being", or? Surely Markus can be appeased by the
> time a new draft is written? ;)
>
> -Toke
>
> _______________________________________________
> Babel-users mailing list
> Babel-users at lists.alioth.debian.org
> http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/babel-users



-- 
Dave Täht
Let's go make home routers and wifi faster! With better software!
http://blog.cerowrt.org



More information about the Babel-users mailing list