digraph G { node [ shape=box ] # rankdir=LR; label="Hostnames for IPv6 only hosts" serverv6 [ label="Server (IPv6 only)" ]; proxy [ label="Proxy (IPv4+IPv6)" ]; http [ label="HTTP(s) for\nwww.example.com" ] dns [ label="DNS for www.example.com" ] dnsv6 [ label="v6.example.com" ] dnsv6->serverv6 [ label="Only AAAA entry configured" ] clientv4 [ label="IPv4 client" ]; clientv6 [ label="IPv6 client" ]; clientdual [ label="Dual Stack client" ]; dns->proxy [ label="A entry points to proxy" style=dashed ] dns->serverv6 [ label="AAAA entry points to the server" style=dashed ] {clientv4,clientv6,clientdual}->dns [ label="1. perform a DNS lookup" ] clientdual->{proxy,serverv6} [ label="2. Accesses either way" style=dashed ] clientv4->proxy [ label="2. Accesses server via proxy" ] clientv6->serverv6 [ label="2. Accesses server directly" ] proxy->serverv6 [ label="Forwards HTTP/HTTPS requests" ] serverv6->http [ label="Serves content for" ] {clientv6,clientdual}->serverv6 [ label="3. Access via\nv6.example.com\nAlways directly" ] }