TTR Networks

Intermediate · Debugging BGP: every session state, reproduced · section 7 of 8

The checklist

✓ Lab-tested 18 October 2026 on FRR 10.2.1, Docker Desktop (Linux kernel without TCP-MD5)

Debugging BGP goes faster with a fixed order: read the state, read the last reset reason, then decide whether the problem is below BGP (TCP), in the OPEN exchange, or in policy. Every row in this table is something you've now seen happen in the lab.

What you seeMost likely causeConfirm with
Idle (Admin)neighbor … shutdown left in placeshow running-config
Idle (PfxCt)Peer sent more prefixes than maximum-prefix allowsLog %MAXPFXEXCEED; fix, then clear bgp
Active, No path to specified NeighborNeighbour address not on a connected network (typo, or eBGP to a loopback)show bgp nexthop: Must be Connected
Active, connection established then droppedThe peer isn't configured for your addresstcpdump: handshake, then FIN/RST from the peer
Connect for a long time, SYNs unansweredFirewall or ACL dropping TCP 179, or no route backtcpdump: repeated SYNs, no reply; firewall counters
Idle, repeating; NOTIFICATION 2/2Wrong remote-as on one sideLog: Bad Peer AS, sent by the side with the wrong config
Active to a peer two hops away; ICMP time exceededeBGP TTL 1: missing ebgp-multihoptcpdump -v: ttl 1, time exceeded in-transit
Session up although passwords differTCP-MD5 not supported by the kernelLog: Unable to set TCP MD5 option
Session drops every hold timeKeepalives lost: path down, policer, MTU, CPULog: Hold Timer Expired
(Policy) in the summaryeBGP session with no import or export policyshow bgp neighbors: Inbound updates discarded due to missing policy
Prefix counts lower than expectedYour import policy filtered themreceived-routes vs routes
Route present but not usedNext hop unreachableshow bgp …: inaccessible; show bgp nexthop

Three habits prevent most of these:

  • Turn on bgp log-neighbor-changes on every router. FRR's traditional defaults don't log session changes, and you want the reason recorded before you need it.
  • Know your normal prefix counts for every session. "4 received, 1 sent" is a health check that takes a second to read.
  • Change one thing, then clear and watch. Most of these failures show up within seconds in the summary or the log.

Check your understanding

A session to a new IX peer shows (Policy) in both the PfxRcd and PfxSnt columns. What's happening?

  • The session is established, but this eBGP neighbour has no import or export route-map, so FRR exchanges no routes.
  • The peer's policy is rejecting all your routes.
  • The session is stuck in OpenSent.
  • Max-prefix has been reached.