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 可以放大,但不能縮小。
  • Gateway:
    • 每個 Subnet 會有預設的 Gateway: xxx.yyy.zzz.1
    • 沒有 NAT 概念的節點,透過 RouteFirewall 控制

Routes

  • Scope: Global
  • 每個 Project 都會有預設的 VPC Network,同時也會有預設的 RouteFirewalls

主要文件: Routes Overview

Firewall rules

  • Scope: Global, 每個 VPC Network 有預設數個常用的 firewalls,像是 icmp, rdp, ssh, 還有 internal
  • 可以透過 tag 方式套用到不同的 VM or resources
  • allowdeny 兩種,每條 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

主要文件: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,大多都是能通就好,很多人也搞不清楚 WANLAN 的差異,反正能通就好。。。

Sense 名詞是概念,形容詞是 sensitivity 靈敏度。緝毒犬聞道特殊味道就知道哪裡有毒,這叫做靈敏度。

看到網路的設計,一看就知道有問題,這就叫靈敏度。我遇到的開發者幾乎靈敏度都是零。

你會在乎台北市地底下的水管品質嗎?你會在乎在公司裡的封包走去哪嗎?Network Engineer 在乎。

延伸閱讀

參考資料


留言