CLOUD NETWORKING / AWS

AWS Transit Gateway: Three Best-Practice Architecture Patterns

Standing up a Transit Gateway is the easy part. The route table design is what actually determines whether your network is secure, auditable, and easy to operate.

Published July 2026 · ~9 min read · Architecture reference

AWS Transit Gateway (TGW) has become the default way to connect VPCs, VPNs, and Direct Connect at scale, replacing the operational headache of full-mesh VPC peering. But once it's live, the decisions that actually determine whether your network is secure, auditable, and easy to operate come down to one thing: route table design.

This is a walkthrough of three proven patterns, in order of increasing control — how the route tables are built, when to use each one, and the trade-offs, with a reference architecture diagram for each.

At a glance

01 How TGW Routing Actually Works

Every VPC, VPN, Direct Connect Gateway, or peering connection you attach to a Transit Gateway is called an attachment. Each attachment has two independent relationships to a TGW route table:

This association/propagation split is the entire toolkit for building segmentation on TGW. You don't need separate gateways for separate security zones — you need separate route tables and a deliberate propagation strategy. Everything below is a variation on that same primitive.

02 Hub-and-Spoke — Single Default Route Table

This is what you get "for free" when you create a Transit Gateway with default route table association and propagation enabled. Every attachment — VPCs, VPN, Direct Connect — is associated with the single default route table, and every attachment propagates its routes into that same table.

VPC-A – Prod App10.1.0.0/16AppDataVPC-B – Dev App10.2.0.0/16AppDataVPC-C – Shared Svcs10.3.0.0/16AD/DNSCI/CDVPC-D – Analytics10.4.0.0/16ETLDWTransit GatewayTGW-RT-DefaultAssociate: ALL attachmentsPropagate: ALL attachmentsOn-Premisesvia DX Gateway / VPN
Figure 1 — Hub-and-spoke: every attachment associates and propagates into one shared TGW route table.
Route tableAssociationPropagation
TGW-RT-DefaultAll attachmentsAll attachments

When to use it

Trade-off. The convenience is also the risk: this pattern gives you any-to-any connectivity by default. There's nothing in the routing layer stopping a compromised dev workload from reaching a production database if the CIDRs and route propagation allow it. Segmentation has to be bolted on afterwards via security groups or NACLs. It's a fine starting point, but most organizations outgrow it the moment they have more than one environment or a compliance boundary to enforce.

03 Segmented Isolation — Prod / Non-Prod with Shared Services

This pattern replaces the single default route table with purpose-built route tables per environment, and uses a Shared Services VPC as the one deliberate crossover point.

VPC-Prod-App10.10.0.0/16AppDataVPC-Prod-Core10.11.0.0/16APIDBVPC-Dev-App10.20.0.0/16AppDataVPC-Test-App10.21.0.0/16AppQATransit GatewayProd-RTAssociate: Prod attach.Propagate: Prod VPCs+ Shared-Services VPCNonProd-RTAssociate: Dev/Test attach.Propagate: Dev/Test VPCs+ Shared-Services VPCVPC-Shared-Services10.30.0.0/16AD/DNSCI/CDOn-Premisesvia DX Gateway / VPN
Figure 2 — Segmented isolation: dedicated Prod and Non-Prod route tables, with Shared Services propagating into both.
Route tableAssociationPropagation
Prod-RTProd VPC attachmentsProd VPCs + Shared-Services VPC
NonProd-RTDev/Test VPC attachmentsDev/Test VPCs + Shared-Services VPC
Shared-Services attachmentIts own or a dedicated RTPropagates into both Prod-RT and NonProd-RT

The key mechanic: each spoke VPC is associated only with its own environment's route table, while the Shared-Services VPC propagates its routes into both tables. Production and Dev/Test never receive each other's propagated routes, so — as far as the routing layer is concerned — they are unreachable from one another. Both can reach the shared layer for things like Active Directory, DNS resolvers, CI/CD runners, or a NAT/proxy fleet.

