paths and harness
Architecture
Same relay, two ways in. This lab builds the PrivateLink path; the TGW
inspection path already exists in your hub.
Two paths, one stream
Teal = PrivateLink (consumer + provider). Amber = TGW hairpin (consumer + network hub + provider). Icons from aws-icons.
Path A
PrivateLink
EP → NLB → relay · harness adds this
Path B
TGW + inspection
hairpin via NFW · existing hub
Path C
TGW without inspection
diagram only · not measured live
Path A uses the endpoint service allowed-principals list (consumer account). No route between VPC CIDRs.
Path B targets the relay private IP. Same relay.py process as Path A.
Path C is the mental model for the hairpin tax (extra TGW hop + firewall). This lab does not re-associate spoke route tables during a run.
What the harness adds
Provider
Relay EC2 + relay.py
ingest + fan-out on :9000
Provider
NLB + endpoint service
allows consumer principal
Consumer
Interface endpoint
DNS name used by sub.py
Consumer
sub.py
subscribe · PING/PONG RTT · rate
Naming
| Thing |
Value |
| Resource prefix |
plvtgw- |
| Tag |
demo=pl-vs-inspected-tgw |
| Stream port |
9000 |
Use the tag for teardown discovery if state files are lost.
Client IP
| Path |
What the relay sees |
| TGW |
Consumer host private IP |
| PrivateLink |
NLB node address (unless Proxy Protocol v2 on the target group) |
Proxy Protocol matters for audit logging. Optional for the latency comparison.
Read next