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