BIRD <-> Quagga Compatiblity
Ondrej Filip
feela at network.cz
Wed May 30 11:11:20 CEST 2007
Vonlanthen, Elmar wrote:
> Hello Ondrej and Joseph
Elmar,
could you please send outputs of:
show interfaces
show ospf interfaces
without any patch and with iface.c-patch?
Ondrej
>
> Thanks for your quick answers.
>
> I have tried with both patches (but not with both together).
>
> When I apply the topology.c-patch, everything is working. Quagga accepts the routes!
> But when I apply the iface.c-patch bird doesn't send any packets anymore.
> Maybe you can find anything in the bird logfile.
>
> Anyway, for me is it a reasonable solution.
>
> Thanks for your help and have a nice day.
>
> Best regards
> Elmar
>
>> -----Original Message-----
>> From: Sörös József [mailto:soros.jozsef at multip.hu]
>> Sent: Sunday, May 27, 2007 8:13 AM
>> To: Ondrej Filip; Vonlanthen, Elmar
>> Cc: bird-users at network.cz
>> Subject: Re: BIRD <-> Quagga Compatiblity
>>
>> Once upon a time I suggested the correction below in
>> nest/iface.c to get
>> bird handle interfaces
>> with unnumbered and addresses correctly. It worked.
>>
>> --- iface.c 2004-02-10 09:41:09.000000000 +0100
>> +++ nest/iface.c 2004-02-10 02:58:51.000000000 +0100
>> @@ -407,9 +407,13 @@
>>
>> WALK_LIST(a, i->addrs)
>> {
>> - if (!(a->flags & IA_SECONDARY) && (!b || a->scope > b->scope))
>> - b = a;
>> - a->flags &= ~IA_PRIMARY;
>> + if (!(a->flags & IA_SECONDARY)
>> + && !(a->flags & IA_UNNUMBERED)
>> + && (!b || a->scope > b->scope))
>> + {
>> + b = a;
>> + a->flags &= ~IA_PRIMARY;
>> + }
>> }
>> res = (b != i->addr);
>> i->addr = b;
>>
>> Joseph
>>
>> Sörös József
>> Multip Kft.
>> E-Mail: soros.jozsef at multip.hu
>> Mobil: +36309403985
>> ----- Original Message -----
>>
>>
>> From: "Ondrej Filip" <feela at network.cz>
>> To: "Vonlanthen, Elmar"
>> <Elmar.Vonlanthen at united-security-providers.ch>
>> Cc: <bird-users at network.cz>
>> Sent: Saturday, May 26, 2007 5:09 PM
>> Subject: Re: BIRD <-> Quagga Compatiblity
>>
>>
>>> Vonlanthen, Elmar wrote:
>>>> Hello
>>> Hello!
>>>
>>>> At the moment, I do some tests with BIRD. We would like to
>> replace our
>>>> currently used routing daemon Quagga with this piece of software.
>>>>
>>>> My first impressions are very good. There are lot of
>> features, which are
>>>> missing in Quagga. And the design is much better.
>>>>
>>>> I do some tests with OSPF in the following configuration:
>>>>
>>>> 172.16.101.0/24 -- router/gw 1 -- 10.254.1.4 --- P-t-P ---
>> 10.254.4.1 --
>>>> router/gw 4 -- 172.16.104.0/24
>>>>
>>> There are two problems I notice:
>>>
>>> 1) Bird thinks that the P-t-P interfaces are unnumbered. I
>> am not sure
>>> whether this is correct. Could you please send me: "show interfaces"
>>> and "show ospf interface" ?
>>>
>>> 2) I guess that Quagga has a bug in routing table calculation if the
>>> network contains unnumbered P-t-P interfaces. We can me a
>> workaround:
>>> Bird will send the interface as numbered.
>>>
>>> I prepared a quick and dirty solution (and I didn't test
>> it!). Try to
>>> apply the attached patch. It is definitely wrong way, but
>> it may solve
>>> your case. Let me know, if this helps.
>>>
>>> Ondrej
>>>
>>>> The complete setup is much more complicated. The Point-to-Point
>>>> Connection is made between two GRE Interfaces with
>> multicast enabled.
>>>> The GRE interfaces have a tunnel over an Ipsec transport
>> connection.
>>>> There are 4 Tunnels between these two routers (two "wan"
>> links for each
>>>> site), but only tunnel linkA to linkA is up (like above).
>>>> The gre tunnel ist working. Both routing daemons can talk together.
>>>>
>>>> On both routers/gateways I can switch between Quagga and Bird.
>>>> The OS on the routers is Debian Woody with Kernel 2.4.32.
>>>>
>>>> My first test results:
>>>>
>>>> Quagga - Quagga: Working fine (our currently productive setup).
>>>> Bird - Bird: Working fine.
>>>>
>>>> Quagga - Bird:
>>>>
>>>> It is not working! But im not sure if the problem ist
>> Quagga or Bird.
>>>> Bird gets the routes from Quagga, but Quagga doesn't take
>> the routes
>>>> from Bird. But Bird is sending the packet with the routing
>> information.
>>>> I have the following message in the quagga-ospfd logfile:
>>>> 2007/05/25 08:12:05 OSPF: Route[External]: Calculate
>> AS-external-LSA to
>>>> 172.16.104.0/24
>>>> 2007/05/25 08:12:05 OSPF: Route[External]: Can't find
>> originating ASBR
>>>> route
>>>>
>>>> With quagga - quagga (which is working) I have the
>> following log entry:
>>>> 2007/05/25 08:06:08 OSPF: Route[External]: Calculate
>> AS-external-LSA to
>>>> 172.16.104.0/24
>>>> 2007/05/25 08:06:08 OSPF: Route[External]: AS-external-LSA
>> is MAXAGE
>>>> 2007/05/25 08:06:08 OSPF:
>> LSA[Type5,id(172.16.104.0),ar(172.16.104.1)]:
>>>> MaxAge LSA remover scheduled.
>>>>
>>>> The Quagga router of router 4 is listed in router 1 as
>> border-router. If
>>>> I replace the routing daemon in router 4 with Bird, it
>> will not appear
>>>> again as border-router.
>>>>
>>>> Another strange thing is, that in the LSA Update packets
>> from 10.254.4.1
>>>> to 224.0.0.5, with Quagga I have the following data:
>>>> Type: PTP
>>>> Router ID: 172.16.101.1 (-> the difference!)
>>>> Link Data: 10.254.4.1
>>>> Link Type: 1 -Point-to-point connection to another router
>>>>
>>>> In Bird the data looks like this:
>>>> Type: PTP
>>>> Router ID: 172.16.101.1
>>>> Link Data: 0.0.0.60 (-> the difference!)
>>>> Link Type: 1 -Point-to-point connection to another router
>>>>
>>>> Is the link data field only informational?
>>>>
>>>> Unfortunately it is necessary for us, that the
>> communication between
>>>> Bird and Quagga is working until everything is migrated to Bird.
>>>>
>>>> As attachement you will find tcpdump output, quagga log
>> files and the
>>>> configuration files.
>>>>
>>>> Please, let me know if there are some informations missing.
>>>>
>>>> Thanks in advance.
>>>>
>>>> Best regards
>>>> Elmar
>>>>
>>>> P.S. Sorry for my bad english :-(
>>>
>>
>> --------------------------------------------------------------
>> ------------------
>>
>>
>>> --- topology.c.good 2005-02-20 19:58:01.000000000 +0100
>>> +++ topology.c 2007-05-26 17:00:26.000000000 +0200
>>> @@ -81,11 +81,13 @@
>>> ln->id = neigh->rid;
>>> ln->metric = ifa->cost;
>>> ln->notos = 0;
>>> +#if 0
>>> if (ifa->iface->flags && IA_UNNUMBERED)
>>> {
>>> ln->data = ifa->iface->index;
>>> }
>>> else
>>> +#endif
>>> {
>>> ln->data = ipa_to_u32(ifa->iface->addr->ip);
>>> }
>>>
>>
More information about the Bird-users
mailing list