digraph G { node [ shape=box, fontcolor="#ffffff", color="#40a9e3", style="filled" ] label="IPv4 as a service\nby ungleich.ch" # rankdir=LR # subgraph cluster_v6_vm { # label="IPv6 only VM" # ipv6onlyvm [ label="IPv6 only VM" color="#ee1100" ] # } subgraph cluster_client { label="Anywhere" client [ label="Server, VM, Notebook, Desktop" color="#ee1100" ] # vm [ label="Virtual Machine" color="#ee1100" ] # server [ label="Server" color="#ee1100" ] # notebook [ label="Notebook" color="#ee1100" ] # desktop [ label="Desktop" color="#ee1100" ] } subgraph cluster_internet { label="The Internet" v4host [ label="IPv4 host\na.b.c.d" shape=oval ] v6host [ label="IPv6 host" shape=oval ] } subgraph cluster_dcl { label="Data Center Light in Switzerland" vpnserver [ label="VPN Server" ] nat64 [ label="NAT64 translator" ] } # {vm,server,notebook,desktop}->vpnserver [ label="Connect to VPN" ] # vpnserver->{vm,server,notebook,desktop} [ label="Route static /48 IPv6 Network\n2001:db8:42::/48" ] # nat64->{vm,server,notebook,desktop} [ label="Maps 192.0.2.1\nto 2001:db8:42:b00::192.0.2.1/96" ] # v6host->{vm,server,notebook,desktop} [ label="Native access to 2001:db8:42::/48" ] client->vpnserver [ label="Connect to VPN" ] vpnserver->client [ label="Route static /48 IPv6 Network\n2001:db8:42::/48" ] nat64->client [ label="Maps 192.0.2.1\nto 2001:db8:42:b00::192.0.2.1/96" ] v4host->nat64 [ label="Accesses 192.0.2.1" ] v4host->client [ label="Accesses 192.0.2.1" style=dashed ] v6host->client [ label="Native access to 2001:db8:42::/48" ] client->v4host [ label="Access any IPv4 host" style=dashed ] client->nat64 [ label="Access any IPv4 host\nvia 2001:db:c001::a.b.c.d/96" ] }