BGP Additional Paths

Hello Jon

The neighbor neighbor-id additional-paths send/receive command will define if additional paths will be sent and/or recieved with that particular neighbor. In essence, you enable the feature in that particular BGP neighbor adjacency.

The neighbor neighbor-id advertise additional-paths all/best/group-best command indicates which paths will be advertised in that neighbor adjacency. All of them? The best and second best paths? Or the group best paths as defined in the lesson?

So the first command enables the feature between the specific routers, while the second command specifies what kind of paths will be shared.

I hope this has been helpful!

Laz

Hi Team,

Thank you very much for the replies.
This helps to clear up my confusion totally.

1 Like

Can be some dumb questions and sorry I have not labbed this up yet.

  1. Can we use additional path install command for paths received in bgp table from different neighbors? For example, I get 10.0.0.0/8 from Neighbor A and B, can I use this feature to have one of them as backup route?
  2. If we enable maximum-path 2 ibgp on the RR (R2) in this case, won’t it advertise both the paths from R4 and R5 to its clients avoiding all this additional configurations?
  3. It is mentioned that this feature is fro iBGP but for the group best, it is selecting paths from different ASes which is eBGP routes , so is it contradicting , Am I understanding something wrong?

I will give it a read once again, but any explanation will be helpful.

Regards,
Madhu

Hello Madhu

Yes you can. Actually, this is precisely what the feature is used for. This can be seen in the lesson, where R2 as a route reflector learned two paths to 6.6.6.6 (from R4 and R5) and advertised them both to R1. With the appropriate configuration parameters, this resulted in the installation of a backup path in R1 as can be seen in the below output:

Note here that the “additional paths” and “maximum paths” features are slightly different. You can use the maximum paths feature, but it will function a little differently. Specifically, Cisco states that:

The bgp additional-paths install command will install the type of path that is specified in the bgp additional-paths select command. If the bgp additional-paths select command specifies both keyword options (best-external and backup), the system will install a backup path.

The maximum-paths ebgp andmaximum-paths ibgp commands trigger a multipath computation, and multipaths are automatically installed as primary paths.

On the other hand, the bgp additional-paths install command triggers computation of a backup path or best-external path.

This info is retrieved from this Cisco documentation.

You are correct that the specific paths being mentioned in the groups are from other AS’es, so we’re looking at eBGP. However, a Route Reflector that is in AS4 for example, may have routes to AS1, AS2, and AS3 via eBGP. However, these routes are advertised via iBGP to other routers in AS4. All the next hop routers may be in the same AS, thus these routes would be shared using iBGP, even though they are indeed destinations outside of the AS.

I hope this has been helpful!

Laz

Hi Guys
What about the behavior of R2 for the 6.6.6…6/32 destination ? The BGP convergence on R2 will be right away because it has already installed 2 alternatives in its BGP table:?

  • next hop 4.4.4.4 as the best path installed in the RIB
  • next hop 5.5.5.5 in the bgp table but not in the RIB.

Let’s suppose that R4 is dead and only we have 5.5.5.5
R2 doesn’t need BGP additional feature to configure an install 5.5.5.5 as a backup route to improve BgP convergence?

Am I right?

Hello Rodrigo

As far as R2 is concerned, it has both paths in its routing table, but advertises only one of them. However, R2 will not immediately converge if R4 goes down. The neighbor adjacency will have to be torn down which requires timers to expire before the specific next hop is considered dead. Once that happens, then BGP will reconverge placing 5.5.5.5 as the next hop for that particular route.

If the additional paths feature is not enabled, BGP must reconverge in order for R2 to realize that it must route packets via R5, which will not be immediate, but will take some time.

I hope this has been helpful!

Laz

2 Likes

Interesting. thanks!!!

1 Like


Hello Rene/Team,
Here the above i tried to configure the bgp additional path on RR(R2) to reflect the same towards clients . But when i was configured the LP on R5 to make it as primary link for inside traffic ,the prefix (6.6.6.6) via 5.5.5.5 is only showing in bgp table of RR(R2).Even though the local prefernce has configured 110 for R5(5.5.5.5) the other path should be there in R2 right?

