9. Cloud OnAir
独自のソフトウェアとネットワーク
● Espresso
○ インターネットから Google の
ネットワークに接続する経路の最適化
● B2
○ Google とインターネットを接続するネット
ワーク
● B4
○ Google のデータセンター間を接続する
グローバルネットワーク
● Jupiter
○ Google データセンター内を 1 Pbps で
繋ぐネットワーク
複数階層における独自の技術的な工夫で
高速なネットワークを実現
10. Cloud OnAir
Google リージョン間の経路最適化
● 通信の優先度に基づく、
公平な帯域の割り当て
● 最短経路を優先的に選択し、
必要に応じて長い経路に変更
● 例 : FG1 高優先度, FG2 低優先度
A
B
C
D
FG1
A から B へ
● 20 G bps 要求
● 20 G bps 割当
高優先度なので優先割当
FG2
A から C へ
● 10 G bps 要求
● 5 G bps 割当
低優先度なので迂回
10 G
10 G
10 G
5 G
5 G
19. Cloud OnAir
$ gcloud compute networks create test --subnet-mode custom
Created [https://www.googleapis.com/compute/v1/projects/scratch-205603/global/networks/test].
NAME SUBNET_MODE BGP_ROUTING_MODE IPV4_RANGE GATEWAY_IPV4
test CUSTOM REGIONAL
$ gcloud compute networks subnets create testsubnet1 --network test --range 192.168.0.0/24
Created [https://www.googleapis.com/compute/v1/projects/scratch-205603/regions/asia-northeast1/subnetworks/testsubnet1].
NAME REGION NETWORK RANGE
testsubnet1 asia-northeast1 test 192.168.0.0/24
$ gcloud compute networks describe test --format="flattened(subnetworks[].basename())"
subnetworks[0]: testsubnet1
$ gcloud compute instances create test-instance --network test --subnet testsubnet1 --zone asia-northeast1-b
Created [https://www.googleapis.com/compute/v1/projects/scratch-205603/zones/asia-northeast1-b/instances/test-instance].
NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS
test-instance asia-northeast1-b n1-standard-1 192.168.0.2 104.198.117.39 RUNNING
$ gcloud compute firewall-rules create allow-management --network test --allow tcp:22,tcp:3389,icmp
最もシンプルな VPC の作成
20. Cloud OnAir
VPC をグローバルに拡張
$ gcloud compute networks subnets create testsubnet2 --network test --range 10.1.2.0/24 --region us-central1
Created [https://www.googleapis.com/compute/v1/projects/scratch-205603/regions/us-central1/subnetworks/testsubnet2].
NAME REGION NETWORK RANGE
testsubnet2 us-central1 test 10.1.2.0/24
$ gcloud compute instances create instance-us-central1 --network test --subnet testsubnet2 --zone us-central1-b
Created [https://www.googleapis.com/compute/v1/projects/scratch-205603/zones/us-central1-b/instances/instance-us-central1].
NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS
instance-us-central1 us-central1-b n1-standard-1 10.1.2.2 35.232.62.213 RUNNING
$ gcloud compute ssh instance-us-central1 --zone us-central1-b
(...)
admin@instance-us-central1:~$ ping 192.168.0.2
PING 192.168.0.2 (192.168.0.2) 56(84) bytes of data.
64 bytes from 192.168.0.2: icmp_seq=1 ttl=64 time=122 ms
64 bytes from 192.168.0.2: icmp_seq=2 ttl=64 time=121 ms
64 bytes from 192.168.0.2: icmp_seq=3 ttl=64 time=121 ms
(...)
testsubnet1
192.168.0.0/24
asia-northeast1
testsubnet2
10.1.2.0/24
us-central1
10.1.2.2192.168.0.2
21. Cloud OnAir
サブネットの拡張
$ gcloud compute networks subnets expand-ip-range testsubnet1 --prefix-length 22
The IP range of subnetwork [testsubnet1] will be expanded from
192.168.0.0/24 to 192.168.0.0/22. This operation may take several
minutes to complete and cannot be undone.
Do you want to continue (Y/n)? y
Updated [https://www.googleapis.com/compute/v1/projects/scratch-205603/regions/asia-northeast1/subnetworks/testsubnet1].
$ gcloud compute instances create instance1 --network test --subnet testsubnet1 --private-network-ip 192.168.3.253
Created [https://www.googleapis.com/compute/v1/projects/scratch-205603/zones/asia-northeast1-b/instances/instance1].
NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS
instance1 asia-northeast1-b n1-standard-1 192.168.3.253 35.200.84.32 RUNNING
まめ知識:サブネットごとに次のアドレスが予約されます。
● ネットワーク アドレス(CIDR 範囲の最初のアドレス)
● デフォルト ゲートウェイ アドレス(CIDR 範囲の 2 番目のアドレス)
● 予約アドレス(CIDR 範囲の最後から 2 番目のアドレス)
● ブロードキャスト アドレス(CIDR 範囲の最後のアドレス)
まめ知識:GCE インスタンスのネットマスクはサブネットの
プレフィックス長とは独立にすべて /32 で設定されています。
$ ip -4 addr show dev eth0 | grep inet
inet 192.168.0.2/32 brd 192.168.0.2 scope global eth0
22. Cloud OnAir
ルート
● 各インスタンスからの通信は「ルート」を参照してルーティングされます
● ルートはグローバルなリソースとなります
○ リージョンごと、サブネットごとの設定ではありません
■ これはすべてのサブネットのルートの設定が同じ階層の設定であることを示してもいます
○ VPC 内のすべてのインスタンスが(リージョン・サブネットによらず)参照します
■ tag を利用することで、インスタンス(グループ)ごとに利用するルートを指定することもできます
● 下記例で 0.0.0.0/0 へのルートは削除できますが、それ以外の2 つのルートはローカルルートなので
削除できません
○ 0.0.0.0/0 へのルートを削除した場合、外部からすべてのインスタンスに到達できなくなります
● 同じルートが複数ある場合5-tuple のハッシュにもとづくECMP (Equal Cost Multi Path) になります
$ gcloud compute routes list --filter="network:test"
NAME NETWORK DEST_RANGE NEXT_HOP PRIORITY
default-route-1e11ab011df307eb test 10.1.2.0/24 test 1000
default-route-6a63aecff8150066 test 192.168.0.0/22 test 1000
default-route-7ddfadae649db40f test 0.0.0.0/0 default-internet-gateway 1000
26. Cloud OnAir
GCP 内外でのネットワークセキュリティのポイント
VPC ネットワーク
Google
Cloud
Storage
Internet
GlobalLB
ウェブサーバー
on GKE
アプリケーション
on GCE
BigQuery
VPC
Firewall
Cloud Armor
+ IAP
VPC Service
Controls
API ベースのサービス
オンプレミス
Interconnect
VPC
Firewall
VPC
Firewall
VPC Service
Controls
VPC Service
Controls
VPC Service
Controls
VPC Service
Controls
VPC
Firewall
38. Cloud OnAir
一つの IP アドレスでグローバルな Anycast
10.2.0.0/16
10.240.0.0/16
myapp.com
ASIA-SOUTHEAST1
myapp.com
EUROPE-WEST2
120.1.1.1
120.1.1.1
120.1.1.1
192.168.0.0/16Maya in
カリフォルニア
Bob in ロンドン
Shen in シンガポール
Google Global Load Balancing は世界中に分散しています
myapp.com
US-WEST1
192.168.1.0/24
DNS
www.myapp.com
A record 120.1.1.1
55. Cloud OnAir
HTTP(S) LB の裏側 - Maglev にもとづく実装
Instance
Instance
Instance
us-central-1a
Instance
Instance
Instance
us-east-1b
Maglev
Maglev
Edge: Tier 1-POP
Caching infra
ネットワークエッジ
Caching infra
Edge: Tier 2
Global HTTP(S) LB, SSL/TCP プロキシ
GFE
= Google Front End
GFE
56. Cloud OnAir
Network LB の裏側 - Maglev にもとづく実装
Router
Load balancer
Service 1
internet
Backup LB
Service 2
Maglev 1
Service 1
Maglev 2
Service 2
Maglev 3
Service 1
Edge router N
Maglev N
Service N
ECMP
Consistent
hashing
Google の
Network Load Balancing
伝統的なプロキシ
internet
DSR
57. Cloud OnAir
Internal LB の裏側 - Andromeda にもとづく実装
VM controllers
OFEs
Health reporter
Health checkerClient VM
Load Balancer
Backend VM
Cluster fabric manager
OpenFlow
VM-VM
Health
Control
Backend VM
* OpenFlow Frontend
59. Cloud OnAir
Google Cloud Platform との直接接続の 5 つの方法
Carrier Peering
(no SLA)
Dedicated
Interconnect
プライベート IP (RFC1918) 接続
パブリック IP 接続
共用専有
Direct Peering
(no SLA)
Partner
InterconnectVPN
61. Cloud OnAir
Dedicated Interconnect - 接続拠点
WASHINGTON D. C.
LONDON
AMSTERDAM
FRANKFURT
DALLAS
TOKYO
LOS ANGELES
HONG KONG
SAN FRANCISCO NEW YORK
SINGAPORE
CHICAGO
OSAKA
SYDNEY
TORONTO
PARIS
https://cloud.google.com/interconnect/docs/concepts/colocation-facilities
SEATTLE
KUALA LUMPUR
ATLANTA
MONTREAL
MUMBAI
MUNICH
DENVER
MARSEILLE
RIO DE JANEIRO
SÃO PAULO
STOCKHOLM
3
3
2
3