Cách Google Cloud lựa chọn thứ tự ưu tiên đường đi networking routing

Ha Pham
One Mount | Tech
Published in
4 min readSep 28, 2021

Bài viết này sẽ giải thích về cách mà Google Cloud lựa chọn routes hay còn gọi là tuyến đường phù hợp để thực hiện chuyển tiếp packet (gói tin) đến destination (đích) ở trong hoặc ngoài môi trường Google Cloud.

Hạ tầng networking ở hệ thống On-prem data center hay trên cloud như Google là phần core để đảm bảo việc chuyển tiếp các gói (packet), nói chuyện giữa các server với nhau nhanh và ổn định nhất.

Trường hợp một server A có địa chỉ 172.16.1.20 muốn nói chuyện với server B có địa chỉ 192.168.1.10, lúc đó phải tồn tại ít nhất một hoặc nhiều tuyến đường hay còn gọi là Routes để có thể chuyển tiếp các gói tin từ A → B. Tôi đã tổng hợp lại cách Google Cloud lựa chọn các tuyến đường (Routes) dưới dạng sơ đồ như sau, hãy cùng tìm hiểu chi tiết hơn nữa nhé.

Như ví dụ ở trên B là đích cần phải đến với địa chỉ 192.168.1.10, với trường hợp này thì giả sử có 2 tuyến đường (routes) như sau: 192.168.1.0/24 hoặc 192.168.0.0/16 thì cũng có thể dùng để vận chuyển các gói tin đến đích B. Như vậy chúng ta đã có 2 ứng viên (Route candidates) để thực hiện quá trình bầu chọn.

Đầu tiên Google sẽ kiểm tra trong bảng định tuyến rằng có tuyến đường nào phù hợp với địa chỉ đích cần đến hay không. Nếu không tồn tại thì sẽ drop packet hay có thể hiểu là gói tin sẽ không được truyền đi, như vậy là Server A không thể nói chuyện được với Server B.

Khi tạo một subnet ví dụ 172.16.1.0/24 trên Virtual Private Cloud (VPC) thì Google đồng thời tạo luôn một tuyến đường hay còn gọi là local subnet route. Trường hợp khi peering giữa 2 VPC A và B. Ví dụ như peering giữa 2 môi trường Prod và Non Production, thì các tuyến đường mà VPC B sẽ quảng bá sang cho VPC A gọi là subnet peering. Khi Google kiểm tra nếu local /peering subnet routes phù hợp dùng để gửi packet tới server B thì sẽ được ưu tiên được lựa chọn đầu tiên.

Nếu như routes không phải là local/peering subnet thì sẽ xét tiếp liệu có tồn tại ≥ 2 routes specific giống nhau hay không. Nếu không thì sẽ chọn tuyến đường có specific nhất (cụ thể nhất). Ví dụ 192.168.1.0/24 sẽ được ưu tiên hơn 192.168.0.0/16. Có một điểm thú vị là trường hợp nếu như route 192.168.1.0/24 với next hop qua một tunnel A or IP A nào đó mà VPN tunnel hoặc IP bị down thì route sẽ không tự switch qua route 192.168.0.0/16, đây là điểm khác biệt với routing trên các thiết bị truyền thống như Cisco, Juniper, HP. Route chỉ tự động switch sang đường dự phòng 192.168.1.0/24 next hop là tunnel hoặc IP B nếu cùng /24 (same specific route).

Trường hợp có hơn 1 specific routes, ví dụ có 2 routes với đích giống nhau 192.168.1.0/24 thì sẽ kiểm tra xem các routes này có nằm trong local VPC không, nếu không phải thì sẽ chọn các routes từ VPC peering khác quảng bá sang theo thuật toán riêng của Google. Trường hợp nếu các routes này thuộc local VPC thì sẽ xét tiếp đến priority.

Routes 1: 192.168.1.0/24 priority value 800, Routes 2: 192.168.1.0/24 priority value 900, thì route có priority value càng nhỏ sẽ càng được ưu tiên hơn (800 win 900). Yếu tố được xét tiếp nếu các routes cùng priority là route type. Nếu không cùng route type thì sẽ ưu tiên từ cao đến thấp như sau:

1. Static route (định tuyến tĩnh) có next hop là Instance, IP, VPN tunnel
2. Dynamic route ( định tuyến động BGP)
3. Static route có next hop là internal TCP/UDP load balancer
4. Static route có next hop là default internet gateway

Trường hợp nếu tồn tại ≥ 2 routes giống nhau cả prioritysubnet type thì sẽ xét tiếp yếu tố next hop là internal TCP/UDP load balancer. Trường hợp nếu không phải sẽ dùng thuật toán Equal Cost Multi Path (ECMP) để chia tải trên các routes. Trường hợp nếu next hop là internal TCP/UDP load balancer thì Google sẽ dùng thuật toán riêng để lựa chọn ra 1 tuyến đường duy nhất.

Kết Luận:

Bài viết trên đã tổng hợp lại một cách ngắn gọn về cách mà Google Cloud lựa chọn tuyến đường để vận chuyển các gói tin từ một nguồn (source) đến một đích (destination) nào đó. Một số điểm thì sẽ giống với các thiết bị truyền thống như Cisco, Juniper, HP. Tuy nhiên Google Cloud cũng có điểm khác biệt riêng, có thể liên quan tới Software Defined Networking (SDN). Hy vọng bài viết sẽ giúp bạn có thêm kiến thức bổ ích và hẹn gặp lại các bạn ở các bài viết sau về Google Cloud Networking.

Link tham khảo : https://cloud.google.com/vpc/docs/routes#routeselection

--

--