[j-nsp] Prefix independent convergence and FIB backup path

Michael Hare michael.hare at wisc.edu
Thu Feb 8 08:31:42 EST 2018


Hi Mark-

We had a long thread on a similar topic last spring, if you haven't browsed through this you may find it valuable.

https://puck.nether.net/pipermail/juniper-nsp/2017-April/034145.html

-Michael

> -----Original Message-----
> From: juniper-nsp [mailto:juniper-nsp-bounces at puck.nether.net] On Behalf
> Of Mark Smith
> Sent: Thursday, February 8, 2018 6:02 AM
> To: juniper-nsp at puck.nether.net
> Subject: [j-nsp] Prefix independent convergence and FIB backup path
> 
> Hi list,
> 
> Test topology below. 2x MX80 with dual ip transit (full table ~600k
> prefixes). TRA1 preferred over TRA2 (Localpref 200 set by PE1 import
> policy). Plain unlabeled inet.0, no mpls in use. In lab topology both
> transits belong to same AS65502.
> 
> What I'm trying to accomplish is somewhat faster failover time in case
> of primary transit failure. In case of no tuning the failover (FIB
> programming) can take up to 10 minutes.
> 
> 
> --------        --------
> | TRA1 |        | TRA2 |   AS65502
> --------        --------
>    | xe-1/3/0      | xe-1/3/0
> -------         -------
> | PE1 | --ae0-- | PE2 |    AS65501
> -------         -------
>    |
> -----------
> | test pc |
> -----------
> 
> In the lab PE1 and PE2 are MX80s running 15.1R6.7.
> I have configured BGP add-path and PIC edge (routing-options protect
> core) on both PEs.
> All looks ok on PE1. Both primary and backup paths are installed in
> FIB. PE1 converges fast.
> The backup path is missing in PE2 FIB. When PE1-TRA1 cable is cut PE1
> quickly switches to backup path but PE2 does not and the result is a
> temporary routing loop between PE1 and PE2.
> If I switch the active transit to PE2 (set LP220 on TRA2 import on
> PE2, no other changes), the situation is reversed. All looks ok on PE2
> but not on PE1. So it looks like the PIC works only on the box
> connected to primary transit (=EBGP route is better than IBGP route).
> NHS/no-NHS on ibgp export does not have an effect. Is this a bug,
> feature, or am I doing something wrong?
> 
> I know that a better solution could be to get rid of full table and
> just use 2x default route from upstream... anyways I would like to get
> more familiar with PIC.
> 
> Stable situation, all ok on PE1:
> admin at PE1> show route table inet.0 8.8.8.8
> 
> inet.0: 607797 destinations, 1823329 routes (607797 active, 0
> holddown, 0 hidden)
> @ = Routing Use Only, # = Forwarding Use Only
> + = Active Route, - = Last Active, * = Both
> 
> 8.8.8.0/24         @[BGP/170] 05:03:44, localpref 200
>                       AS path: 65502 65200 25091 15169 I,
> validation-state: unverified
>                     > to 10.100.100.133 via xe-1/3/0.0
>                     [BGP/170] 05:05:55, localpref 100, from 10.100.100.40
>                       AS path: 65502 65200 25091 15169 I,
> validation-state: unverified
>                     > to 10.100.100.137 via ae0.0
>                    #[Multipath/255] 05:02:54
>                     > to 10.100.100.133 via xe-1/3/0.0
>                       to 10.100.100.137 via ae0.0
> 
> admin at PE1> show route forwarding-table destination 8.8.8.8 table
> default extensive
> Routing table: default.inet [Index 0]
> Internet:
> 
> Destination:  8.8.8.0/24
>   Route type: user
>   Route reference: 0                   Route interface-index: 0
>   Multicast RPF nh index: 0
>   Flags: sent to PFE, rt nh decoupled
>   Next-hop type: unilist               Index: 1048575  Reference: 607767
>   Nexthop: 10.100.100.133
>   Next-hop type: unicast               Index: 826      Reference: 4
>   Next-hop interface: xe-1/3/0.0    Weight: 0x1
>   Nexthop: 10.100.100.137
>   Next-hop type: unicast               Index: 827      Reference: 3
>   Next-hop interface: ae0.0         Weight: 0x4000
> 
> 
> But not on PE2:
> admin at PE2> show route table inet.0 8.8.8.8
> 
> inet.0: 607798 destinations, 1215564 routes (607798 active, 607766
> holddown, 0 hidden)
> @ = Routing Use Only, # = Forwarding Use Only
> + = Active Route, - = Last Active, * = Both
> 
> 8.8.8.0/24         *[BGP/170] 00:02:10, localpref 200, from 10.100.100.30
>                       AS path: 65502 65200 25091 15169 I,
> validation-state: unverified
>                     > to 10.100.100.136 via ae0.0
>                     [BGP/170] 1d 01:54:47, localpref 100
>                       AS path: 65502 65200 25091 15169 I,
> validation-state: unverified
>                     > to 10.100.100.134 via xe-1/3/0.0
> 
> admin at PE2> show route forwarding-table destination 8.8.8.8 table
> default extensive
> Routing table: default.inet [Index 0]
> Internet:
> 
> Destination:  8.8.8.0/24
>   Route type: user
>   Route reference: 0                   Route interface-index: 0
>   Multicast RPF nh index: 0
>   Flags: sent to PFE
>   Next-hop type: indirect              Index: 1048574  Reference: 607767
>   Nexthop: 10.100.100.136
>   Next-hop type: unicast               Index: 790      Reference: 11
>   Next-hop interface: ae0.0
> 
> 
> 
> During TRA1 failure before PE2 convergence
> --------------------------------------------
> 
> [root at test-pc ~]# traceroute -n 8.8.8.8
> traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
>  1  192.168.23.1  0.542 ms  0.574 ms  0.543 ms
>  2  10.100.100.137  0.289 ms  0.274 ms  0.250 ms
>  3  10.100.100.136  0.533 ms  0.521 ms  0.508 ms
>  4  10.100.100.137  0.299 ms  0.283 ms  0.276 ms
>  5  10.100.100.136  0.442 ms  0.401 ms  0.388 ms
>  6  10.100.100.137  0.325 ms  0.271 ms  0.257 ms
>  7  10.100.100.136  0.298 ms  0.297 ms  0.314 ms
>  8  10.100.100.137  0.316 ms  0.310 ms  0.288 ms
>  9  10.100.100.136  0.264 ms  0.382 ms  0.303 ms
> 10  10.100.100.137  0.339 ms  0.326 ms  0.315 ms
> 11  10.100.100.136  0.348 ms  0.331 ms  0.306 ms
> 12  10.100.100.137  0.297 ms  0.353 ms  0.330 ms
> 13  10.100.100.136  0.347 ms  0.338 ms  0.316 ms
> 14  10.100.100.137  0.346 ms  0.324 ms  0.300 ms
> 15  10.100.100.136  0.329 ms  0.352 ms  0.334 ms
> 16  10.100.100.137  0.381 ms  0.363 ms  0.353 ms
> 17  10.100.100.136  0.328 ms  0.329 ms  0.317 ms
> 18  10.100.100.137  0.475 ms  0.386 ms  0.370 ms
> 19  10.100.100.136  0.392 ms  0.373 ms  0.369 ms
> 20  10.100.100.137  0.394 ms  0.463 ms  0.407 ms
> 21  10.100.100.136  0.368 ms  0.374 ms  0.404 ms
> 22  10.100.100.137  0.457 ms  0.416 ms  0.404 ms
> 23  10.100.100.136  0.353 ms  1.448 ms  1.405 ms
> 24  10.100.100.137  0.468 ms  0.455 ms  0.475 ms
> 25  10.100.100.136  1.240 ms  1.276 ms  1.256 ms
> 26  10.100.100.137  0.438 ms  0.475 ms  0.414 ms
> 27  10.100.100.136  1.106 ms  1.097 ms  1.082 ms
> 28  10.100.100.137  0.475 ms  0.452 ms  0.415 ms
> 29  10.100.100.136  0.924 ms  0.880 ms  0.827 ms
> 30  10.100.100.137  0.459 ms  0.443 ms  0.423 ms
> 
> (Note about lab: 8.8.8.8 is a loopback address on the MX router acting
> as both TRA1 and TRA2. DFZ is fed to that box with bgp_simple script)
> 
> 
> Thanks
> _______________________________________________
> juniper-nsp mailing list juniper-nsp at puck.nether.net
> https://puck.nether.net/mailman/listinfo/juniper-nsp


More information about the juniper-nsp mailing list