I am running a BGP lab in GNS3 and am noticing something unexpected. When I issue the “show ip bgp” command on the IOU1 router in AS500, I am only seeing 2 paths for the 188.8.131.52/24 network located in AS 1000. I am seeing the expected paths (600 800 1000 i) and (700 900 1000 i) respectively. However, I was also expecting to see paths (700, 1100, 800, 1000 i) and maybe even (600, 800, 1100, 700, 900, 1000 i) as well. However, i am not seeing any paths that run through AS 1100 eventhough technically they are valid paths.
Based on the RIB, we can see that there are two paths to reach 184.108.40.206/24.
The 1st path is thru AS 700 and the 2nd path is thru AS 600.
It doesn’t make sense to see AS 1100 in the AS_PATH because this will increase the AS_PATH Length - smaller length is better!!!
Both paths have the same AS_PATH Length (3 in total), also both routes are eBGP, meaning that the best path algorithm is using one of the tie breakers to select the path thru AS 700 as the best one.
Thank you for the reply! I was under the impression that BGP stored all available paths in its BGP table but only selected the best one based on the best path algorithm, but I very well could be wrong. Does this mean that BGP will only store the best paths it receives from its neighbor? I think this makes sense if all BGP routers only advertise their best paths to their neighbor.
Hi Chris, BGP only advertises the best path to peers.
From ASN 800, router IOU3 needs to decide which path to reach the prefix 220.127.116.11/24 is the best one. So based on the AS_PATH attribute, we have one path thru AS 1100 and the second path directly to AS 1000, guess what?, BGP will select the path with the lowest AS_PATH length - so the path directly to AS 1000 get selected as the best and advertised to other peers.
If you check the BGP table on router IOU3, you might see the path thru AS 1100 but this is not the best path and hence it doesn’t get advertised.
If for some reason we lose the link to AS 1000, BGP converges and will start using/advertsing the path thru AS 1100.
I agree with @lugg15. The key to your question is the fact that BGP by default will only advertise the best path to its BGP peers. When a better path is found, it replaces the current path. Advertising a path and replacing it with a new path is called an implicit withdraw.
BUT, a BGP router will contain within its BGP table all of the paths to a particular prefix that it has received from neighbors. So typically, an eBGP router will have a maximum number of paths to a particular destination that is equal to the number of eBGP neighbors it has.
This ensures that BGP tables do not get overly large. It would not be beneficial to have a BGP table with all possible paths to a particular destination, especially on a network as large as the Internet!
If you want eBGP to advertise more than just the best path, you can use the Multipath feature as shown in the lesson below: