Study Notes - VPC Network in GCP
整理 GCP 的 Virtual Private Cloud (VPC) 的筆記,同時跟 AWS VPC 的設計比較。
VPC Network 的好處
這篇:Reimagining virtual private clouds 描述了 VPC Network 的強項:
- Global
- Sharable
- Expandable
這三點大概都是 AWS 比較沒有的,也是很吸引我的因素之一。
配置與管理
- 建立 VPC Network 有兩種方法:自動、手動
- 自動:會在每個 region 配置一個 subnet (相當於開一個 AWS Account, 每個 region 都會有一個 default VPC)
- 手動:可以自己規劃 subnet 的 CIDR, 相當於自行規劃 AWS 每個 VPC 的 CIDR
- 預設自動的 VPC Network CIDR 都一樣,參見: Types of VPC networks。所以 project 之間要透過網路互通,CIDR 要避開 Space,不然就無法串接。
- 手動規劃 Subnet CIDR,要符合 RFC1918 規範。
- 每個 subnet 都會有以下
四個
保留位址:- Network address (first address in the CIDR range)
- Default gateway address (second address in the CIDR range)
- Reserved address (second-to-last address in the CIDR range)
- Broadcast address (last address in the CIDR range)
Network Elements
提到網路 SDN (Software Defined Network) 一定要提到幾種角色:
- Router
- Gateway
- Firewall
- NAT
VPC Network
VPC Network
: a global entity spanning all GCP regions. 在這個 VPC Network 裡的 VM (不管在哪一個 Region) 都可以直接透過 Private IP 溝通.- entity spanning: 實體跨越
- 每個
Project
會有一個預設
的 network - 每個 Project 限制有 5 個 network (抄 AWS 的很徹底)
- Subnets:
- 在單一的 regions 裡. 每個 region 裡可以有多個
subnet
. - 在 GCP 裡,跟
Subnetworks
是指同一個東西。gcloud
cli 裡會用subnetwork
表示 sub command - GCP 的 Subnet 概念等同於 AWS Region 裡的一個 VPC CIDR,但是 GCP 沒有類似 AWS VPC Subnet 的概念
- Subnet 的 CIDR Space 可以放大,但不能縮小。
- 在單一的 regions 裡. 每個 region 裡可以有多個
- Gateway:
- 每個 Subnet 會有預設的 Gateway:
xxx.yyy.zzz.1
- 沒有 NAT 概念的節點,透過
Route
、Firewall
控制
- 每個 Subnet 會有預設的 Gateway:
Routes
- Scope: Global
- 每個 Project 都會有預設的
VPC Network
,同時也會有預設的Route
、Firewalls
主要文件: Routes Overview
Firewall rules
- Scope: Global, 每個
VPC Network
有預設數個常用的 firewalls,像是 icmp, rdp, ssh, 還有 internal - 可以透過
tag
方式套用到不同的 VM or resources - 有
allow
、deny
兩種,每條rule
只能是一種
主要文件: Firewall Rules Overview
NAT
GCP 尚無提供類似 AWS 的 NAT Gateway,所以要自己蓋 NAT Instance,然後又會衍生出其他問題,像是:
- 如何做 HA for NAT Instance
- GCP VM 的 Network Bandwidth 是用 CPU Core 計算,算法跟 AWS 不一樣,所以應該不會有 NAT Instance 本身 Bandwidth 的問題。
Shared VPC
不同的 Project,共享同樣的 VPC Network
。概念與相關用語如下:
主要文件:Shared VPC Overview
Concepts and Terminology
- Shared VPC host project:
- Shared VPC service project:
- Standalone project:獨立的 project,有自己的 VPC Network。通常是使用在需要隔離的資源,像是需要 PCI DSS 認證,存放信用卡資料的資料庫。
- Shared VPC network:共享的
VPC Network
,所有專案都共用此網路的 CIDR Space。 - IAM roles and policies
- Organization:G Suite 的組織,像是研發單位、業務單位 … 等職權獨立的單位。
- Org admin:最上層的組織管理者,類似於 AD (Active Directory) 的 Domain Admin
- Shared VPC admin:負責管理 Shared VPC 的管理員
- Service project admin
- Network admin
- Security admin
Overview
Shared VPC within an Organization structure
Use Case: Two-tier web service
Use Case: Hybrid cloud
Global, Regional, and Zonal Resources
主要文件:Global, Regional, and Zonal Resources
- Global resources: 所有 region, zone 都可以存取的資源,像是:
- Images
- Snapshots
- VPC Network
- Firewalls
- Routes
- Global operations
- Regional resources
- Addresses
- Subnets
- Regional operations
- Zone resources
- Instances
- Disks
- Machine types
- Per-zone operations
- Aggregate Lists
Advanced VPC Concepts
- ARP lookup
- Mac lookup table, IP lookup table, active connection table
- DNS server
- Packet handling between the VPC network and the outside
- Packets received by an instance
- Packets sent by an instance
- Measuring VPC network throughput
抱怨
很多 developer 對 網路
其實都沒什麼 sense,大多都是能通就好,很多人也搞不清楚 WAN
跟 LAN
的差異,反正能通就好。。。
Sense
名詞是概念,形容詞是 sensitivity
靈敏度。緝毒犬聞道特殊味道就知道哪裡有毒,這叫做靈敏度。
看到網路的設計,一看就知道有問題,這就叫靈敏度。我遇到的開發者幾乎靈敏度都是零。
你會在乎台北市地底下的水管品質嗎?你會在乎在公司裡的封包走去哪嗎?Network Engineer 在乎。
延伸閱讀
- GCP: Experience GCP
- AWS: Study Notes - AWS VPC (Virtual Private Cloud)
- AWS: From One to Many - Evolving VPC Design
- AWS: 設定 VPC Peering and Private DNS using Route53
參考資料
- Virtual Private Cloud (VPC) Network Overview
- Google Cloud Platform for AWS Professionals
- Reimagining virtual private clouds