digraph G { node [ shape=box, fontcolor="#ffffff", color="#40a9e3", style="filled" ] label="The VPN IPv6 IoT Router Box (VIIRB) in action" node [ shape=box ] # rankdir=LR; # subgraph cluster_internet { ipv6internet [ label="The IPv6 Internet" shape=oval ] ipv4internet [ label="The IPv4 Internet" shape=oval ] ipv6vpn [ label="IPv6VPN.ch\nIPv6 via wireguard" shape=oval ] # } # subgraph cluster_location { viirb [ label="The VIIRB" color="#ee1100" ]; # subgraph cluster_lan { lan [ label="Your LAN" ]; lanclients [ label="Clients in the lan" ] # } # subgraph cluster_wifi { wificlients [ label="WiFi clients" ] wifi [ label="IPv6 only wifi: 'IPv6 everywhere'" shape=oval ] # } # } viirb->ipv4internet [ label="Connected via LAN" ] ipv4internet->ipv6vpn [ label="Connected to" ] viirb->lan [ label="1. Gets IPv4 via cable" ] viirb->ipv6vpn [ label="2. Connect the VPN to IPv6VPN.ch" ] ipv6vpn->viirb [ label="3. Routes /48 IPv6 network to VIIRB" ] viirb->lan [ label="4. Announce IPv6 availability" ] lanclients->lan [ label="5. Assign themselves an IPv6 address" ] lanclients->ipv6internet [ label="6. Connect via VIIRB to access" ] viirb->wifi [ label="A. Provides IPv6 only WiFi" ] wificlients->wifi [ label="B. Assign IPv6 address themselves" ] wificlients->ipv6internet [ label="C. Connect via VIIRB to access" ] wificlients->ipv4internet [ label="D. Use DNS64/NAT64 to access" ] ipv6vpn->ipv6internet [ label="Is connected to" ] ipv6internet->{wificlients,lanclients} [ label="SSH, HTTP, HTTPS\nports are open" ] }