The BGP Table · Lesson 01 of 01
Reading the BGP table
The BGP table is not the routing table. Learning to read its codes is half of BGP troubleshooting.
Written lesson
Three tables, one output
Conceptually BGP keeps three: the Adj-RIB-In (everything a neighbour sent, before your inbound policy), the Loc-RIB (what survived policy and best-path — what show bgp displays), and the Adj-RIB-Out (what you send each neighbour after outbound policy). IOS does not store the full Adj-RIB-In unless you enable soft-reconfiguration inbound; that is why a route you expected to see may simply have been filtered before it was stored.
show bgp ipv4 unicast
show bgp ipv4 unicast 192.0.2.0/24
show bgp ipv4 unicast neighbors 10.12.0.2 received-routesWritten lesson
The codes that matter
In show bgp, the leading characters carry the meaning. * means the path is valid; > marks the one chosen as best and installed into the RIB. i in the first column means the route was learned by iBGP. A path with no > was valid but lost best-path. r means RIB-failure (BGP chose it but the RIB rejected it, often because a better-AD route already owns the prefix). s means suppressed by aggregation. Reading these before anything else tells you whether the problem is selection, installation or filtering.
received-routes needs soft-reconfig
received-routes shows the Adj-RIB-In and only works if neighbor x soft-reconfiguration inbound is configured or route-refresh is negotiated. routes (what you accepted) always works.