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:
- Cloud Monitoring metrics: BGP session count, route counts, peer status.
- Cloud Logging: BGP events (session established, session torn down, route changes).
gcloudCLI: 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 |
|---|---|
UP | Session established, routes đang được trao đổi |
DOWN | Session không established |
IDLE | Chờ initiating connection |
Câu lệnh kiểm tra:
gcloud compute routers get-status my-router \
--region=us-central1 \
--format='json(result.bgpPeerStatus)'Output quan trọng:
status: UP hoặc DOWNnumLearnedRoutes: Số routes học được từ peeruptime/uptimeSeconds: Thời gian session đã UP (nhỏ → session vừa reset)linkedVpnTunnelhoặclinkedInterconnectAttachment: Resource kết nối với session này
Learned Routes và Advertised Routes
# 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:
| Metric | Threshold alert | Ý nghĩa khi vượt |
|---|---|---|
router.googleapis.com/bgp/sessions_count | < expected count | BGP 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 | = 0 | Cloud Router không advertise |
Alert pattern cơ bản:
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: 60sTroubleshooting Common Failures
BGP Session Stuck in IDLE/DOWN
Nguyên nhân phổ biến:
- IKE negotiation chưa hoàn thành (với HA VPN) → tunnel chưa UP → BGP không thể start.
- ASN mismatch: Cloud Router cấu hình ASN peer sai.
- BGP peer IP mismatch: link-local address không khớp giữa hai sides.
- Firewall on-premises block BGP traffic (TCP 179).
Debug steps:
# 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, authenticationRoutes Không Xuất Hiện trong VPC
Nguyên nhân phổ biến:
- BGP session UP nhưng peer không quảng bá prefix.
- BGP route policy filter prefix.
- On-premises router không quảng bá route (network statement thiếu).
- Prefix bị filtered do route policy on-prem.
Debug steps:
# 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:
- BFD thresholds quá aggressive trên high-latency link.
- Physical layer instability (với Interconnect: optical degradation).
- CPU overload trên on-premises router → BGP KEEPALIVE bị delay.
- MTU mismatch trên BGP path → BGP OPEN packets bị drop.
Debug steps:
# 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-interconnectWrong 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:
# 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:
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-gcpConnectivity Tests không measure actual latency nhưng verify routing config đúng.