[j-nsp] BGP multipath bug?
Kevin Day
toasty at dragondata.com
Thu Oct 9 13:13:38 EDT 2008
I think I've found a bug dealing with multipath BGP routes. If a
prefix has several routes with the same localpref/metric, they ALL
have to perfectly match for any of them to get joined in a multipath
next-hop. For example:
10.5.54.0/23 *[BGP/170] 1d 19:18:04, MED 100, localpref 25
AS path: 65000 209 701 12163 I
> to 10.0.111.34 via ge-2/2/0.0
[BGP/170] 1d 19:20:20, MED 100, localpref 25
AS path: 65001 3549 701 12163 I
> to 10.1.111.21 via ae2.106
[BGP/170] 1d 19:18:18, MED 100, localpref 25
AS path: 65000 209 701 12163 I
> to 10.0.111.38 via ge-3/0/0.0
#1 and #3 in there are identical. They should be joined for a multihop
route, but aren't. #2 is blocking it somehow. If I change the
localpref so that 1 and 3 aren't the same as 2, it works:
10.5.54.0/23 *[BGP/170] 1d 19:36:35, MED 100, localpref 100,
from 10.0.111.38
AS path: 65000 209 701 12163 I
> to 10.0.111.34 via ge-2/2/0.0
to 10.0.111.38 via ge-3/0/0.0
[BGP/170] 1d 19:36:21, MED 100, localpref 100
AS path: 65000 209 701 12163 I
> to 10.0.111.34 via ge-2/2/0.0
[BGP/170] 1d 19:38:37, MED 100, localpref 25
AS path: 65001 3549 701 12163 I
> to 10.1.111.21 via ae2.106
Or, if I set all 3 back to 25, and shutdown the session to 65001 they
link up:
10.5.54.0/23 *[BGP/170] 1d 19:36:35, MED 100, localpref 25, from
10.0.111.38
AS path: 65000 209 701 12163 I
> to 10.0.111.34 via ge-2/2/0.0
to 10.0.111.38 via ge-3/0/0.0
[BGP/170] 1d 19:36:21, MED 100, localpref 25
AS path: 65000 209 701 12163 I
> to 10.0.111.34 via ge-2/2/0.0
Then when 65001 comes back up it gets even weirder:
10.5.54.0/23 *[BGP/170] 1d 19:51:41, MED 100, localpref 25
AS path: 65000 209 701 12163 I
> to 10.0.111.38 via ge-3/0/0.0
[BGP/170] 1d 19:51:27, MED 100, localpref 25
AS path: 65000 209 701 12163 I
> to 10.0.111.34 via ge-2/2/0.0
to 10.0.111.38 via ge-3/0/0.0
[BGP/170] 00:00:43, MED 100, localpref 25
AS path: 65001 3549 701 12163 I
> to 10.1.111.21 via ae2.106
Now it's created the multihop next-hop, but isn't selecting it
(inactive reason: router id), but it isn't using the route learned
from 65001 either. So, just reintroducing an unselected route from
another peer is changing things again.
Even depref'ing 65001's route again doesn't clear this:
10.5.54.0/23 *[BGP/170] 1d 20:00:23, MED 100, localpref 25
AS path: 65000 209 701 12163 I
> to 10.0.111.38 via ge-3/0/0.0
[BGP/170] 1d 20:00:09, MED 100, localpref 25
AS path: 65000 209 701 12163 I
> to 10.0.111.34 via ge-2/2/0.0
to 10.0.111.38 via ge-3/0/0.0
[BGP/170] 00:00:51, MED 100, localpref 24
AS path: 65001 3549 701 12163 I
> to 10.1.111.21 via ae2.106
What am I doing wrong here? :) Is there any way to apply an import
policy to the multipath route that's different from the non-multihop
route, so I can force it to be preferred?
-- Kevin
More information about the juniper-nsp
mailing list