digraph G { node [ shape=box ] #rankdir=LR; clients [ label="Clients" ] subgraph cluster_internet { label="Internet" dns1 [ label="DNS Server\nPublic IPv6\nPublic IPv4" ] dns2 [ label="DNS Server\nPublic Address\nPrivate Address\n(v6 or v4)" ] } subgraph cluster_v6only { dnsv6 [ label="DNS Server\nIPv6 only" ] } subgraph cluster_private { dnspriv [ label="DNS Server\nPrivate IPv4" ] } dns1->dnsv6 [ label="Forward DNS query via IPv6" ] dns2->dnspriv [ label="Forward DNS query via private IPv4" ] clients->dns2 [ label="Query via IPv6/IPv4" ] clients->dns1 [ label="Query via IPv4" ] clients->dnsv6 [ label="Query via IPv6" ] }