BIRD <-> Quagga Compatiblity

Vonlanthen, Elmar Elmar.Vonlanthen at united-security-providers.ch
Wed May 30 17:25:10 CEST 2007


Hello Ondrej

Here the output of the commands, I have removed the output of the interfaces eth3 (not configured) and imq0 to imq7:

bird-orig> show ospf interface 
ospf1:
Interface "gAAchgut1":
        Type: point-to-point 
        Area: 0.0.0.0 (0)
        State: point-to-point 
        Priority: 1
        Cost: 20
        Hello timer: 10
        Wait timer: 40
        Dead timer: 40
        Retransmit timer: 5

bird-iface-patched> show ospf interface 
ospf1:
<was empty!>

--------------------------------------

bird-orig> show interfaces
lo up (index=1)
        MultiAccess AdminUp LinkUp Loopback Ignored MTU=16436
        127.0.0.1/8 (Primary, broadcast 127.255.255.255, scope host)
eth0 up (index=2)
        MultiAccess Broadcast Multicast AdminUp LinkUp MTU=1500
        172.16.104.1/24 (Primary, broadcast 172.16.104.255, scope site)
eth1 up (index=3)
        MultiAccess Broadcast Multicast AdminUp LinkUp MTU=1500
        10.10.104.1/25 (Primary, broadcast 10.10.104.127, scope site)
        10.10.104.4/25 (Secondary, broadcast 10.10.104.127, scope site)
        10.10.104.10/25 (Secondary, broadcast 10.10.104.127, scope site)
eth2 up (index=4)
        MultiAccess Broadcast Multicast AdminUp LinkUp MTU=1500
        10.100.104.1/24 (Primary, broadcast 10.100.104.255, scope site)
        10.100.104.4/24 (Secondary, broadcast 10.100.104.255, scope site)
ipsec0 up (index=55)
        MultiAccess AdminUp LinkUp MTU=1380
        10.10.104.1/25 (Primary, broadcast 10.10.104.127, scope site)
ipsec1 up (index=56)
        MultiAccess AdminUp LinkUp MTU=1380
        10.10.104.4/25 (Primary, broadcast 10.10.104.127, scope site)
ipsec2 up (index=57)
        MultiAccess AdminUp LinkUp MTU=1380
        10.100.104.1/24 (Primary, broadcast 10.100.104.255, scope site)
ipsec3 up (index=58)
        MultiAccess AdminUp LinkUp MTU=1380
        10.100.104.4/24 (Primary, broadcast 10.100.104.255, scope site)
gAAchgut1 up (index=63)
        PtP Multicast AdminUp LinkUp MTU=1356
        10.254.4.1/32 (Primary, broadcast 10.254.1.4, opposite 10.254.1.4, scope site, unnumbered)

bird-iface-patched> show interfaces
lo up (index=1)
        MultiAccess AdminUp LinkUp Loopback Ignored MTU=16436
        127.0.0.1/8 (Primary, broadcast 127.255.255.255, scope host)
eth0 up (index=2)
        MultiAccess Broadcast Multicast AdminUp LinkUp MTU=1500
        172.16.104.1/24 (Primary, broadcast 172.16.104.255, scope site)
eth1 up (index=3)
        MultiAccess Broadcast Multicast AdminUp LinkUp MTU=1500
        10.10.104.1/25 (Primary, broadcast 10.10.104.127, scope site)
        10.10.104.4/25 (Secondary, broadcast 10.10.104.127, scope site)
        10.10.104.10/25 (Secondary, broadcast 10.10.104.127, scope site)
eth2 up (index=4)
        MultiAccess Broadcast Multicast AdminUp LinkUp MTU=1500
        10.100.104.1/24 (Primary, broadcast 10.100.104.255, scope site)
        10.100.104.4/24 (Secondary, broadcast 10.100.104.255, scope site)
ipsec0 up (index=55)
        MultiAccess AdminUp LinkUp MTU=1380
        10.10.104.1/25 (Primary, broadcast 10.10.104.127, scope site)
ipsec1 up (index=56)
        MultiAccess AdminUp LinkUp MTU=1380
        10.10.104.4/25 (Primary, broadcast 10.10.104.127, scope site)
ipsec2 up (index=57)
        MultiAccess AdminUp LinkUp MTU=1380
        10.100.104.1/24 (Primary, broadcast 10.100.104.255, scope site)
ipsec3 up (index=58)
        MultiAccess AdminUp LinkUp MTU=1380
        10.100.104.4/24 (Primary, broadcast 10.100.104.255, scope site)
gAAchgut1 DOWN (index=63)
        PtP Multicast AdminUp LinkUp MTU=1356
        10.254.4.1/32 (Unselected, broadcast 10.254.1.4, opposite 10.254.1.4, scope site, unnumbered)

Why is the GRE-interface in bird shown as down?

This is the output of "ifconfig gAAchgut1":
gAAchgut1 Link encap:UNSPEC  HWaddr 0A-0A-68-01-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:10.254.4.1  P-t-P:10.254.1.4  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1356  Metric:1
          RX packets:158 errors:0 dropped:0 overruns:0 frame:0
          TX packets:92 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:11108 (10.8 KiB)  TX bytes:8588 (8.3 KiB)

Best regards
Elmar

> -----Original Message-----
> From: Ondrej Filip [mailto:feela at network.cz] 
> Sent: Wednesday, May 30, 2007 11:11 AM
> To: Vonlanthen, Elmar
> Cc: bird-users at network.cz
> Subject: 
> 
> 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