How to fix BGP peer down in Kubernetes

KubernetesADVANCEDHIGHUpdated Dec 6, 2025ยท 188 views

BGP peer down indicates that Calico node cannot establish BGP sessions with peers. Common causes include firewall blocking port 179, incorrect peer configuration, or network connectivity issues.

Quick fix

Fixes BGP peer down

kubectl get nodes
kubectl logs -n calico-system ds/calico-node
  1. Check Calico node status and logs
  2. Review BGP peer configuration
  3. Test network connectivity on BGP port
  4. Verify firewall rules allow BGP traffic
kubernetes โ€” error
kubectl get nodes
kubectl logs -n calico-system ds/calico-node
BGP peer down

What this error means

Calico uses BGP (Border Gateway Protocol) to route pod traffic between nodes. When a BGP peer is down, the Calico node cannot establish a BGP session with another node or route reflector, preventing proper network connectivity. This results in pods on different nodes being unable to communicate.

Typical symptoms

  • calico/node pods show "BIRD is not ready: BGP not established"
  • Pod-to-pod communication between nodes fails
  • Calico node status shows as NotReady due to BIRD BGP issues
  • Network topology shows broken BGP connections
  • calicoctl reports BGP session as passive or down
  • Firewall blocks connection to BGP port 179
  • Pod CIDR routes not being propagated to other nodes
  • Node isolation or network partitioning detected

Common causes

  1. Firewall rules blocking TCP port 179 (BGP) between nodes
  2. Incorrect BGP peer IP addresses or AS numbers configured
  3. BGP peer is unreachable or offline
  4. Network policies blocking BGP traffic
  5. Node clock skew causing BGP keepalive timeouts
  6. BGP peer configuration mismatch between nodes
  7. Route reflector not properly configured
  8. MTU size mismatch between BGP peers

How to fix "BGP peer down"

1Check Calico node status and logs

Verify node readiness and check BIRD BGP status:

bash
kubectl get nodes
kubectl logs -n calico-system ds/calico-node

Look for "BIRD" related errors indicating BGP connectivity issues.

2Review BGP peer configuration

List configured BGP peers to verify correct configuration:

bash
calicoctl get bgppeers -o yaml
calicoctl get bgpconfig -o yaml

Verify peer IPs, AS numbers, and node selectors are correct.

3Test network connectivity on BGP port

From the Calico node, test reachability to peer on port 179:

bash
kubectl exec -it -n calico-system ds/calico-node -- \
  nc -zv <peer-ip> 179

If connection fails, check firewall rules.

4Verify firewall rules allow BGP traffic

Ensure network policies and host firewalls allow BGP:

bash
# Check if port 179 is open
netstat -tlnp | grep 179

# Verify firewall rules (varies by OS)
iptables -L -n | grep 179
sudo ufw allow 179
5Check node clock synchronization

BGP keepalive requires synchronized clocks:

bash
date
ntpstat
chronyc tracking

If clocks are out of sync, synchronize using NTP or chrony.

6Verify BGP peer IP reachability

Ensure the BGP peer IP is reachable from the node:

bash
ping -c 3 <peer-ip>
traceroute <peer-ip>

If unreachable, verify network routes and connectivity.

7Check BGP router ID and AS number

Verify BGP configuration is not conflicting:

bash
calicoctl get node <node-name> -o yaml | grep -A 5 asNumber

Ensure each node has unique router ID and correct AS numbers.

8Restart Calico node pod if needed

If configuration is correct but BGP still down, restart node:

bash
kubectl rollout restart daemonset/calico-node -n calico-system

Monitor logs during restart to confirm BGP comes up.

Advanced notes

For production, use route reflectors to reduce BGP mesh overhead for large clusters. Monitor BGP session status continuously using Prometheus. Verify MTU consistency across network path - MTU mismatches can cause BGP connection failures. For multi-datacenter deployments, ensure BGP speakers on each side are properly configured. Consider using calicoctl node status command for quick diagnostics.

Frequently asked questions

What does "BGP peer down" mean?
Calico uses BGP (Border Gateway Protocol) to route pod traffic between nodes. When a BGP peer is down, the Calico node cannot establish a BGP session with another node or route reflector, preventing proper network connectivity. This results in pods on different nodes being unable to communicate.
How do I fix "BGP peer down"?
BGP peer down indicates that Calico node cannot establish BGP sessions with peers. Common causes include firewall blocking port 179, incorrect peer configuration, or network connectivity issues.
What causes "BGP peer down"?
Firewall rules blocking TCP port 179 (BGP) between nodes Incorrect BGP peer IP addresses or AS numbers configured BGP peer is unreachable or offline
Is the "BGP peer down" error serious?
Yes. This is a high-severity error that usually blocks work until it is fixed, but the steps above resolve it.

Official resources & further reading