R5#show run | sec bgp
router bgp 5
 bgp router-id 5.5.5.5
 bgp log-neighbor-changes
 neighbor 2.2.2.2 remote-as 5
 neighbor 2.2.2.2 update-source Loopback0
 neighbor 192.168.56.2 remote-as 6
 !
 address-family ipv4
  neighbor 2.2.2.2 activate
  neighbor 2.2.2.2 next-hop-self
  neighbor 2.2.2.2 additional-paths receive
  neighbor 192.168.56.2 activate
  neighbor 192.168.56.2 route-map PRIMARY_LINK in
 exit-address-family
R5#show rou
R5#show route-m
R5#show route-map
route-map PRIMARY_LINK, permit, sequence 10
  Match clauses:
  Set clauses:
    local-preference 110
  Policy routing matches: 0 packets, 0 bytes
R5#

Reagrds
Unni

Rene the question is LP will share within the AS right still the other route needs to show in bgp table of RR right ? Later u will reflect the best path only to client neighbors is agreed but still my question is why that 6.6.6.6/32 vai 4.4.4.4 (R4) is not in bgp table of R2(RR)?

Hello Unni

Without the Local Preference configuration on R5, you have R5 advertising its route to 6.6.6.6 via R6 directly, and R4 advertising its route to 6.6.6.6 via R6 directly. In this case, you also have R2 configured to receive and include additional paths. So when it receives the info from both R5 and R4, it places both in the BGP table.

When you created the local preference configuration on R5, both R4 and R5 have a BGP best path to 6.6.6.6 via R5.

So R5 tells R2 to reach 6.6.6.6 via itself, and R4 tells R2 to reach 6.6.6.6 via R5. So R2 receives only the path via R5 as a route to 6.6.6.6. It never receives the alternative in order to consider it and place it as an additional path.

Even though R4 has both paths to 6.6.6.6 in its BGP table, its best path (and thus the one it advertises) is still via 5.5.5.5. R4 is not configured to send additional paths. In such a case R2 never receives the additional path in any advertisement, so it is not added.

I hope this has been helpful!

Laz

But still would like to point out here whatever routing information received from EBGP peer (R6) in our case will be send across towards Route reflector via client right? So R4 and R5 are clients with respect to RR (R2) right? So in that sense the 6.6.6.6/32 via R5 (LP has configured) and 6.6.6.6/32 via R4 should supposed to be there in bgp table of R2 right? And still confusing the concept, how LP value will share across the local AS 5 domain based on this topology…But still that should be there in BGP table then it will reflect to other clients which includes R4 also right?

1 Like

Hello Unni

I’ve gone in and labbed this one up again to get a clearer picture of what is going on. Now having all the additional paths configured as in the lab, but without the application of Local Pref, we find the following:

  • There is a single entry in the BGP table in R4 for a destination of 6.6.6.6 as seen below:

    R4#show ip bgp
    
       Network          Next Hop            Metric LocPrf Weight Path
    *>   6.6.6.6/32       192.168.46.6             0             0 6 i
    
  • R5 however has two paths, one via eBGP and one via iBGP. You can see that it is the one via eBGP (the directly connected one) that is considered best:

    R5#show ip bgp
    
    Network          Next Hop            Metric LocPrf Weight Path
    * i  6.6.6.6/32       4.4.4.4                  0    100      0 6 i
    *>                    192.168.56.6             0             0 6 i
    
  • Now from this information, R2, the route reflector, has two paths to 6.6.6.6, the best one via R4 and the additional path via R5.

    R2#show ip bgp
    
       Network          Next Hop            Metric LocPrf Weight Path
    * ia 6.6.6.6/32       5.5.5.5                  0    100      0 6 i
    *>i                   4.4.4.4                  0    100      0 6 i
    

These two are learned from the best path in R4 and the best path in R5. Now if you apply LP as you state in your post, then the result is that the best path in R5 will be via R6 directly, and the best path in R4 will be via R5 as shown:

R4#show ip bgp

 Network          Next Hop            Metric LocPrf Weight Path
*>i  6.6.6.6/32       5.5.5.5                  0    400      0 6 i
*                     192.168.46.6             0             0 6 i

and

R5#show ip bgp

 Network          Next Hop            Metric LocPrf Weight Path
*>   6.6.6.6/32       192.168.56.6             0             0 6 i

