4. Use-Case D One Tenant, Three Exits
Advertisement on the enterprise link, Provider SNAT toward a shared-services network, Default Outbound NAT toward the Internet, all on one Transit Gateway. Part 4 builds the design, traces all nine source-and-exit combinations, and covers the enterprise edge cases.
Intro: Tenant Topology for Cloud Providers running VCF9.1 · 1. Architecture and Foundations · 2. Use-Case A Private-VPC Connectivity to External Networks (Translated) · 3. Use-Case B&C Private-TGW Connectivity to External Networks (Routed or Translated) · 4. Use-Case D One Tenant, Three Exits · 5. Operating the Designs
This part builds the third steady-state design, which combines the previous ones. The tenant is Riyadh: workloads on all three subnet types, Public, Private-TGW and Private-VPC, showing their connectivity over three exits on one Transit Gateway: to the enterprise data centre over WAN, which routes the tenant's Private-TGW range as is (advertised, no NAT on the path); to the provider's shared services, which accept traffic only from a provider-assigned pool that is never handed to the tenant (Provider Outbound SNAT on the services connection); and to the Internet, which accepts only the public IP address.
The Requirement
Riyadh (project Tenant-Riyadh) has workloads on a public subnet, a Private-TGW subnet and a Private-VPC subnet. They need three exits, each with a different rule for the source address:
- The enterprise data centre (
10.100.0.0/16), over a VRF dedicated to the tenant. The data centre must be able to use the tenant's Private-TGW addresses directly, so Private-TGW workloads must arrive there untranslated. - The provider's shared services (
10.33.0.0/24), a network the provider offers to all its tenants. The services network must see every tenant only through a provider-assigned pool, never through a tenant's own addressing. - The Internet, through the default route, where private workloads are hidden behind the tenant's Default Outbound NAT.
Topology

