On Fri, Jan 28, 2011 at 10:19 AM, Daniel Rimal danri...@gmail.com wrote:
On Fri, Jan 28, 2011 at 10:07 AM, Ondrej Zajicek santi...@crfreenet.org
wrote:
On Thu, Jan 27, 2011 at 05:50:42PM +0100, Daniel Rimal wrote:
Hello,
i have little weird problem with route selection in bird. A have four
routers in
my AS, routers called R1 and R2 is running guagga, routers called R3 and R4
is running bird 1.2.5. I have configured full mesh between all of them.
IP 81.xxx.yyy.189 and 81.xxx.yyy.190 is ebgp peers. Both,
R3 and R4 running bird have established peer with both ebgp routers.
IP 109.xxx.yyy.11 and 109.xxx.yyy.12 is IP on R3 respectively R4
(ibgp interconnection)
After receive this withdraw from ebgp peer 81.xxx.yyy.189 by R3 for example:
14:19:23.930683 81.xxx.yyy.189 81.x.yyy.185 BGP UPDATE Message
Withdrawn prefix: 187.120.96.0 (187.120.96.0)
bird do this: - switch route between ebgp and ibgp peer very fast -
288 times (in one second) in this case:
14:19:25 TRACE kernel1 replaced 187.120.96.0/23 via 81.xxx.yyy.190
on bond0.402
14:19:25 TRACE kernel1 replaced 187.120.96.0/23 via 109.xxx.yyy.12
on bond0.403
14:19:25 TRACE kernel1 replaced 187.120.96.0/23 via 81.xxx.yyy.190
on bond0.402
This is really strange - if R3 has a route from 81.xxx.yyy.190, that
route should be preferred. One possible explanation is that ebgp peer
81.xxx.yyy.190 also sent that sequence of updates and withdraws to R3
(causing him to switch to ibgp-route when ebgp-route was withdrawn and
swich back when it reappears). Are you sure that it is not the case?
The switching sequence was on both R3 and R4?
Could you also send me an output of 'show route 187.120.96.0/23 all'
on R3 and R4?
There is route detail:
187.120.96.0/23 via 81.xxx.yyy.190 on bond0.402 [casa190 04:45] *
(100) [AS28202i]
Type: BGP unicast univ
BGP.origin: IGP
BGP.as_path: 15685 29208 3549 4230 28202
BGP.next_hop: 81.xxx.yyy.190
BGP.local_pref: 700
BGP.community:
via 109.xxx.yyy.10 on bond0.403 [r2 09:08] (100) [AS28202i]
Type: BGP unicast univ
BGP.origin: IGP
BGP.as_path: 29208 3549 4230 28202
BGP.next_hop: 109.xxx.yyy.10
BGP.local_pref: 500
BGP.community: (2,100) (2,3549) (3549,4359) (3549,30840)
(4230,21) (4230,30) (4230,31) (4230,131) (29208,3549)
via 81.xxx.yyy.189 on bond0.402 [casa189 04:45]
(100) [AS28202i]
Type: BGP unicast univ
BGP.origin: IGP
BGP.as_path: 15685 29208 3549 4230 28202
BGP.next_hop: 81.xxx.yyy.189
BGP.local_pref: 700
BGP.community:
But route list is probably affected by some experiments which i did on
routers last night. I'm sure that ebgp routers send only one
update/withdraw, i checked by tcpdump too. Switching sequence was on
R3 and R4 too.
But i found the problem is probably caused by local_pref settings. I
did some experiments and found bird weird behaviour when i have
identical bgp_local_pref value in import filter on both ibgp peers R3
R4, like that:
filter bgp_in_sitel
{
bgp_local_pref=500;
accept;
}
protocol bgp r4 {
# disabled;
description propoj s R4;
debug {events, states};
local as 35236;
neighbor 109.xxx.yyy.12 as 35236;
hold time 90;
startup hold time 90;
connect retry time 30;
keepalive time 30;
start delay time 5;
error wait time 60, 300;
error forget time 300;
# disable after error;
next hop self;
path metric 1;
default bgp_med 0;
default bgp_local_pref 500;
import filter bgp_in_sitel;
export all;
When i completely disabled import filter on both ibgp peers (set
import all) and default_bgp_local_pref was identical on R3 R4,
bird behaviour was normal.
When i enabled import filter on both sides, set different
bgp_local_pref but default bgp_local_pref was identical, bird
behaviour was still bad.
When i enabled import filter on both sides, set different
bgp_local_pref and set different default bgp_local_pref , bird
behaviour was normal.
Dan
I just checked bird6 and found same problem:
28-01-2011 12:16:10 TRACE kernel1 replaced 2406:5400::/32 via
2a00:1238:xx:xxx::4 on bond0.403
28-01-2011 12:16:10 TRACE kernel1 replaced 2406:5400::/32 via
2001:1528:yy:yyy::1 on bond0.402
28-01-2011 12:16:10 TRACE kernel1 replaced 2406:5400::/32 via
2a00:1238:xx:xxx::4 on bond0.403
28-01-2011 12:16:10 TRACE kernel1 replaced 2406:5400::/32 via
2001:1528:yy:yyy::1 on bond0.402
28-01-2011 12:16:10 TRACE kernel1 replaced 2406:5400::/32 via
2a00:1238:xx:xxx::4 on bond0.403
Set different local_pref between ibgp peers solved problem, but it
looks like bug, right?
Thank you!
Dan