Remember that both R4 and R5 share only the best path with the route reflector. R4 advertises that the best path is via R5, and R5 advertises that it is the best path. So there is only one path that is being advertised to 6.6.6.6 by both routers. Therefore, R2 will only receive that one single path, and it will never learn of the path via R4–>R6, since that is never advertised:

R2#show ip bgp

 Network          Next Hop            Metric LocPrf Weight Path
*>i  6.6.6.6/32       5.5.5.5                  0    400      0 6 i

Notice in the BGP table that the local pref has a value of 400. This is the value that I configured to differentiate the path via R5 rather than R4. R5 is sending this value along with its iBGP updates to the route reflector. But remember, because R4 and R5 are not configured to share additional paths, it is only their best path (the one configured with the higher LP) that is being advertised. In this topology, only R2 is configured to share additional paths, if it itself is informed of these paths. In this case, it is not, so it has no additional path to include in its table.

I hope this has been helpful!

Laz

Hi,

Are there any lessons about address-family usage?, I’m not confident with this topic.

Thanks

Hello Giovanni

Address families are used in various aspects of Cisco device configuration. There is no one lesson that describes them, as they are applied in a wide range of areas. However, we may include a lesson in the near future that addresses this topic (pun intended :stuck_out_tongue:).

In the meantime, take a look at this post that may answer most of your questions.


If you require further clarification, please feel free to ask!

I hope this has been helpful!

Laz

Hi team!
I wanna ask something :
So when the R2-RR advertise two path to R3. Seem R3 automatic change the next hop to 5.5.5.5
This thing is make me confusing, so could you explain why R3 is automatic change the next hop to R5 while any attribute of R4 and R5 is the same but R4 has route-id lower than R5 ?

Hello Kien

This is an excellent question. If we simply look at the BGP attributes and path selection criteria, and go through them one at a time, you will see that R3 chooses 5.5.5.5 as the next hop based on the “Shortest IGP path to BGP next hop” attribute. According to the following lesson, this is attribute number 8.


This comes before router ID as an attribute, so you can see here that R3 chooses the next hop BGP peer which is closest based on the metric of the IGP, which in this case is OSPF. R5 is closer than R4 as per the OSPF metric, and this is why it is chosen.

I hope this has been helpful!

Laz

Having the configs at the end of the lesson would definitely help.

For MED oscillation, I found this article easier to read than the RFC (it’s based on the RFC, but in a more digestible form): https://rule11.tech/bgp-persistent-oscillation/

For “group-best” it’s similar to “bgp deterministic-med” but for add paths :slight_smile:

Instead of “bgp addtionial-path install” which puts the secondary path as a backup, you could’ve used “maximum-path ibgp 2” which would make both routes active/active. It’s worth clarifying this in the lesson IMO.

Hello Chris

Rene is working on this to have the initial configs at the beginning of each lesson, and the final configs at the end. Many of the newer lessons already have this, but some of the older ones need to be updated.

Also, thanks for sharing the link, it will be useful to some readers.

Thanks for your feedback, it is always invaluable to maintain the quality of the content.

Laz

Hi Guys,

Just to quote:

"For the additional path selection, there are three options:

Best N: this is the best path and the second best path(s). The second best path(s) is chosen by eliminating the (next) best path and then selecting the next best path."

So is this supposed to mean it picks the 3rd Best Path?

Hello Joseph

The Best N option actually has two sub-options: Best 2 or Best 3. Cisco documentation puts it this way:

best 2 or best 3 (best 2 means the bestpath and 2nd best path; the 2nd best path is the one computed by eliminating best-path from the best-computation algorithm. Similarly, best 3 means the bestpath, 2nd best path, and 3rd best path; the 3rd best path is the one computed by eliminating bestpath and 2nd best path from the best-computation algorithm.)

In other words, the first best path is identified and stored. Let’s call it Path A. The second best path is determined by first removing Path A from the calculation, and reevaluating the best path.
The result is the second-best path, which we will call Path B. If best 3 is is bein used, then this process is repeated by first removing Path A and Path B from the process, and calculating the best path from whatever remains, to get the third best path.

So to answer your original question, the best N policy where N=2 will determine the two best paths while if N=3, it will determine the three best paths.

I hope this has been helpful!

Laz

1 Like