Wired Bird BGP behaviour
Hello, i have the following setup: ISP-Router | --+----------+----------+----------+ NET-ISP | | | | Quagga1 Quagga2 Quagga3 Quagga4 Test-Quagga1 Bird | | | | | | | | | | | | --+-|--------+-|--------+-|--------+-|--------+-|--------+ | NET-1 ----+----------+----------+----------+----------+----------+ NET-2 <-------official productive AS----------> <-- private test AS--> Quagga1-4 belong to our official AS. The Test-Quagga and the Bird use a private AS. All six BGP-Routers in NET-1 and NET-2 are fully meshed with BGP sessions over NET-1 and NET-2. Only Quagga1 and Quagga2 have BGP sessions to the ISP-Router. On Quagga1 and Quagga2, I see about 290000 accepted prefixes on the BGP-sessions to the ISP router and on the two sessions between Quagga1 and Quagga2. On Bird, I also see about 290000 accepted prefixes on all sessions. On Test-Quagga1, I see only 3 accepted prefixes on the sessions to Bird (the direct attached networks). When I shut down all eBGP sessions on Test-Quagga1, I get the expected ~290000 accepted prefixes on the two sessions to the Bird. The routing table grows very slowly. If I stop Bird and start Quagga on the same system, I see all expected ~290000 prefixes on Test-Quagga1 via iBGP. It seems that Bird does not re-announce routes to Test-Quagga1 that it learnt via eBGP if it also receives those routes from Test-Quagga1 via iBGP. This behaviour is different to Quagga. Is my suspicion correct? Can anyone explain this behaviour? What is Bird doing differently than Quagga? Is this a sensible behaviour of Bird? Should/can it be fixed? Mit freundlichen Grüßen Dr. Christian Riede Teamleiter Technik Besuchen Sie uns vom 30.09. bis 02.10.2009 auf der Fachmesse www.SAFEKON.de auf dem Stand E.08 der Karlsruher IT-Sicherheitsinitiative (www.ka-it-si.de). -- _________________________________________ =C=O=N=N=E=C=T== Karlsruhe GmbH Computer und Netzwerktechnik Gebrüder-Himmelheber-Straße 7 D-76135 Karlsruhe Amtsgericht Mannheim HRB 110258 Geschäftsführer: Stefan Kratzer Telefon: +49 (0) 721 20120-0 Telefax: +49 (0) 721 20120-500 Internet: www.it-connect.de E-Mail: christian.riede@it-connect.de _________________________________________
On 21.09.2009 10:10 Dr. Christian Riede wrote
It seems that Bird does not re-announce routes to Test-Quagga1 that it learnt via eBGP if it also receives those routes from Test-Quagga1 via iBGP. This behaviour is different to Quagga.
Wild guess: Quagga and BIRD are handling private ASN diffently. Waht happens if you are using (a) your own AS (b) grab an official AS just for testing Arnold -- Arnold Nipper / nIPper consulting, Sandhausen, Germany email: arnold@nipper.de phone: +49 6224 9259 299 mobile: +49 172 2650958 fax: +49 6224 9259 333
On Mon, Sep 21, 2009 at 10:21:44AM +0200, Arnold Nipper wrote:
On 21.09.2009 10:10 Dr. Christian Riede wrote
It seems that Bird does not re-announce routes to Test-Quagga1 that it learnt via eBGP if it also receives those routes from Test-Quagga1 via iBGP. This behaviour is different to Quagga.
Wild guess: Quagga and BIRD are handling private ASN diffently. Waht happens if you are using (a) your own AS (b) grab an official AS just for testing
AFAIK there is no difference between handling 'official' ASNs and 'private' ASNs in BIRD. -- Elen sila lumenn' omentielvo Ondrej 'SanTiago' Zajicek (email: santiago@crfreenet.org) OpenPGP encrypted e-mails preferred (KeyID 0x11DEADC3, wwwkeys.pgp.net) "To err is human -- to blame it on a computer is even more so."
On Mon, Sep 21, 2009 at 10:10:43AM +0200, Dr. Christian Riede wrote:
On Test-Quagga1, I see only 3 accepted prefixes on the sessions to Bird (the direct attached networks). When I shut down all eBGP sessions on Test-Quagga1, I get the expected ~290000 accepted prefixes on the two sessions to the Bird. The routing table grows very slowly.
If I stop Bird and start Quagga on the same system, I see all expected ~290000 prefixes on Test-Quagga1 via iBGP.
It seems that Bird does not re-announce routes to Test-Quagga1 that it learnt via eBGP if it also receives those routes from Test-Quagga1 via iBGP. This behaviour is different to Quagga.
Is my suspicion correct?
Can anyone explain this behaviour?
Perhaps BIRD learned the prefixes from Test-Quagga and prefer that route? In that case, it shouldn't propagate less prefered routes received through Quagga1. Could you send output of 'show protocols all' and part of output of 'show route'? -- Elen sila lumenn' omentielvo Ondrej 'SanTiago' Zajicek (email: santiago@crfreenet.org) OpenPGP encrypted e-mails preferred (KeyID 0x11DEADC3, wwwkeys.pgp.net) "To err is human -- to blame it on a computer is even more so."
On Mon, Sep 21, 2009 at 11:04:36AM +0200, Ondrej Zajicek wrote:
Can anyone explain this behaviour?
Perhaps BIRD learned the prefixes from Test-Quagga and prefer that route? In that case, it shouldn't propagate less prefered routes received through Quagga1.
If this is true, than i would expect that slow routing table grow is caused by Test-Quagga1 rate limitation on sending withdraws to Bird - when Bird receives withdraw for some prefix from Test-Quagga1, it elects different route for that prefix and announce that to Test-Quagga1. It can be detected using statistics from 'show protocols all' whether number of sent prefixes grows together with number of received withdraws. -- Elen sila lumenn' omentielvo Ondrej 'SanTiago' Zajicek (email: santiago@crfreenet.org) OpenPGP encrypted e-mails preferred (KeyID 0x11DEADC3, wwwkeys.pgp.net) "To err is human -- to blame it on a computer is even more so."
On Mon, Sep 21, 2009 at 11:04:36AM +0200, Ondrej Zajicek wrote:
On Mon, Sep 21, 2009 at 10:10:43AM +0200, Dr. Christian Riede wrote:
On Test-Quagga1, I see only 3 accepted prefixes on the sessions to Bird (the direct attached networks). When I shut down all eBGP sessions on Test-Quagga1, I get the expected ~290000 accepted prefixes on the two sessions to the Bird. The routing table grows very slowly.
If I stop Bird and start Quagga on the same system, I see all expected ~290000 prefixes on Test-Quagga1 via iBGP.
It seems that Bird does not re-announce routes to Test-Quagga1 that it learnt via eBGP if it also receives those routes from Test-Quagga1 via iBGP. This behaviour is different to Quagga.
Is my suspicion correct?
Can anyone explain this behaviour?
Perhaps BIRD learned the prefixes from Test-Quagga and prefer that route? In that case, it shouldn't propagate less prefered routes received through Quagga1.
Yes, it is this behavior and it is probably caused by different default value of LOCAL_PREF attribute. This attribute is expected to be configured consistently on all routers in an AS accorrding to a local policy. But it is not specified what is a default value - BIRD uses 0 and Quagga uses 100. Therefore your Bird prefer prefixes received from Test-Quagga as it expected that they come from preferred uplink eBGP. Therefore, you should configure BIRD and Quagga to use the same LOCAL_PREF value for the same eBGP uplink. In BIRD, it should be done using import filters in eBGP protocol: import filter { bgp_local_pref = 100; accept; }; There is also option default_local_pref, it does something different (and is mostly useless). -- Elen sila lumenn' omentielvo Ondrej 'SanTiago' Zajicek (email: santiago@crfreenet.org) OpenPGP encrypted e-mails preferred (KeyID 0x11DEADC3, wwwkeys.pgp.net) "To err is human -- to blame it on a computer is even more so."
On 09/22/2009 09:15 AM, Ondrej Zajicek wrote:
Yes, it is this behavior and it is probably caused by different default value of LOCAL_PREF attribute. This attribute is expected to be configured consistently on all routers in an AS accorrding to a local policy. But it is not specified what is a default value - BIRD uses 0 and Quagga uses 100. Therefore your Bird prefer prefixes received from Test-Quagga as it expected that they come from preferred uplink eBGP.
I think this should be changed in Bird. "Common" default value of LOCAL_PREF is 100, not 0. This is mentioned in RFC4277. Cisco and Juniper implementations of BGP also uses 100 as default value. With regards, Daniel
On Tue, Sep 22, 2009 at 10:03:59AM +0200, Daniel Suchy wrote:
I think this should be changed in Bird. "Common" default value of LOCAL_PREF is 100, not 0. This is mentioned in RFC4277. Cisco and Juniper implementations of BGP also uses 100 as default value.
Good point. So we will perhaps change it with some major version of BIRD. -- Elen sila lumenn' omentielvo Ondrej 'SanTiago' Zajicek (email: santiago@crfreenet.org) OpenPGP encrypted e-mails preferred (KeyID 0x11DEADC3, wwwkeys.pgp.net) "To err is human -- to blame it on a computer is even more so."
Hello Ondrej, On Tue, Sep 22, 2009 at 09:15:40AM +0200, Ondrej Zajicek wrote:
In BIRD, it should be done using import filters in eBGP protocol: import filter { bgp_local_pref = 100; accept; };
Very good. Now I see all ~290000 routes in all sessions. Thanks for your help. Mit freundlichen Grüßen Dr. Christian Riede Teamleiter Technik Besuchen Sie uns vom 30.09. bis 02.10.2009 auf der Fachmesse www.SAFEKON.de auf dem Stand E.08 der Karlsruher IT-Sicherheitsinitiative (www.ka-it-si.de). -- _________________________________________ =C=O=N=N=E=C=T== Karlsruhe GmbH Computer und Netzwerktechnik Gebrüder-Himmelheber-Straße 7 D-76135 Karlsruhe Amtsgericht Mannheim HRB 110258 Geschäftsführer: Stefan Kratzer Telefon: +49 (0) 721 20120-0 Telefax: +49 (0) 721 20120-500 Internet: www.it-connect.de E-Mail: christian.riede@it-connect.de _________________________________________
participants (4)
-
Arnold Nipper -
Daniel Suchy -
Dr. Christian Riede -
Ondrej Zajicek