Next-Hop Behavior and Recursion · Lesson 01 of 01
Why the next hop decides everything
A BGP route with an unreachable next hop is invalid, no matter how good its attributes are.
Written lesson
Next-hop reachability is a precondition
Before best-path even runs, BGP checks that the NEXT_HOP is reachable in the routing table. If it is not, the path is marked inaccessible and cannot be best. This is why the next hop is the first thing to check when a prefix is in the BGP table but not the RIB. The classic failure is iBGP: an eBGP-learned route carries the eBGP peer's address as next hop, and when it is reflected to an iBGP peer that address may not be reachable.
Written lesson
next-hop-self
On multi-access segments an eBGP speaker can advertise a third router's address as the next hop, and by default iBGP does not change the next hop at all. The fix on the iBGP-facing router is neighbor x.x.x.x next-hop-self, which rewrites the next hop to its own address so its iBGP peers always have a reachable one. The alternative is to carry the external subnet in the IGP, which is usually the wrong answer.
Configuration
next-hop-self on the border router
router bgp 65001
neighbor 10.0.0.3 remote-as 65001
neighbor 10.0.0.3 update-source Loopback0
neighbor 10.0.0.3 next-hop-selfThe recursion trap
BGP next-hop resolution is recursive: the next hop resolves to an IGP route, which resolves to a connected interface. Break any link in that chain — a missing IGP route to the next hop — and the BGP route silently drops out of the RIB while still sitting in the BGP table.