Skip to content

Monitoring BGP Sessions & Troubleshooting Cloud Router

Tại sao quan trọng trong production

BGP session failures trong Cloud Router thường là "silent" — packet forwarding không dừng ngay vì Andromeda còn route cũ, nhưng routes mới không được học. Kết quả: traffic đi đến destinations không còn valid mà không có error log rõ ràng. Observability đúng đắn là điều kiện để phát hiện và debug vấn đề này trước khi ảnh hưởng đến production.


Internal Model — Những Gì Cần Observe

Cloud Router expose state qua ba kênh chính:

  1. Cloud Monitoring metrics: BGP session count, route counts, peer status.
  2. Cloud Logging: BGP events (session established, session torn down, route changes).
  3. gcloud CLI: Real-time query về BGP session state và learned/advertised routes.

BGP Session Status

Một BGP session có thể ở các trạng thái:

Trạng tháiÝ nghĩa
UPSession established, routes đang được trao đổi
DOWNSession không established
IDLEChờ initiating connection

Câu lệnh kiểm tra:

bash
gcloud compute routers get-status my-router \
  --region=us-central1 \
  --format='json(result.bgpPeerStatus)'

Output quan trọng:

  • status: UP hoặc DOWN
  • numLearnedRoutes: Số routes học được từ peer
  • uptime / uptimeSeconds: Thời gian session đã UP (nhỏ → session vừa reset)
  • linkedVpnTunnel hoặc linkedInterconnectAttachment: Resource kết nối với session này

Learned Routes và Advertised Routes

bash
# Xem routes Cloud Router đang học từ peers
gcloud compute routers get-status my-router \
  --region=us-central1 \
  --format='json(result.bestRoutesForRouter)'

# Xem routes Cloud Router đang advertise ra peers
gcloud beta compute routers get-status my-router \
  --region=us-central1 \
  --format='json(result.bgpPeerStatus[].advertisedRoutes)'

Cloud Monitoring Metrics

Metrics quan trọng cần alert:

MetricThreshold alertÝ nghĩa khi vượt
router.googleapis.com/bgp/sessions_count< expected countBGP session đã drop
router.googleapis.com/bgp/received_routes_count= 0 (khi session UP)Peer không quảng bá routes
router.googleapis.com/bgp/sent_routes_count= 0Cloud Router không advertise

Alert pattern cơ bản:

yaml
alertPolicy:
  displayName: "BGP Session Down"
  conditions:
  - displayName: "BGP sessions below expected"
    conditionThreshold:
      filter: 'resource.type="gce_router" AND metric.type="router.googleapis.com/bgp/sessions_count"'
      comparison: COMPARISON_LT
      thresholdValue: 2
      duration: 60s

Troubleshooting Common Failures

BGP Session Stuck in IDLE/DOWN

Nguyên nhân phổ biến:

  1. IKE negotiation chưa hoàn thành (với HA VPN) → tunnel chưa UP → BGP không thể start.
  2. ASN mismatch: Cloud Router cấu hình ASN peer sai.
  3. BGP peer IP mismatch: link-local address không khớp giữa hai sides.
  4. Firewall on-premises block BGP traffic (TCP 179).

Debug steps:

bash
# 1. Kiểm tra tunnel status (nếu là VPN)
gcloud compute vpn-tunnels describe my-tunnel \
  --region=us-central1 \
  --format='value(status,detailedStatus)'

# 2. Kiểm tra BGP config của Cloud Router
gcloud compute routers describe my-router \
  --region=us-central1 \
  --format='json(bgpPeers)'

# 3. So sánh với config on-premises router
# Verify: ASN, peer IP, authentication

Routes Không Xuất Hiện trong VPC

Nguyên nhân phổ biến:

  1. BGP session UP nhưng peer không quảng bá prefix.
  2. BGP route policy filter prefix.
  3. On-premises router không quảng bá route (network statement thiếu).
  4. Prefix bị filtered do route policy on-prem.

Debug steps:

bash
# Kiểm tra numLearnedRoutes
gcloud compute routers get-status my-router \
  --region=us-central1 \
  --format='json(result.bgpPeerStatus[].numLearnedRoutes)'

# Nếu numLearnedRoutes = 0:
# → Check on-premises router: show ip bgp neighbor <peer-ip> advertised-routes

# Kiểm tra BGP route policies nếu có
gcloud compute routers describe my-router \
  --region=us-central1 \
  --format='json(bgpPeers[].importPolicies)'

BGP Session Flapping

Nguyên nhân phổ biến:

  1. BFD thresholds quá aggressive trên high-latency link.
  2. Physical layer instability (với Interconnect: optical degradation).
  3. CPU overload trên on-premises router → BGP KEEPALIVE bị delay.
  4. MTU mismatch trên BGP path → BGP OPEN packets bị drop.

Debug steps:

bash
# Kiểm tra uptime của BGP session (short uptime = frequent flap)
gcloud compute routers get-status my-router \
  --region=us-central1 \
  --format='json(result.bgpPeerStatus[].uptimeSeconds)'

# Kiểm tra Cloud Logging cho BGP events
gcloud logging read \
  'resource.type="gce_router" AND jsonPayload.event_type:"bgp"' \
  --limit=50 \
  --format='table(timestamp,jsonPayload.message)'

# Nếu là Interconnect, kiểm tra optical power
gcloud compute interconnects get-diagnostics my-interconnect

Wrong Routes trong VPC Route Table

Triệu chứng: Traffic đi đến destination sai, hoặc traffic black-holed.

Nguyên nhân: On-premises router quảng bá routes không đúng (ví dụ: quảng bá default route 0.0.0.0/0 vào Cloud Router).

Debug steps:

bash
# Xem tất cả dynamic routes trong VPC
gcloud compute routes list \
  --filter='nextHopVpnTunnel:my-tunnel OR nextHopInterconnectAttachment:my-attachment' \
  --format='table(name,destRange,nextHopVpnTunnel,nextHopInterconnectAttachment,priority)'

# Verify route thực sự dùng cho một destination cụ thể
gcloud compute routers get-status my-router \
  --region=us-central1 \
  --format='json(result.bestRoutesForRouter)'

Connectivity Tests

Network Intelligence Center's Connectivity Tests cho phép simulate packet traversal:

bash
gcloud network-management connectivity-tests create test-onprem-to-gcp \
  --source-ip-address=10.0.1.5 \
  --destination-ip-address=172.16.0.10 \
  --protocol=TCP \
  --destination-port=443

# Xem kết quả
gcloud network-management connectivity-tests get-result test-onprem-to-gcp

Connectivity Tests không measure actual latency nhưng verify routing config đúng.


References