BGP faults come in two kinds: the session will not come up, or it is up and a route is missing. They have different causes and different commands. Decide which kind you have, then follow the order.
Advanced · 15 min read
You'll learn to read the BGP neighbour state to find why a session fails, and trace a missing route through advertise, receive, filter, select and install.
Two questions in order
First ask: is the session Established? If not, no route will move, so work on the session. If it is, ask: where does the route stop? The same order works on any BGP network.
Troubleshoot a missing route in five questions
On small screens, swipe sideways or focus the diagram and use the arrow keys.
Work from the session towards the forwarding table. Stop at the first no, fix it and ask the question again.
Read the neighbour state
BGP neighbour states and what a stuck state points to
On small screens, swipe sideways or focus the diagram and use the arrow keys.
Active does not mean working. It means the router is still trying, and failing, to open the TCP connection.
Illustrative Cisco IOS XE output written for this lesson, not a router capture
R1#show ip bgp summary | begin Neighbor
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
192.0.2.1 4 64501 0 0 1 0 0 00:05:02 Active
10.255.0.2 4 64500 44 44 5 0 0 00:38:10 2
The iBGP neighbour is fine and has sent two prefixes. The ISP A neighbour shows Active with zero messages in either direction, so the TCP connection is not opening.
For a session that is Idle or Active, check in this order:
Reachability. Can R1 ping the neighbour address, from the right source? For loopback sessions use ping 10.255.0.2 source Loopback0.
The neighbour statement. Does the address match what the other side expects, and is the remote AS correct on both sides? A wrong AS gives a NOTIFICATION message and is visible in the log.
update-source and ebgp-multihop. A loopback session needs update-source on both ends, and an eBGP loopback session needs multihop.
TCP port 179. An ACL or firewall in the path may block it. A one-sided filter makes the session open from one direction only.
Authentication and timers. A BADAUTH log message means a password mismatch.
show ip bgp neighbors 192.0.2.1
show logging | include BGP
ping 192.0.2.1 source GigabitEthernet0/0
The three commands that solve most session faults.
The session is up and a route is missing
Follow the route through its life. At each point ask the router what it holds.
Follow the route hop by hop
On small screens, swipe sideways or focus the diagram and use the arrow keys.
Advertised, received, accepted, best, installed. The first no is the fault.
Is it advertised? On the sender: show ip bgp neighbors X advertised-routes.
Is it received? On the receiver: show ip bgp neighbors X routes for accepted routes, and received-routes if soft-reconfiguration is on.
Is it valid? In show ip bgp, a missing * means the next hop is unreachable.
Did it win? A > marks the best path. If another path won, ask which step decided it.
Was it installed?show ip bgp rib-failure lists best paths that did not enter the routing table.
Illustrative Cisco IOS XE output written for this lesson, not a router capture
R1#show ip bgp rib-failure
Network Next Hop RIB-failure RIB-NH Matches
203.0.113.0/24 192.0.2.1 Higher admin distance n/a
BGP chose this path but the routing table keeps a route from another source with a lower administrative distance. eBGP is 20 and iBGP is 200, so an OSPF route at 110 beats an iBGP path.
A neighbour shows Active with zero messages. What does that tell you?
Predict · scenario 2
show ip bgp has a route with * but no >. Which best explains it?
Predict · scenario 3
Which command shows BGP best paths that failed to install in the routing table?
FAQ
What does Active mean?
Active does not mean working. It means the router is actively trying to open a TCP connection to the neighbour and has not succeeded. Look for reachability, the neighbour address, ACLs or a missing remote configuration.
What does Idle mean?
The router is not trying. Common causes are an administratively shut neighbour, no route to the neighbour address, or waiting after a failure.
A route is in the BGP table but not in the routing table. Why?
Another source has a lower administrative distance, for example an IGP route, or the BGP next hop is unreachable. show ip bgp rib-failure lists such routes.