PIC Edge Troubleshooting

Topology: ine-spv4

Load bgp.pic.global.tshoot.init.cfg

#IOS-XE
config replace flash:bgp.pic.global.tshoot.init.cfg
 
#IOS-XR
configure
load bootflash:bgp.pic.global.tshoot.init.cfg
commit replace
y

IPv4 BGP routing is currently setup in the network. R2 is a dual-homed CE that announces 1.1.1.1/32 and 2.2.2.2/32 to R3 and R4. XR1 is single-homed to R5, announcing 19.19.19.19/32 and 20.20.20.20/32. R6 is the RR.

PIC and add path is configured in the core network. However, R5 does not have a repair route for 1.1.1.1/32 and 2.2.2.2/32. Explain the problem and fix it. Do not change BGP attributes to fix the issue.

Answer

The issue is that R4 is hiding the alternate routes. R3 is setting LP to 110 based on the received customer community on routes received from R2. R4 chooses R3 as the best path, instead of its own eBGP routes to R2.

To fix this we have two options:

  • Have R4 advertise the best external path

    • Does not require Add Path

  • Have R4 advertise additional paths to R6

    • Requires Add Path

Note that this could also be fixed by having R4 set weight on routes received from R2, but this is prohibited by the lab instructions.

#R4
router bgp 100
 add ipv4
  bgp advertise-best-external

!
! or
!

#R4
router bgp 100
 add ipv4
  bgp additional-paths send receive
  bgp additional-paths select best 2
  neighbor 6.6.6.6 advertise additional-paths best 2
#R6
router bgp 100
 add ipv4
  bgp additional-paths send receive

Explanation

Let’s first examine the problem. R4 has two paths to 1.1.1.1/32 and 2.2.2.2/32. One path via R3 with LP=110, and one path via the eBGP peer with default LP. Naturally, it will choose R3 as the bestpath due to the higher LP.

Because of this, R4 hides its eBGP path. Its best path is via an iBGP learned route, so it does not advertise a path to the RR (basic iBGP split horizon rule). On R6 (the RR) we can see that it only knows one path, via R3. Even though Add Path and PIC is configured on R5, there is no alternate route for R5 to use as a backup path.

Using advertise-best-external

The easiest fix is to use the advertise-best-external feature on R4. This configures the router to always advertise its best eBGP route, even if an iBGP route is the bestpath. This also implicitly enables PIC on R4. This does not use Add Path, so this change is non-disruptive. This just prevents information hiding. R4 will never advertise multiple paths, so Add Path is not needed.

Now R6 sees the additional path from R4:

Using Add Path, this is advertised to R5, where it is installed as a backup path:

Using Add Path on R4 instead

The other method is to enable Add Path on R4. To do this, we must configure R6 to also receive additional paths (right now it is only sending additional paths). So this will disrupt all iBGP sessions. We also configure R4 to send and receive additional paths.

#R4, R6
router bgp 100
 add ipv4
  bgp additional-paths send receive

On R4 we just need to select the best 2 routes and advertise these to R6.

#R4
router bgp 100
 add ipv4
  bgp additional-paths select best 2
  neighbor 6.6.6.6 advertise additional-paths best 2

Optionally, we can also locally install the backup path as a repair path.

#R4
router bgp 100
 add ipv4
  bgp additional-paths install

Last updated