When to use it

Trade-off. You now have more route tables to manage, and every new VPC attachment requires a deliberate decision about which table(s) it associates with and propagates into — this needs to be codified (e.g., in Terraform/CloudFormation) rather than done by hand, or drift creeps in. Many organizations extend this same pattern with additional route tables per business unit, per data classification tier, or per regulatory boundary — it scales well because it's just more tables and more deliberate propagation, not a different mechanism.

04 Centralized Inspection

This pattern goes a step further than isolation: it assumes no VPC should talk to any other VPC — or the internet, or on-prem — without passing through inspection first. All traffic, east-west between VPCs and north-south to the internet or on-premises, is forced through a dedicated Inspection VPC containing a firewall (AWS Network Firewall, or a third-party NGFW such as Palo Alto or Fortinet, typically fronted by a Gateway Load Balancer).

VPC-Inspection10.99.0.0/24Firewall / GWLBEndpoint per AZInternetvia IGWTransit GatewayInspection-RTAssociate: Inspection VPC · Propagate: all spoke VPCsSpoke-RTAssociate: all spoke VPCsPropagate: Inspection VPC only0.0.0.0/0 → Inspection attachmentVPC-A – App110.1.0.0/16AppDataVPC-B – App210.2.0.0/16AppDataVPC-C – App310.3.0.0/16AppDataVPC-D – App410.4.0.0/16AppDataOn-Premisesvia DX Gateway / VPN
Figure 3 — Centralized inspection: spoke traffic is forced to an Inspection VPC/firewall, with a dedicated return-path route table.
Route tableAssociationRoutes
Spoke-RTAll spoke VPC attachmentsPropagates only the Inspection VPC attachment; includes a 0.0.0.0/0 (and often more specific inter-VPC CIDRs) route pointing at it
Inspection-RTInspection VPC attachmentPropagates routes from every spoke VPC, so the firewall can return traffic after inspection

The effect: a spoke VPC has no route back to any other spoke VPC directly — every packet destined for another VPC, the internet, or on-premises is sent to the Inspection VPC first. The firewall appliance evaluates the traffic, and if it's permitted, forwards it back into the Transit Gateway, where Inspection-RT's propagated spoke routes let it reach its actual destination.

When to use it

Trade-off. This is the most powerful pattern but also the most expensive and highest-latency: every cross-VPC packet now makes an extra hop through the inspection layer, and the firewall/GWLB endpoints need to be sized and deployed across multiple Availability Zones — a single-AZ inspection VPC is a single point of failure for your entire network. Route table design is also less forgiving here: a missing propagation on Inspection-RT silently blackholes return traffic. It's common to combine this pattern with segmented route tables that all funnel through the same (or per-environment) inspection VPC.

05 Choosing Between the Three

Hub-and-SpokeSegmented IsolationCentralized Inspection
Route tables12+ (per environment/boundary)2+ (spoke vs. inspection)
VPC-to-VPC trafficDirect, unrestrictedDirect within environment onlyAlways via firewall
Operational complexityLowMediumHigh
CostLowest (no extra hops)Low-mediumHigher (firewall + GWLB + extra hops)
Typical use casePOCs, small/simple estatesMulti-environment landing zonesRegulated/high-security environments

In practice, many mature AWS environments don't pick just one — they layer them. It's common to see Segmented Isolation for environment separation combined with Centralized Inspection for anything crossing a security boundary (e.g., internet egress or connectivity to on-premises), while allowing free intra-environment traffic to skip inspection for cost and latency reasons.

06 Closing Recommendations

A few practices apply regardless of which pattern (or combination) you land on:

07 Summary

Transit Gateway's real power isn't the gateway itself — it's the flexibility of its route table model. Once association and propagation click, all three of these patterns are really just different answers to the same two questions: who gets a say in where this attachment's traffic goes, and who gets to know how to reach it.