[c-nsp] BGP route not pre-empting floating static, sometimes

Pete Lumbis alumbis at gmail.com
Wed Aug 28 21:11:07 EDT 2013


Classic redistribution race condition. Notice in the failed state that the
BGP table shows two routes, one from the ISP and one that is locally
sourced ( from 0.0.0.0....weight 32768).

What happens is that BGP is picking a best route and only presenting that
single route up to the routing table. The routing table is now comparing
the static against the best route BGP is presenting. Since the BGP
presented route *is the static*, it fails.

When you clear the PPPoE session the static is removed from the routing
table. Because it's no longer in the routing table it's no longer a
candidate for redistribution into BGP. BGP then runs best path and picks
the ISP learned route, that goes in the routing table and the floating
static is kept at bay.

The easiest fix is to apply a route map to your "redistribute static"
statement in BGP to either not redistribute the floating static or to make
it less preferred than the ISP route.

-Pete


On Wed, Aug 28, 2013 at 6:38 PM, Chris Hunt <dharmachris at gmail.com> wrote:

> Gurus,
>     I'm having trouble getting BGP to preempt a floating static route.
> The situation looks like this, I've got two paths from our colo to a
> network at remote site (4.4.4.0/24 in this lab example): one metro
> ethernet and one DSL , both inside a vrf.  We're running BGP over the
> metro ethernet circuit and just using a floating static in case the
> ethernet fails and BGP goes down. That seems to work OK:
> router-1#show ip route vrf TestCo 4.4.4.0
> Routing entry for 4.4.4.0/24
>   Known via "bgp 65517", distance 20, metric 0
>   Tag 65000, type external
>   Last update from 10.180.3.2 00:00:01 ago
>   Routing Descriptor Blocks:
>   * 10.180.3.2, from 10.180.3.2, 00:00:01 ago
>       Route metric is 0, traffic share count is 1
>       AS Hops 1
>       Route tag 65000
>
>
> When the ethernet fails, the BGP adjacency goes down the floating static
> pops up in the FIB:
> Routing entry for 4.4.4.0/24
>   Known via "static", distance 254, metric 0
>   Redistributing via bgp 65517
>   Advertised by bgp 65517
>   Routing Descriptor Blocks:
>   * 192.168.100.14
>       Route metric is 0, traffic share count is 1
>
>
> Then when I bring up the Ethernet link, BGP establishes, and the colo
> router receives the advertisement:
> router-1#show ip bgp vpnv4 vrf TestCo neighbors 10.180.3.2 routes
> BGP table version is 392820, local router ID is 172.16.0.241
> Status codes: s suppressed, d damped, h history, * valid, > best, i -
> internal,
>               r RIB-failure, S Stale
> Origin codes: i - IGP, e - EGP, ? - incomplete
>
>    Network          Next Hop            Metric LocPrf Weight Path
> Route Distinguisher: 200:1 (default for vrf TestCo)
> *  4.4.4.0/24       10.180.3.2               0             0 65000 i
>
> Total number of prefixes 1
>
> router-1#show ip bgp vpnv4 vrf TestCo 4.4.4.0
> BGP routing table entry for 200:1:4.4.4.0/24, version 392815
> Paths: (2 available, best #2, table TestCo)
>   Advertised to update-groups:
>      4          6
>   65000
>     10.180.3.2 from 10.180.3.2 (10.180.3.2)
>       Origin IGP, metric 0, localpref 100, valid, external
>       Extended Community: RT:200:1
>       mpls labels in/out 376/nolabel
>   Local
>     192.168.100.14 from 0.0.0.0 (x.x.x.241)
>       Origin incomplete, metric 0, localpref 100, weight 32768, valid,
> sourced, best
>       Extended Community: RT:200:1
>       mpls labels in/out 376/nolabel
>
>
>
> But it does not pre-empt the floating static in the FIB:
> router-1#show ip ro vrf TestCo 4.4.4.0
> Routing entry for 4.4.4.0/24
>   Known via "static", distance 254, metric 0
>   Redistributing via bgp 65517
>   Advertised by bgp 65517
>   Routing Descriptor Blocks:
>   * 192.168.100.14
>       Route metric is 0, traffic share count is 1
>
>
> If i then clear the PPPoE session, the BGP route pops into the FIB and
> we start all over:
> router-1#show ip route vrf TestCo 4.4.4.0
> Routing entry for 4.4.4.0/24
>   Known via "bgp 65517", distance 20, metric 0
>   Tag 65000, type external
>   Last update from 10.180.3.2 00:00:01 ago
>   Routing Descriptor Blocks:
>   * 10.180.3.2, from 10.180.3.2, 00:00:01 ago
>       Route metric is 0, traffic share count is 1
>       AS Hops 1
>       Route tag 65000
>
>
> Any ideas what I'm doing wrong?  Here's the config for the remote office:
> router bgp 65000
>  no synchronization
>  bgp router-id 10.180.3.2
>  bgp log-neighbor-changes
>  network 4.4.4.0 mask 255.255.255.0
>  neighbor 10.180.3.1 remote-as 65517
>  neighbor 10.180.3.1 update-source GigabitEthernet0/0
>  no auto-summary
>
> And the colo config (7206VXR):
>  address-family ipv4 vrf TestCo
>  redistribute connected
>  redistribute static
>  neighbor 10.180.3.2 remote-as 65000
>  neighbor 10.180.3.2 update-source GigabitEthernet0/2.690
>  neighbor 10.180.3.2 activate
>  neighbor 10.180.3.2 next-hop-self
>  neighbor 10.180.3.2 default-originate
>  no synchronization
>  exit-address-family
>
>
>
>
> _______________________________________________
> cisco-nsp mailing list  cisco-nsp at puck.nether.net
> https://puck.nether.net/mailman/listinfo/cisco-nsp
> archive at http://puck.nether.net/pipermail/cisco-nsp/
>


More information about the cisco-nsp mailing list