To fully resolve VPC peering timeout issues between regions, you need to address all three focus areas systematically:
VPC Peering Routes Configuration:
First, verify your peering routes are properly established and not being overridden. The automatic routes created by VPC peering should have priority 1000. Check for conflicts:
gcloud compute routes list --filter="network:YOUR_VPC"
Look for custom routes with priority <1000 that overlap with your peered VPC CIDR ranges. Delete or modify these routes to have lower priority (higher number) than 1000. In your case, the priority 900 custom route was forcing traffic through Cloud NAT instead of the direct peering path.
Firewall Rules for Cross-Region Traffic:
Your firewall rules must cover the entire peered VPC CIDR block, not individual subnets. Create explicit ingress and egress rules:
gcloud compute firewall-rules create allow-peered-vpc-ingress \
--network=YOUR_VPC \
--allow=tcp:8080,tcp:8443,tcp:5432 \
--source-ranges=10.132.0.0/16 \
--target-tags=erp-app
Critically, ensure your instance network tags match the target-tags in firewall rules. Mismatched tags (like ‘erp-app-eu’ vs ‘erp-app’) will block traffic even when VPC-level rules appear correct. Use consistent tagging across all regions.
VPC Flow Logs Analysis:
Enable VPC Flow Logs with aggregation interval of 5 seconds for detailed diagnostics:
gcloud compute networks subnets update SUBNET_NAME \
--enable-flow-logs \
--logging-aggregation-interval=interval-5-sec
In Cloud Logging, query for timeout patterns:
resource.type="gce_subnetwork"
jsonPayload.connection.dest_ip="TARGET_IP"
jsonPayload.rtt_msec>5000
High RTT values (>100ms between us-central1 and europe-west1) indicate routing problems. Compare src_location and dest_location fields to verify traffic is taking the direct peering path, not routing through NAT gateways or other intermediate hops.
Additional Validation:
After fixing routes, firewall rules, and instance tags, test connectivity using internal IPs: gcloud compute ssh INSTANCE --internal-ip --tunnel-through-iap. Monitor for 24-48 hours during peak traffic to confirm timeouts are resolved. Expected cross-region latency should stabilize at 80-120ms with no timeouts.
The combination of conflicting custom routes and mismatched network tags was causing your ERP application to experience both routing delays and firewall blocks, manifesting as the 5-10 second timeouts during peak hours.