Design at a glance.
| Value | |
|---|---|
| Project | Tenant-Riyadh, one Default Transit Gateway (CTGW) with three attachments |
| Enterprise connection | Riyadh-wan-conn, centralized, on VRF Riyadh-wan-vrf; remote network 10.100.0.0/16 |
| Shared-services connection | Shared-services-conn, centralized, on Tier-0 Shared-services-T0; remote network 10.33.0.0/24 |
| Internet connection | Riyadh-internet-conn, centralized, on Tier-0 Internet-T0; no remote networks (implicit default route) |
| Public block | Riyadh-public-block_20.0.0.0/16, authorized on Riyadh-wan-conn and Riyadh-internet-conn; also the Auto SNAT block |
| Services SNAT block | Shared-services-snat-block_10.99.0.0/24, authorized on Shared-services-conn and used as its SNAT IP Block |
| Workloads | Riyadh-web-01 20.0.1.5 (public subnet), Riyadh-app-01 172.16.10.5 (Private-TGW subnet), Riyadh-db-01 192.168.10.5 (Private-VPC subnet) |
| Test destinations | 10.100.0.10 in the enterprise DC, 10.33.0.10 in the provider services, 1.1.1.1 on the Internet |
Address plan.
| Range | Name | Kind / created in | Authorized on / used by | Role |
|---|---|---|---|---|
20.0.0.0/16 |
Riyadh-public-block_20.0.0.0/16 |
External IP Block, Default project (Step 1) | Riyadh-wan-conn, Riyadh-internet-conn; project Tenant-Riyadh |
Public subnet Riyadh-public-subnet 20.0.1.0/28 and the Auto SNAT block of the profile |
10.99.0.0/24 |
Shared-services-snat-block_10.99.0.0/24 |
External IP Block, Default project (Step 1) | Shared-services-conn |
Provider SNAT pool of the services connection; the only source the services network ever sees from this tenant |
172.16.10.0/24 |
Riyadh-private-tgw-block_172.16.10.0/24 |
Private block, project Tenant-Riyadh |
Riyadh's profile | Source of the Private-TGW subnet Riyadh-private-tgw-subnet 172.16.10.0/28; advertised over Riyadh-wan-conn |
192.168.10.0/24 |
Riyadh-private-vpc-block_192.168.10.0/24 |
Private block, project Tenant-Riyadh |
Riyadh's VPC | Source of the Private-VPC subnet Riyadh-private-vpc-subnet 192.168.10.0/28; never advertised |
10.100.0.0/16 |
– | Remote network, physical network | Remote Networks of Riyadh-wan-conn |
The enterprise data centre |
10.33.0.0/24 |
– | Remote network, physical network | Remote Networks of Shared-services-conn |
The provider's shared services |
Note: The four ranges that define the design are20.0.0.0/16,10.99.0.0/24,10.100.0.0/16and10.33.0.0/24. The private blocks, subnet sizes and host addresses are illustrative values chosen so the packet walks can show concrete addresses.20.0.0.xmeans an address NSX allocates from the block.
Steady-State Design
| Object (Step) | Setting | Value | Purpose |
|---|---|---|---|
| External IP Blocks (1) | Blocks | Riyadh-public-block_20.0.0.0/16, Shared-services-snat-block_10.99.0.0/24 |
The tenant's public range, and the provider's SNAT pool for the services network |
Riyadh-wan-conn (2) |
Type / gateway | Centralized, VRF Riyadh-wan-vrf |
Private link to the enterprise DC |
| Remote Networks | 10.100.0.0/16 |
Steers only DC traffic here | |
| External IP Blocks | Riyadh-public-block |
The public range is advertised to the DC | |
| Provider Outbound SNAT | Off | Required: it cannot coexist with the next setting | |
| Private – Transit Gateway IP Blocks | On | Permits the tenant to advertise its Private-TGW block to the DC | |
Shared-services-conn (2) |
Type / gateway | Centralized, Tier-0 Shared-services-T0 |
Link to the provider's services network |
| Remote Networks | 10.33.0.0/24 |
Steers only services traffic here | |
| External IP Blocks | Shared-services-snat-block |
The only range this connection authorizes | |
| Provider Outbound SNAT / SNAT IP Blocks | On / Shared-services-snat-block |
Every source not from Shared-services-snat-block is translated into the pool |
|
Riyadh-internet-conn (2) |
Type / gateway | Centralized, Tier-0 Internet-T0 |
Shared Internet exit |
| Remote Networks | Empty (implicit 0.0.0.0/0) |
Everything not matched elsewhere | |
| External IP Blocks / Provider SNAT / Private-TGW blocks | Riyadh-public-block / Off / Off |
Accepts the public range and the Auto SNAT address as they are | |
Project Tenant-Riyadh (3) |
Connections / blocks | All three connections / Riyadh-public-block |
Makes them selectable inside the project |
| Default Transit Gateway (4) | Connections | Riyadh-wan-conn, Shared-services-conn, Riyadh-internet-conn |
Three attachments, one default route |
| Advertise Rules | Riyadh-wan-conn: type Private-Transit Gateway |
The tenant's half of the advertisement | |
| VPC Connectivity Profile (5) | External IP Blocks | Riyadh-public-block |
The public range usable by VPCs |
| Private – Transit Gateway IP Blocks | Riyadh-private-tgw-block_172.16.10.0/24 |
The block that will be advertised | |
| Default Outbound NAT / Auto SNAT block | On / Riyadh-public-block |
The tenant-side translation for private subnets | |
VPC Riyadh-vpc-01 |
Subnets | Riyadh-public-subnet 20.0.1.0/28, Riyadh-private-tgw-subnet 172.16.10.0/28, Riyadh-private-vpc-subnet 192.168.10.0/28 |
One workload on each subnet type |
The resulting CTGW forwarding table. Exactly one default route, as Rule 2 requires:
10.100.0.0/16 -> Riyadh-wan-conn (PROVIDER_STATIC, remote network)
10.33.0.0/24 -> Shared-services-conn (PROVIDER_STATIC, remote network)
0.0.0.0/0 -> Riyadh-internet-conn (default route: no remote networks configured)Build Order
Provider first. Create the two External IP Blocks, Riyadh-public-block_20.0.0.0/16 and Shared-services-snat-block_10.99.0.0/24; then the three connections with their advanced settings (Private-Transit Gateway IP Blocks on Riyadh-wan-conn; Provider Outbound SNAT with Shared-services-snat-block on Shared-services-conn; nothing on Riyadh-internet-conn); then the project with the three connections and Riyadh-public-block.
Riyadh-wan-conn
Type ................................ Centralized
Tier-0 Gateway ...................... Riyadh-wan-vrf (VRF)
Remote Networks ..................... 10.100.0.0/16
External IP Blocks .................. Riyadh-public-block_20.0.0.0/16
Provider Outbound SNAT .............. Off
Private – Transit Gateway IP Blocks . On
Shared-services-conn
Type ................................ Centralized
Tier-0 Gateway ...................... Shared-services-T0 (Tier-0)
Remote Networks ..................... 10.33.0.0/24
External IP Blocks .................. Shared-services-snat-block_10.99.0.0/24
Provider Outbound SNAT .............. On
SNAT IP Blocks ...................... Shared-services-snat-block_10.99.0.0/24
Riyadh-internet-conn
Type ................................ Centralized
Tier-0 Gateway ...................... Internet-T0 (Tier-0)
Remote Networks ..................... (empty — implicit default route)
External IP Blocks .................. Riyadh-public-block_20.0.0.0/16
Provider Outbound SNAT .............. Off
Private – Transit Gateway IP Blocks . OffTenant next. Attach the second and third connections to the Default Transit Gateway (Networking > Transit Gateways > ⋮ > Edit, then wait for the status to change from In Progress to Success); set the profile (Auto SNAT block Riyadh-public-block, Private-TGW block Riyadh-private-tgw-block_172.16.10.0/24, Default Outbound NAT on); then add the advertise rule of type Private-Transit Gateway for Riyadh-wan-conn under Routing and Forwarding > Advertise Rules.
Note:Shared-services-snat-blockis authorized on the connection and does not need to be assigned to the project. The tenant never allocates from it. It is a provider-owned pool with one job: to be the SNAT target onShared-services-connand to be advertised towardShared-services-T0so that replies come back.
What NSX Programs Automatically
- On the VPC gateway: the Default Outbound NAT rule for the VPC, applied to Private-VPC traffic, translating to
Riyadh-public-block. - On the CTGW: the same Default Outbound NAT rule for Private-TGW traffic, translating to
Riyadh-public-block; plus, scoped toShared-services-connonly, a Provider SNAT rule translating any source outsideShared-services-snat-blockto an address fromShared-services-snat-block, and a No-SNAT rule for sources already inside it. Nothing is created for the other two connections. - Route advertisement: toward
Riyadh-wan-vrf, the public prefixes fromRiyadh-public-blockand the Private-TGW block172.16.10.0/24as atgwsroute; towardShared-services-T0, prefixes fromShared-services-snat-block, which is what brings replies to the SNAT addresses back; towardInternet-T0, the public prefixes fromRiyadh-public-blockonly.
Packet Walks: All Nine Combinations
Three subnet types and three exits give nine combinations. The matrix shows all of them; the hop tables that follow trace the two private workloads, which are the ones the settings act on.
| Workload subnet | → Riyadh-wan-conn (enterprise DC) |
→ Shared-services-conn (provider services) |
→ Riyadh-internet-conn (Internet) |
|---|---|---|---|
Public, Riyadh-web-01 20.0.1.5 |
No NAT; the DC sees 20.0.1.5 |
Provider SNAT at the CTGW; the services see 10.99.0.x |
No NAT; the Internet sees 20.0.1.5 |
Private-TGW, Riyadh-app-01 172.16.10.5 |
Advertised, no NAT; the DC sees 172.16.10.5 |
Provider SNAT at the CTGW; the services see 10.99.0.x |
Default Outbound NAT at the CTGW; the Internet sees 20.0.0.x |
Private-VPC, Riyadh-db-01 192.168.10.5 |
Default Outbound NAT at the VPC gateway; the DC sees 20.0.0.x |
Default Outbound NAT at the VPC gateway, then Provider SNAT at the CTGW; the services see 10.99.0.x |
Default Outbound NAT at the VPC gateway; the Internet sees 20.0.0.x |
Two product behaviours explain the matrix:
Note: By default, traffic from Private-TGW subnets is actively dropped on an External Connection whenever its source is not authorized there, as it would be if the public block were not authorized on the WAN connection. That is why the advertisement is needed onRiyadh-wan-conn: without it, Private-TGW traffic toward the DC is translated by Default Outbound NAT to20.0.0.xor, with Default Outbound NAT off, dropped.
Note: With Default Outbound NAT, traffic from a Private-VPC subnet can reach the Transit Gateway and be provider-SNATed. That is the double translation in the Private-VPC → Shared-services-conn cell: once at the VPC gateway, once more at the CTGW.The Private-TGW workload, Riyadh-app-01

