Troubleshooting BGP Neighbor Adjacency
Find the first failing layer: interface, peer reachability, TCP, transport source or OPEN validation. Change one cause and verify the result.
Interface issues
Start with the directly connected eBGP baseline. Each later section is an independent lab; do not leave old neighbors or faults in place.
Complete baseline configurations
R1
hostname R1
ip cef
interface Loopback0
ip address 10.255.0.1 255.255.255.255
exit
interface GigabitEthernet1
ip address 192.0.2.1 255.255.255.252
no shutdown
exit
router bgp 65010
bgp router-id 10.255.0.1
bgp log-neighbor-changes
timers bgp 30 90
no bgp default ipv4-unicast
neighbor 192.0.2.2 remote-as 65020
address-family ipv4 unicast
no auto-summary
neighbor 192.0.2.2 activate
exit-address-family
endR2
hostname R2
ip cef
interface Loopback0
ip address 10.255.0.2 255.255.255.255
exit
interface GigabitEthernet1
ip address 192.0.2.2 255.255.255.252
no shutdown
exit
router bgp 65020
bgp router-id 10.255.0.2
bgp log-neighbor-changes
timers bgp 30 90
no bgp default ipv4-unicast
neighbor 192.0.2.1 remote-as 65010
address-family ipv4 unicast
no auto-summary
neighbor 192.0.2.1 activate
exit-address-family
endR1# show ip bgp summary
BGP router identifier 10.255.0.1, local AS number 65010
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
192.0.2.2 4 65020 0 0 1 0 0 never ActiveR1# ping 192.0.2.2 source 192.0.2.1
Sending 5, 100-byte ICMP Echos to 192.0.2.2:
.....
Success rate is 0 percent (0/5)
R2# show ip interface brief
Interface IP-Address OK? Method Status Protocol
GigabitEthernet1 192.0.2.2 YES manual administratively down down
Loopback0 10.255.0.2 YES manual up upHere the remote interface is administratively disabled. On R2:
interface GigabitEthernet1
no shutdownR2# show ip interface brief
Interface IP-Address OK? Method Status Protocol
GigabitEthernet1 192.0.2.2 YES manual up up
Loopback0 10.255.0.2 YES manual up upR1# show ip bgp summary
BGP router identifier 10.255.0.1, local AS number 65010
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
192.0.2.2 4 65020 12 12 1 0 0 00:02:00 0If interfaces are up but reachability still fails, check the subnet masks, VLAN/ARP path and the actual neighbor address before changing BGP timers.
eBGP loopback requirements
Keep the same physical network but replace the interface neighbors with reciprocal Loopback0 neighbors in separate ASes. Initially omit the routes, source setting and multihop setting. The three requirements are independent.
R1# show ip route 10.255.0.2
% Network not in table1. Supply bidirectional reachability
On R1 and R2 respectively:
ip route 10.255.0.2 255.255.255.255 192.0.2.2ip route 10.255.0.1 255.255.255.255 192.0.2.1R1# ping 10.255.0.2 source Loopback0
Packet sent with a source address of 10.255.0.1
!!!!!
Success rate is 100 percent (5/5)2. Permit the non-direct eBGP endpoint
On R1 configure the first neighbor; on R2 configure the second. Multihop also bypasses the ordinary directly connected eBGP check on this command family. For these adjacent devices it is not evidence of a physical transit router.
router bgp 65010
neighbor 10.255.0.2 ebgp-multihop 2router bgp 65020
neighbor 10.255.0.1 ebgp-multihop 23. Match the configured source
Without update-source, an outgoing connection can use the physical interface address, which does not match the peer’s configured loopback neighbor. Apply the source on both routers:
router bgp 65010
neighbor 10.255.0.2 update-source Loopback0router bgp 65020
neighbor 10.255.0.1 update-source Loopback0R1# show ip bgp summary
BGP router identifier 10.255.0.1, local AS number 65010
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
10.255.0.2 4 65020 12 12 1 0 0 00:02:00 0R1# show ip bgp neighbors 10.255.0.2 | include host|port
Local host: 10.255.0.1, Local port: 52001
Foreign host: 10.255.0.2, Foreign port: 179Complete working eBGP loopback configurations
R1
hostname R1
ip cef
interface Loopback0
ip address 10.255.0.1 255.255.255.255
exit
interface GigabitEthernet1
ip address 192.0.2.1 255.255.255.252
no shutdown
exit
ip route 10.255.0.2 255.255.255.255 192.0.2.2
router bgp 65010
bgp router-id 10.255.0.1
bgp log-neighbor-changes
timers bgp 30 90
no bgp default ipv4-unicast
neighbor 10.255.0.2 remote-as 65020
neighbor 10.255.0.2 update-source Loopback0
neighbor 10.255.0.2 ebgp-multihop 2
address-family ipv4 unicast
no auto-summary
neighbor 10.255.0.2 activate
exit-address-family
endR2
hostname R2
ip cef
interface Loopback0
ip address 10.255.0.2 255.255.255.255
exit
interface GigabitEthernet1
ip address 192.0.2.2 255.255.255.252
no shutdown
exit
ip route 10.255.0.1 255.255.255.255 192.0.2.1
router bgp 65020
bgp router-id 10.255.0.2
bgp log-neighbor-changes
timers bgp 30 90
no bgp default ipv4-unicast
neighbor 10.255.0.1 remote-as 65010
neighbor 10.255.0.1 update-source Loopback0
neighbor 10.255.0.1 ebgp-multihop 2
address-family ipv4 unicast
no auto-summary
neighbor 10.255.0.1 activate
exit-address-family
endTCP port filtering
Use a fresh interface-based iBGP pair in AS 65010 for this independent fault.
Complete baseline configurations
R1
hostname R1
ip cef
interface Loopback0
ip address 10.255.0.1 255.255.255.255
exit
interface GigabitEthernet1
ip address 192.0.2.1 255.255.255.252
no shutdown
exit
router bgp 65010
bgp router-id 10.255.0.1
bgp log-neighbor-changes
timers bgp 30 90
no bgp default ipv4-unicast
neighbor 192.0.2.2 remote-as 65010
address-family ipv4 unicast
no auto-summary
neighbor 192.0.2.2 activate
exit-address-family
endR2
hostname R2
ip cef
interface Loopback0
ip address 10.255.0.2 255.255.255.255
exit
interface GigabitEthernet1
ip address 192.0.2.2 255.255.255.252
no shutdown
exit
router bgp 65010
bgp router-id 10.255.0.2
bgp log-neighbor-changes
timers bgp 30 90
no bgp default ipv4-unicast
neighbor 192.0.2.1 remote-as 65010
address-family ipv4 unicast
no auto-summary
neighbor 192.0.2.1 activate
exit-address-family
endR1# ping 192.0.2.2 source 192.0.2.1
!!!!!
Success rate is 100 percent (5/5)
R2# show ip interface GigabitEthernet1 | include access list
Inbound access list is PEER-FILTER
Outgoing access list is not set
R2# show ip access-lists PEER-FILTER
Extended IP access list PEER-FILTER
10 deny tcp any eq bgp any (8 matches)
20 deny tcp any any eq bgp (12 matches)
30 permit ip any any (20 matches)The ping tests ICMP, not TCP 179. The applied ACL blocks both possible BGP connection directions. Insert precise permits before the existing denies on R2; retain unrelated policy.
ip access-list extended PEER-FILTER
5 permit tcp host 192.0.2.1 host 192.0.2.2 eq 179
6 permit tcp host 192.0.2.1 eq 179 host 192.0.2.2
exitR1# show ip bgp summary
BGP router identifier 10.255.0.1, local AS number 65010
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
192.0.2.2 4 65010 12 12 1 0 0 00:02:00 0R2# show ip access-lists PEER-FILTER
Extended IP access list PEER-FILTER
5 permit tcp host 192.0.2.1 host 192.0.2.2 eq bgp (9 matches)
6 permit tcp host 192.0.2.1 eq bgp host 192.0.2.2
10 deny tcp any eq bgp any (8 matches)
20 deny tcp any any eq bgp (12 matches)
30 permit ip any any (20 matches)This example assumes the ACL is already bound inbound on R2’s Gi1, as shown. An intervening firewall or control-plane policy can cause the same symptoms even if the interface ACL is clear.
iBGP update source
In another fresh AS 65010 lab, configure each router’s neighbor as the other Loopback0 address. First supply OSPF reachability for the physical link and both loopbacks; then source BGP from those same loopbacks.
R1
router ospf 1
network 10.255.0.1 0.0.0.0 area 0
network 192.0.2.0 0.0.0.3 area 0
passive-interface Loopback0R2
router ospf 1
network 10.255.0.2 0.0.0.0 area 0
network 192.0.2.0 0.0.0.3 area 0
passive-interface Loopback0R1# show ip route 10.255.0.2
Routing entry for 10.255.0.2/32
Known via "ospf 1", distance 110, metric 2, type intra area
* 192.0.2.2, via GigabitEthernet1R1# show ip bgp summary
BGP router identifier 10.255.0.1, local AS number 65010
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
10.255.0.2 4 65010 0 0 1 0 0 never ActiveA reachable destination does not guarantee the source matches the remote neighbor definition. Apply update-source on both sides:
router bgp 65010
neighbor 10.255.0.2 update-source Loopback0router bgp 65010
neighbor 10.255.0.1 update-source Loopback0R1# show ip bgp summary
BGP router identifier 10.255.0.1, local AS number 65010
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
10.255.0.2 4 65010 12 12 1 0 0 00:02:00 0iBGP does not need ebgp-multihop. The OSPF metric shown assumes ordinary lab interface costs.
Complete working iBGP loopback configurations
R1
hostname R1
ip cef
interface Loopback0
ip address 10.255.0.1 255.255.255.255
exit
interface GigabitEthernet1
ip address 192.0.2.1 255.255.255.252
no shutdown
exit
router ospf 1
router-id 10.255.0.1
network 10.255.0.1 0.0.0.0 area 0
network 192.0.2.0 0.0.0.3 area 0
passive-interface Loopback0
exit
router bgp 65010
bgp router-id 10.255.0.1
bgp log-neighbor-changes
timers bgp 30 90
no bgp default ipv4-unicast
neighbor 10.255.0.2 remote-as 65010
neighbor 10.255.0.2 update-source Loopback0
address-family ipv4 unicast
no auto-summary
neighbor 10.255.0.2 activate
exit-address-family
endR2
hostname R2
ip cef
interface Loopback0
ip address 10.255.0.2 255.255.255.255
exit
interface GigabitEthernet1
ip address 192.0.2.2 255.255.255.252
no shutdown
exit
router ospf 1
router-id 10.255.0.2
network 10.255.0.2 0.0.0.0 area 0
network 192.0.2.0 0.0.0.3 area 0
passive-interface Loopback0
exit
router bgp 65010
bgp router-id 10.255.0.2
bgp log-neighbor-changes
timers bgp 30 90
no bgp default ipv4-unicast
neighbor 10.255.0.1 remote-as 65010
neighbor 10.255.0.1 update-source Loopback0
address-family ipv4 unicast
no auto-summary
neighbor 10.255.0.1 activate
exit-address-family
endFinal checks
| Evidence | Next check |
|---|---|
| Idle / Connect / Active | Interface, route to exact peer, expected source, TCP 179, transport mode. |
| OPEN rejection / reset | Expected remote AS, negotiated parameters and the last NOTIFICATION. |
| Password mismatch | Both peers must use the same configured TCP authentication; failure may occur before OPEN. |
| Established with zero prefixes | Move to route advertisement troubleshooting, not another TCP fix. |
| Repeated established-session resets | Inspect hold expiry, link loss, packet loss and MTU/transport evidence. |
Use the last reset reason and packet evidence to narrow the cause. A state name or failed ping alone cannot identify every fault.
Key Takeaways
- Start with interfaces and reachability to the exact neighbor address before changing protocol settings.
- A successful ICMP ping does not prove TCP port 179 is permitted.
- Loopback eBGP needs reachable endpoints, matching source addresses and suitable connected-check/TTL behavior.
- Loopback iBGP needs underlying reachability and matching update-source, but not ebgp-multihop.
- Use the last reset reason and OPEN error evidence to separate transport faults from protocol validation faults.
Protocol and command references
BGP protocol and finite state machine · Neighbor command reference · Basic BGP configuration · Router-symbol attribution.