Comparing bandwidth prices and network latency between Google Compute zones and regions

Below is a breakdown of bandwidth prices and network latencies on Google Compute Engine between virtual machines in the same zone, different zones, and different regions.

All VM's used for testing were of instance type f1-micro (1 vCPU, 0.6 GB memory) and used internal IP addresses.

GCE Bandwidth Prices

Traffic type Price (per GB)
Ingress Free
Egress inner-zone Free
Egress cross-zone in the same region $0.01
Egress cross-region within the US $0.01

Note: If VM's span regions not within the US, bandwidth costs are significantly higher and billed at standard GCE Internet Egress rates.

GCE Network Latencies

From zone To zone Type Average ping rtt (latency)
us-west1-a (Oregon) us-west1-a (Oregon) inner-zone 0.37 ms
us-west1-a (Oregon) us-west1-b (Oregon) cross-zone 0.53 ms
us-west1-a (Oregon) us-central1-a (Iowa) cross-region 34 ms
us-west1-a (Oregon) us-east1-b (South Carolina) cross-region 67 ms

Below are the full ping results of each test as well for completeness.

us-west1-a to us-west1-a (inner-zone)

PING 10.138.0.2 (10.138.0.2) 56(84) bytes of data.  
64 bytes from 10.138.0.2: icmp_seq=1 ttl=64 time=1.16 ms  
64 bytes from 10.138.0.2: icmp_seq=2 ttl=64 time=0.298 ms  
64 bytes from 10.138.0.2: icmp_seq=3 ttl=64 time=0.313 ms  
64 bytes from 10.138.0.2: icmp_seq=4 ttl=64 time=0.307 ms  
64 bytes from 10.138.0.2: icmp_seq=5 ttl=64 time=0.298 ms  
64 bytes from 10.138.0.2: icmp_seq=6 ttl=64 time=0.312 ms  
64 bytes from 10.138.0.2: icmp_seq=7 ttl=64 time=0.438 ms  
64 bytes from 10.138.0.2: icmp_seq=8 ttl=64 time=0.272 ms  
64 bytes from 10.138.0.2: icmp_seq=9 ttl=64 time=0.262 ms  
64 bytes from 10.138.0.2: icmp_seq=10 ttl=64 time=0.294 ms  
64 bytes from 10.138.0.2: icmp_seq=11 ttl=64 time=0.269 ms  
64 bytes from 10.138.0.2: icmp_seq=12 ttl=64 time=0.285 ms  
64 bytes from 10.138.0.2: icmp_seq=13 ttl=64 time=0.313 ms  
^C
--- 10.138.0.2 ping statistics ---
13 packets transmitted, 13 received, 0% packet loss, time 12000ms  
rtt min/avg/max/mdev = 0.262/0.371/1.165/0.233 ms  

us-west1-a to us-west1-b (cross-zone)

PING 10.138.0.4 (10.138.0.4) 56(84) bytes of data.  
64 bytes from 10.138.0.4: icmp_seq=1 ttl=64 time=1.88 ms  
64 bytes from 10.138.0.4: icmp_seq=2 ttl=64 time=0.439 ms  
64 bytes from 10.138.0.4: icmp_seq=3 ttl=64 time=0.447 ms  
64 bytes from 10.138.0.4: icmp_seq=4 ttl=64 time=0.399 ms  
64 bytes from 10.138.0.4: icmp_seq=5 ttl=64 time=0.520 ms  
64 bytes from 10.138.0.4: icmp_seq=6 ttl=64 time=0.389 ms  
64 bytes from 10.138.0.4: icmp_seq=7 ttl=64 time=0.425 ms  
64 bytes from 10.138.0.4: icmp_seq=8 ttl=64 time=0.452 ms  
64 bytes from 10.138.0.4: icmp_seq=9 ttl=64 time=0.409 ms  
64 bytes from 10.138.0.4: icmp_seq=10 ttl=64 time=0.397 ms  
64 bytes from 10.138.0.4: icmp_seq=11 ttl=64 time=0.393 ms  
64 bytes from 10.138.0.4: icmp_seq=12 ttl=64 time=0.418 ms  
64 bytes from 10.138.0.4: icmp_seq=13 ttl=64 time=0.355 ms  
^C
--- 10.138.0.4 ping statistics ---
13 packets transmitted, 13 received, 0% packet loss, time 12000ms  
rtt min/avg/max/mdev = 0.355/0.532/1.880/0.391 ms  