Path A — to the enterprise DC (10.100.0.10)
| Hop | Source → Destination | What happens |
|---|---|---|
| 1. VM sends | 172.16.10.5 → 10.100.0.10 |
Leaves the Private-TGW subnet |
| 2. VPC gateway | 172.16.10.5 → 10.100.0.10 |
No translation: for a Private-TGW subnet the Default Outbound NAT rule is at the CTGW (Rule 1) |
| 3. CTGW route lookup | – | Rule 2: 10.100.0.10 matches the remote network 10.100.0.0/16 of Riyadh-wan-conn |
| 4. CTGW source decision | 172.16.10.5 → 10.100.0.10 |
Rule 3: the source is inside the block advertised on this connection, so it is forwarded untranslated. Without the advertisement it would be translated by Default Outbound NAT or, with Default Outbound NAT off, dropped |
5. Exit to Riyadh-wan-vrf |
172.16.10.5 → 10.100.0.10 |
The VRF holds 172.16.10.0/24 as a tgws route; the DC sees and answers the real private address |
| 6. Reply | 10.100.0.10 → 172.16.10.5 |
Plain routing back; no NAT state |
Path B — to the provider services (10.33.0.10)
| Hop | Source → Destination | What happens |
|---|---|---|
| 1. VM sends | 172.16.10.5 → 10.33.0.10 |
Leaves the same subnet |
| 2. CTGW route lookup | – | 10.33.0.10 matches the remote network 10.33.0.0/24 of Shared-services-conn |
| 3. CTGW source check | – | Provider SNAT is on here; 172.16.10.5 is compared with the authorized block 10.99.0.0/24: no match |
| 4. CTGW Provider SNAT | 10.99.0.x → 10.33.0.10 |
Translated once, to the SNAT IP Block Shared-services-snat-block. The Default Outbound NAT rule is not involved on this path |
5. Exit to Shared-services-T0 |
10.99.0.x → 10.33.0.10 |
The services network sees a provider-owned address |
| 6. Reply | 10.33.0.10 → 10.99.0.x |
Returns to the CTGW through Shared-services-T0; the CTGW reverses the translation and delivers 10.33.0.10 → 172.16.10.5 |
Path C — to the Internet (1.1.1.1)
| Hop | Source → Destination | What happens |
|---|---|---|
| 1. VM sends | 172.16.10.5 → 1.1.1.1 |
Leaves the same subnet |
| 2. CTGW route lookup | – | No specific match: default route through Riyadh-internet-conn |
| 3. CTGW Default Outbound NAT | 20.0.0.x → 1.1.1.1 |
Rule 1 at the CTGW: one translation to the Auto SNAT block Riyadh-public-block. Provider SNAT is off and nothing is advertised on this connection |
4. Exit to Internet-T0 |
20.0.0.x → 1.1.1.1 |
Leaves with an address Riyadh-internet-conn authorizes |
The Private-VPC workload, Riyadh-db-01

