Dynamic Routes và Cloud Router — BGP trong GCP và Cơ Chế Học Route Tự Động
Cloud Router Là Gì — Và Quan Trọng Hơn, Nó Không Là Gì
Cloud Router là thành phần BGP trong GCP VPC — nhưng nó không phải là router theo nghĩa truyền thống. Tài liệu GCP xác nhận rõ: Cloud Router không thực hiện packet forwarding hay routing. Toàn bộ data plane (việc thực sự forward packets) vẫn do Andromeda agent trên mỗi host thực hiện.
Vậy Cloud Router làm gì? Nó là một BGP control plane daemon:
- Thiết lập BGP sessions với peers (Cloud VPN, Interconnect, on-premises)
- Nhận route advertisements từ BGP peers
- Đưa các routes học được vào VPC route table (dynamic routes)
- Quảng bá subnet ranges và các IP ranges khác của VPC tới BGP peers
Khi Cloud Router học được route 192.168.0.0/16 từ on-premises qua BGP, nó chuyển thông tin này cho GCP control plane, control plane tạo dynamic route trong VPC route table, và Andromeda agents trên tất cả hosts được cập nhật. Chính Andromeda (không phải Cloud Router) forward packets đến on-premises.
Internal Model: BGP Session Lifecycle
Tạo Cloud Router
gcloud compute routers create prod-router \
--network=prod-vpc \
--region=us-west1 \
--asn=65001Cloud Router cần một ASN (Autonomous System Number) — đây là ASN của VPC trong BGP. GCP không cấp ASN này — bạn chọn một ASN private (64512-65534 theo RFC 6996) hoặc public ASN nếu bạn có.
Khi tạo Cloud Router:
- GCP deploy BGP daemon (phần mềm) trong GCP infrastructure (không phải trên VM của bạn)
- Daemon lắng nghe các BGP connections từ peers
- Daemon quảng bá VPC subnet ranges theo cấu hình
BGP Session Mechanics
Khi bạn thêm BGP peer (ví dụ: on-premises router qua Cloud VPN):
gcloud compute routers add-bgp-peer prod-router \
--peer-name=onprem-peer \
--peer-asn=65002 \
--peer-ip-address=169.254.1.2 \
--interface=prod-vpn-interface \
--advertised-route-priority=100 \
--region=us-west1BGP link IPs (169.254.x.x) là link-local addresses — đây là GCP tunnel interface IPs, không phải VPC subnet IPs. Chúng chỉ dùng cho BGP control plane communication, không cho data plane.
Quá trình establish BGP session:
- Cloud Router gửi BGP OPEN message đến peer
- Peer respond với OPEN message của nó (ASN, capabilities)
- Trao đổi KEEPALIVE để maintain session
- Bắt đầu trao đổi UPDATE messages (route advertisements)
- Session UP → Cloud Router bắt đầu nhận routes từ peer
Hold timer mặc định: 90 giây. Nếu không có KEEPALIVE trong 90 giây, BGP session được coi là DOWN và routes học được bị rút khỏi route table.
Khi BGP Peer Fail
Thời gian 0: BGP peer (on-premises router) bị restart
Thời gian +30s: Hold timer expire → BGP session DOWN
Thời gian +30s: Cloud Router withdraw tất cả routes từ peer đó
Thời gian +30s: Dynamic routes từ peer bị xóa khỏi VPC route table
Thời gian +30s: Andromeda agents update: không còn route đến 192.168.0.0/16
Thời gian +31s: Traffic đến 192.168.0.0/16 bị drop (hoặc route fallback)
Sau khi peer recover:
BGP reconnect → routes được re-advertised → route table updateGCP BGP hỗ trợ BFD (Bidirectional Forwarding Detection) để detect peer failure nhanh hơn hold timer. BFD có thể detect failure trong vài milliseconds thay vì 90 giây.
gcloud compute routers update-bgp-peer prod-router \
--peer-name=onprem-peer \
--bfd-session-initialization-mode=ACTIVE \
--bfd-min-receive-interval=300 \
--bfd-min-transmit-interval=300 \
--region=us-west1Dynamic Routing Mode: Regional vs Global
Đây là một trong những quyết định thiết kế quan trọng nhất khi dùng Cloud Router.
Regional Mode (Default)
Cloud Router trong regional mode chỉ chia sẻ dynamic routes trong region nó đặt.
Cloud Router ở us-west1 (regional mode):
Learns: 192.168.1.0/24 từ on-premises
Installs route: chỉ trong us-west1
VMs ở us-west1: CÓ route đến 192.168.1.0/24 ✓
VMs ở europe-west1: KHÔNG có route đến 192.168.1.0/24 ✗
VMs ở asia-northeast1: KHÔNG có route đến 192.168.1.0/24 ✗Global Mode
gcloud compute networks update prod-vpc \
--bgp-routing-mode=globalVới global mode, Cloud Router chia sẻ dynamic routes với tất cả regions trong VPC:
Cloud Router ở us-west1 (global mode):
Learns: 192.168.1.0/24 từ on-premises
Installs route: trong TẤT CẢ regions
VMs ở us-west1: CÓ route ✓
VMs ở europe-west1: CÓ route ✓ ← traffic đi qua us-west1 Cloud VPN
VMs ở asia-northeast1: CÓ route ✓Trade-off:
| Khía cạnh | Regional | Global |
|---|---|---|
| Reach | Chỉ router's region | Toàn VPC |
| Latency (cross-region traffic) | N/A | Traffic phải đi qua Cloud Router region |
| Complexity | Thấp | Cao hơn (traffic path không obvious) |
| Use case | Single-region hoặc multi-router setup | Single entry point cho on-premises |
Khi nào dùng global mode?
- Khi bạn có on-premises kết nối qua một region duy nhất nhưng cần access từ nhiều regions
- Khi muốn đơn giản hóa với một Cloud VPN/Interconnect cho toàn VPC
Khi nào dùng regional mode?
- Khi mỗi region có kết nối riêng với on-premises (multiple Interconnects)
- Khi muốn kiểm soát chặt traffic path (traffic từ europe-west1 không nên đi vòng qua us-west1)
- Khi cần latency predictability
Global Mode: Routing Asymmetry Risk
Với global mode, có thể xảy ra routing asymmetry:
Outbound (GCP → On-premises):
VM ở europe-west1 → 192.168.1.5
Route: đi qua Cloud VPN ở us-west1 (route learned from us-west1 router)
Path: europe-west1 → us-west1 (cross-region) → VPN tunnel → on-premises
Return traffic (On-premises → GCP):
On-premises → 10.1.0.5 (europe-west1 VM)
Path: on-premises → VPN → us-west1 → cross-region → europe-west1
Total: Europe → US → On-premises (outbound)
On-premises → US → Europe (return)
Extra latency: 2× transatlantic hopĐây là lý do nhiều production environments dùng regional mode với multiple Cloud Routers — một router per region với kết nối Interconnect local.
Route Advertisement: VPC Quảng Bá Gì Cho Peers
Theo mặc định, Cloud Router quảng bá:
- Tất cả subnet primary CIDR ranges trong VPC (hoặc trong region với regional mode)
- Không quảng bá secondary ranges
- Không quảng bá routes học được từ VPC Peering
Bạn có thể customize:
# Chỉ quảng bá specific ranges
gcloud compute routers update prod-router \
--advertisement-mode=custom \
--set-advertisement-ranges=10.0.0.0/20,10.1.0.0/16 \
--region=us-west1Khi nào cần custom advertisement?
- GKE secondary ranges: On-premises cần route đến pod IPs → phải advertise secondary ranges
- Aggregate advertisement: Thay vì advertise nhiều /20 subnets, advertise một /16 supernet để giảm BGP update noise
- Selective access: Không muốn on-premises biết về internal staging subnets
Advertise Custom IP Ranges
Bạn có thể advertise bất kỳ IP range nào, không chỉ subnet ranges:
# Advertise custom range (ví dụ: GKE pod range)
gcloud compute routers update-bgp-peer prod-router \
--peer-name=onprem-peer \
--advertisement-mode=custom \
--set-advertisement-ranges=10.0.0.0/20,10.1.0.0/16 \
--region=us-west1Best Path Selection: Cloud Router Chọn Route Tốt Nhất
Khi nhiều BGP peers quảng bá cùng route prefix, Cloud Router phải chọn một:
Tiêu Chí Lựa Chọn (Theo Thứ Tự)
- Highest LOCAL_PREF: Nếu bạn set local preference trên peer advertisement
- Shortest AS_PATH: Route qua ít AS hops hơn được ưu tiên
- Lowest MED (Multi-Exit Discriminator): Nếu multiple paths từ cùng peer
- Route type: eBGP preferred over iBGP
- Advertised route priority: Lower priority number = preferred trong GCP context
# Set priority khi add peer (lower = more preferred)
gcloud compute routers add-bgp-peer prod-router \
--peer-name=primary-peer \
--advertised-route-priority=100 \ # preferred
--region=us-west1
gcloud compute routers add-bgp-peer prod-router \
--peer-name=backup-peer \
--advertised-route-priority=200 \ # backup
--region=us-west1Điểm quan trọng: advertised-route-priority là MED được quảng bá đến peers (ảnh hưởng đến cách on-premises chọn path về GCP). Nó không trực tiếp ảnh hưởng đến cách Cloud Router chọn path từ GCP ra ngoài.
HA VPN: Active-Active với ECMP
Cloud VPN HA (High Availability) tạo 2 tunnels. Với Cloud Router:
Tunnel 1: 169.254.1.2 (peer 1)
Tunnel 2: 169.254.2.2 (peer 2)
Cả 2 tunnels quảng bá cùng routes với cùng priority:
192.168.0.0/16 via Tunnel 1 (priority 100)
192.168.0.0/16 via Tunnel 2 (priority 100)
→ ECMP: Cloud Router install cả 2 routes
→ GCP distribute traffic across 2 tunnels (per-flow ECMP)
→ Nếu Tunnel 1 fail: chỉ còn route via Tunnel 2
→ Failover trong vài seconds (BGP convergence)Đây là design pattern cho HA VPN — hai tunnels, ECMP, tự động failover.
Cloud Router và Cloud Interconnect
Cloud Interconnect (Dedicated hoặc Partner) kết nối on-premises với Google network qua physical fiber, không qua public internet.
Cloud Router với Interconnect hoạt động tương tự VPN nhưng:
- BGP session chạy over Interconnect VLAN attachment (không phải VPN tunnel)
- Bandwidth cao hơn nhiều (10 Gbps - 200 Gbps cho Dedicated)
- Latency thấp hơn (phụ thuộc vào physical location)
- SLA cao hơn
# Tạo VLAN attachment cho Interconnect
gcloud compute interconnects attachments dedicated create prod-attachment \
--router=prod-router \
--region=us-west1 \
--interconnect=prod-interconnect \
--vlan=100
# BGP session được tạo tự động bởi GCPĐặc Điểm Đặc Biệt Của Interconnect
Phải có Cloud Router: Khác với Classic VPN (có thể dùng static routes), Interconnect bắt buộc phải dùng Cloud Router với BGP. Không có lựa chọn static routing với Interconnect.
Router appliance (Network Connectivity Center): Với Router appliance, VM trong VPC của bạn có thể làm BGP speaker thay vì Cloud Router managed. Dùng cho cases muốn chạy custom routing protocols hoặc NVA (Network Virtual Appliance) của third-party vendors.
Cloud Router Logging: Visibility Vào BGP
BGP events được log vào Cloud Logging:
# Enable Cloud Router logging
gcloud compute routers update prod-router \
--region=us-west1 \
--enable-loggingEvents được log:
- BGP session UP/DOWN
- Route advertisements received/withdrawn
- Best path selection changes
Useful query trong Cloud Logging:
resource.type="gce_router"
jsonPayload.event_type="bgp_session_state_change"Failure Modes Quan Trọng
1. BGP Flap: Route Instability
Nếu BGP peer không ổn định (BGP session liên tục UP/DOWN), routes sẽ flap:
- Andromeda agents liên tục update route table
- Traffic intermittently bị drop trong khoảng thời gian convergence
- Excessive route churn ảnh hưởng toàn VPC
Detection: Monitor BGP session state changes trong Cloud Logging. Alert khi session state changes nhiều hơn X lần trong Y phút.
Mitigation: Tăng hold timer (giảm sensitivity nhưng chậm detect failure) hoặc dùng BFD với careful tuning.
2. Route Leak
Route leak xảy ra khi on-premises quảng bá route prefix quá rộng:
On-premises quảng bá: 0.0.0.0/0 (default route)
→ Cloud Router học default route từ on-premises
→ Tất cả internet traffic từ GCP sẽ đi qua on-premises (nếu priority thấp hơn default internet gateway)
→ Unexpected latency, traffic routing qua on-premises firewall, bottleneckMitigation: Cấu hình route filter (import policy) trên Cloud Router để chỉ accept specific prefixes:
gcloud compute routers update-bgp-peer prod-router \
--peer-name=onprem-peer \
--import-custom-routes=false \ # Chỉ accept default nếu cần
--region=us-west1Hoặc dùng prefix lists để filter:
# Chỉ accept routes trong specific range
gcloud compute routers add-interface prod-router \
--router-appliance-instance=filter-appliance \
--region=us-west13. MTU Mismatch qua Interconnect
Interconnect hỗ trợ larger MTU (1440 bytes cho Dedicated Interconnect). Nếu VPC MTU không match, có thể xảy ra packet fragmentation:
VPC MTU: 1500 bytes
Interconnect VLAN MTU: 1440 bytes (với VLAN headers overhead)
→ Packets > 1440 bytes bị fragmented tại Interconnect edge
→ Performance degradation cho large payloadsGiải pháp: Set VPC MTU xuống 1440 hoặc configure TCP MSS clamping:
gcloud compute networks update prod-vpc --mtu=1440References
- Cloud Router Overview — Tài liệu chính thức
- Cloud Router BGP — Chi tiết BGP configuration
- Dynamic Routing Mode — Regional vs Global mode
- HA VPN with Cloud Router — HA VPN topologies
- Cloud Interconnect with Router — Interconnect BGP integration