RE: BIRD <-> Quagga Compatiblity
Hello Ondrej and Joseph 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@multip.hu] Sent: Sunday, May 27, 2007 8:13 AM To: Ondrej Filip; Vonlanthen, Elmar Cc: bird-users@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@multip.hu Mobil: +36309403985 ----- Original Message -----
From: "Ondrej Filip" <feela@network.cz> To: "Vonlanthen, Elmar" <Elmar.Vonlanthen@united-security-providers.ch> Cc: <bird-users@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); }
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@multip.hu] Sent: Sunday, May 27, 2007 8:13 AM To: Ondrej Filip; Vonlanthen, Elmar Cc: bird-users@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@multip.hu Mobil: +36309403985 ----- Original Message -----
From: "Ondrej Filip" <feela@network.cz> To: "Vonlanthen, Elmar" <Elmar.Vonlanthen@united-security-providers.ch> Cc: <bird-users@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); }
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@network.cz] Sent: Wednesday, May 30, 2007 11:11 AM To: Vonlanthen, Elmar Cc: bird-users@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@multip.hu] Sent: Sunday, May 27, 2007 8:13 AM To: Ondrej Filip; Vonlanthen, Elmar Cc: bird-users@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@multip.hu Mobil: +36309403985 ----- Original Message -----
From: "Ondrej Filip" <feela@network.cz> To: "Vonlanthen, Elmar" <Elmar.Vonlanthen@united-security-providers.ch> Cc: <bird-users@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); }
participants (2)
-
Ondrej Filip -
Vonlanthen, Elmar