IPv6 rip-only routing - no exchange of routes
Ondrej Filip
feela at network.cz
Tue Nov 1 17:57:21 CET 2011
On 1.11.2011 17:49, Goesta Smekal wrote:
> Am 2011-10-30 22:04, schrieb Roman Hoog Antink:
>> Hi Goesta
>>
>> As you can see by this commit, RIP for IPv4 was fixed recently
>> in the git repo (after 1.3.4 came out).
>>
>> https://git.nic.cz/redmine/projects/bird/repository/revisions/14a8f396e1d8fc5787041eace8ab026fe5a0896c
>>
>>
>> Before that, it was broken for more than a year:
>> http://marc.info/?l=bird-users&m=127633818913449&w=2
>> http://marc.info/?l=bird-users&m=130715340100894&w=2
>>
>> The line with the comment /* Does not really work on Linux */
>> seems to be the spot that breaks RIP with IPv6.
>
> Thankfully Roman sent me two patches off list, that led to the
> inclusion of the routes, seen in the RIP packets to the local
> routing table.
>
> However, there are still some bugs within the packets which make
> me think that RIPng in BIRD is in fact rather RIPv2 with longer
> addresses ;-)
Hi Goesta,
If must sadly confirm, the RIP implementation is quite poor. The
reason we are not working on it was that nobody really uses this
protocol. Should somebody demand it, we could look at it. But
currently we are concentrated on other issues. Do you need it for
some production environment?
Ondrej
>
> Here are my observations after studying RFC 2080 and the packets
> I captured from the wire:
>
> *) UDP port should be 521 for RIPng (is 520, same as in RIPv1 and
> 2)
>
> *) version number in the RIP header should be 1 (is 2, like in
> RIPv2)
>
> *) the first RTE is entirely empty (except for a metric of 1) -
> if this is meant to be the next hop RTE, indicating that the
> packets source address should be used as next hop, the "metric"
> field should be set to 0xff instead
>
> *) the next hop written into the recipients routing table is
> built from the prefix of the route and the local part of the
> senders address. As far as I can judge, this is not correct with
> IPv6, where the link local address should be used to communicate
> to neighbours instead. Quoted from RFC 2080: ---8<--- An address
> specified as a next hop must be a link-local address. ---8<---
>
> Here is an example of such a packet, captured by wireshark on my
> virtualized testing network (plain text is removed to prevent
> line breaks):
>
> ---8<--- 0000 33 33 00 00 00 09 08 00 27 a9 2a be 86 dd 60 00
> 0010 00 00 00 5c 11 01 fe 80 00 00 00 00 00 00 0a 00 0020 27
> ff fe a9 2a be ff 02 00 00 00 00 00 00 00 00 0030 00 00 00 00
> 00 09 02 08 02 08 00 5c 43 6d 02 02 0040 00 00 00 00 00 00 00
> 00 00 00 00 00 00 00 00 00 0050 00 00 00 00 00 01 20 01 aa aa
> bb bb 0b ef 00 00 0060 00 00 00 00 00 00 00 00 40 01 20 01 aa
> aa bb bb 0070 0b ee 00 00 00 00 00 00 00 00 00 00 40 10 20 01
> 0080 aa aa bb bb 0b b8 00 00 00 00 00 00 00 00 00 00 0090 40
> 01 ---8<---
>
> There are four RTEs:
>
> *) starting at 0x42: an empty prefix with a metric of 1 (next
> hop? see above) *) 0x56: local prefix on eth1, metric 1 *) 0x6a:
> the other router's prefix (learned), metric 16(!?) *) 0x7e: local
> prefix on eth0, metric 1
>
> So this looks quite fine, apart from the port and version number
> and the infinite distance to the other router ;-)
>
> Sadly my knowledge of C is not sufficient to contribute to the
> solution by sending patches, but I am willing to do further tests
> an send results, if someone could help fixing these flaws -
> unless I misunderstood the results of my tests so far.
>
> thanks in advance,
>
> Goesta
>
More information about the Bird-users
mailing list