Paths A and C — to the enterprise DC and to the Internet. The VPC gateway translates the source to 20.0.0.x in the same way on both paths. Both Riyadh-wan-conn and Riyadh-internet-conn authorize Riyadh-public-block, so the packet passes with no further translation. The DC therefore sees this workload as 20.0.0.x, not as 192.168.10.5: the advertisement on Riyadh-wan-conn covers the Private-TGW block only, and a Private-VPC address is gone before the CTGW is reached (Rule 1).
Path B — to the provider services (10.33.0.10), the double translation
| Hop | Source → Destination | What happens |
|---|---|---|
| 1. VM sends | 192.168.10.5 → 10.33.0.10 |
Leaves the Private-VPC subnet |
| 2. VPC gateway | 20.0.0.x → 10.33.0.10 |
Rule 1: Default Outbound NAT translates the source to the Auto SNAT block Riyadh-public-block. This is what lets the packet reach the CTGW at all |
| 3. CTGW route lookup | – | 10.33.0.10 matches the remote network of Shared-services-conn |
| 4. CTGW source check | – | Provider SNAT is on here; 20.0.0.x is compared with the authorized block 10.99.0.0/24: no match |
| 5. CTGW Provider SNAT | 10.99.0.x → 10.33.0.10 |
Second translation, to Shared-services-snat-block |
6. Exit to Shared-services-T0 |
10.99.0.x → 10.33.0.10 |
The services network sees the same provider pool it sees for every workload of this tenant |
| 7. Reply | 10.33.0.10 → 10.99.0.x |
The CTGW reverses its translation, the VPC gateway reverses its own, and the VM receives 10.33.0.10 → 192.168.10.5 |
The public workload, Riyadh-web-01
Its address 20.0.1.5 belongs to Riyadh-public-block, which both Riyadh-wan-conn and Riyadh-internet-conn authorize, so it reaches the DC and the Internet untranslated. Toward Shared-services-conn it is translated by Provider SNAT like everything else, because 20.0.0.0/16 is not an authorized block on that connection; the services see 10.99.0.x.
Verification
Test each workload toward each exit. The expected source at the far end is the matrix above:
# Riyadh-app-01 (172.16.10.5, Private-TGW)
ping 10.100.0.10 # DC sees 172.16.10.5 — no translation
ping 10.33.0.10 # services see 10.99.0.x — one translation (Provider SNAT, CTGW)
ping 1.1.1.1 # Internet sees 20.0.0.x — one translation (Default Outbound NAT, CTGW)
# Riyadh-db-01 (192.168.10.5, Private-VPC)
ping 10.100.0.10 # DC sees 20.0.0.x — one translation (VPC gateway)
ping 10.33.0.10 # services see 10.99.0.x — two translations (VPC gateway, then CTGW)
ping 1.1.1.1 # Internet sees 20.0.0.x — one translation (VPC gateway)
# Riyadh-web-01 (20.0.1.5, public)
ping 10.100.0.10 # DC sees 20.0.1.5 — no translation
ping 10.33.0.10 # services see 10.99.0.x — one translation (Provider SNAT, CTGW)
ping 1.1.1.1 # Internet sees 20.0.1.5 — no translationOn the provider side, Riyadh-wan-vrf should hold 172.16.10.0/24 as a tgws route alongside the Riyadh-public-block prefixes, Shared-services-T0 should hold the Shared-services-snat-block prefixes, and Internet-T0 should hold Riyadh-public-block only.
Enterprise Nuances and Edge Cases
One public block on two connections. Authorizing Riyadh-public-block on both Riyadh-wan-conn and Riyadh-internet-conn is a deliberate simplification: the public subnet is reachable from both the DC and the Internet, and Private-VPC workloads appear to the DC under the Auto SNAT address. If the DC must see Private-VPC workloads under a dedicated range, use two blocks and Provider SNAT on Riyadh-wan-conn, as in use case A (Part 2). That means giving up the advertisement on that connection, because the two settings cannot coexist.
Provider SNAT on the services connection catches the public subnet too. The public block is not authorized on Shared-services-conn, so public-subnet traffic is translated toward the services like everything else. The services network sees this tenant, and every other tenant configured the same way, only through provider-owned pools. That is the point of the design. Any services-side policy keyed on source address should reference the provider pool 10.99.0.0/24, never tenant addressing.
The services SNAT pool never touches the project. Shared-services-snat-block is a provider-owned block; the tenant never allocates from it and it does not need to be assigned to the project. Advertising it toward Shared-services-T0 is what makes the replies return.
Subnet placement is an exit-visibility decision. The Private-TGW workload is translated exactly once on every path except the DC path, where it is not translated at all. The Private-VPC workload is translated at the VPC gateway on every path and a second time toward the services. Placing a workload on one subnet type or the other therefore decides what each exit is allowed to see, not only about scoping inside the VPC.
Attaching a third connection changes nothing on the first two. Every advanced setting is scoped to its own connection. Adding Shared-services-conn with Provider SNAT did not alter the advertisement on Riyadh-wan-conn or the Default Outbound NAT behaviour toward Riyadh-internet-conn.
The routing constraints still apply. Three connections means one default route and two connections with explicit, non-overlapping remote networks. Remote networks must be unique per connection; listing a prefix on two connections is not a supported way to get ECMP.
What Comes Next
Four designs, three source-address behaviours, one set of rules. Part 5 puts the designs side by side, states the two constraints that apply to all of them, and turns the material into operating practice: changing the Auto SNAT block on a live profile, moving a connection between Provider SNAT and advertisement, and what to verify after every change.
Intro: Tenant Topology for Cloud Providers running VCF9.1 · 1. Architecture and Foundations · 2. Use-Case A Private-VPC Connectivity to External Networks (Translated) · 3. Use-Case B&C Private-TGW Connectivity to External Networks (Routed or Translated) · 4. Use-Case D One Tenant, Three Exits · 5. Operating the Designs