us-west1-a to us-central1-a (cross-region)

PING 10.128.0.2 (10.128.0.2) 56(84) bytes of data.  
64 bytes from 10.128.0.2: icmp_seq=1 ttl=64 time=35.0 ms  
64 bytes from 10.128.0.2: icmp_seq=2 ttl=64 time=34.0 ms  
64 bytes from 10.128.0.2: icmp_seq=3 ttl=64 time=34.1 ms  
64 bytes from 10.128.0.2: icmp_seq=4 ttl=64 time=34.0 ms  
64 bytes from 10.128.0.2: icmp_seq=5 ttl=64 time=34.0 ms  
64 bytes from 10.128.0.2: icmp_seq=6 ttl=64 time=34.0 ms  
64 bytes from 10.128.0.2: icmp_seq=7 ttl=64 time=34.0 ms  
64 bytes from 10.128.0.2: icmp_seq=8 ttl=64 time=34.1 ms  
64 bytes from 10.128.0.2: icmp_seq=9 ttl=64 time=34.0 ms  
64 bytes from 10.128.0.2: icmp_seq=10 ttl=64 time=34.1 ms  
64 bytes from 10.128.0.2: icmp_seq=11 ttl=64 time=34.0 ms  
64 bytes from 10.128.0.2: icmp_seq=12 ttl=64 time=34.1 ms  
64 bytes from 10.128.0.2: icmp_seq=13 ttl=64 time=34.0 ms  
^C
--- 10.128.0.2 ping statistics ---
13 packets transmitted, 13 received, 0% packet loss, time 12002ms  
rtt min/avg/max/mdev = 34.027/34.158/35.080/0.270 ms  

us-west1-a to us-east1-b (cross-region)

PING 10.142.0.2 (10.142.0.2) 56(84) bytes of data.  
64 bytes from 10.142.0.2: icmp_seq=1 ttl=64 time=67.2 ms  
64 bytes from 10.142.0.2: icmp_seq=2 ttl=64 time=66.6 ms  
64 bytes from 10.142.0.2: icmp_seq=3 ttl=64 time=66.6 ms  
64 bytes from 10.142.0.2: icmp_seq=4 ttl=64 time=66.6 ms  
64 bytes from 10.142.0.2: icmp_seq=5 ttl=64 time=66.6 ms  
64 bytes from 10.142.0.2: icmp_seq=6 ttl=64 time=66.7 ms  
64 bytes from 10.142.0.2: icmp_seq=7 ttl=64 time=66.6 ms  
64 bytes from 10.142.0.2: icmp_seq=8 ttl=64 time=66.7 ms  
64 bytes from 10.142.0.2: icmp_seq=9 ttl=64 time=66.6 ms  
64 bytes from 10.142.0.2: icmp_seq=10 ttl=64 time=66.7 ms  
64 bytes from 10.142.0.2: icmp_seq=11 ttl=64 time=66.7 ms  
64 bytes from 10.142.0.2: icmp_seq=12 ttl=64 time=66.6 ms  
64 bytes from 10.142.0.2: icmp_seq=13 ttl=64 time=66.6 ms  
^C
--- 10.142.0.2 ping statistics ---
13 packets transmitted, 13 received, 0% packet loss, time 12021ms  
rtt min/avg/max/mdev = 66.631/66.732/67.296/0.389 ms  

Justin

Justin is the founder of Elastic Byte a DevOps as a service company which builds, optimizes, secures and supports cloud infrastructure.

San Francisco