graph G {
    node [ shape="box"];
    rankdir="LR";


    v6host1 [ label="IPv6 only host"];
    v6host2 [ label="IPv6 only host"];
    v6host3 [ label="IPv6 only host"];

    v6host12 [ label="IPv6 only host"];
    v6host22 [ label="IPv6 only host"];
    v6host32 [ label="IPv6 only host"];

    v4host1 [ label="IPv4 only host"];
    v4host2 [ label="IPv4 only host"];
    v4host3 [ label="IPv4 only host"];

    v4host12 [ label="IPv4 only host"];
    v4host22 [ label="IPv4 only host"];
    v4host32 [ label="IPv4 only host"];

    switchv6 [ label="Network Switch", shape="oval" ];
    switchv4 [ label="Network Switch", shape="oval" ];
    switchboth [ label="Network Switch with NAT64", shape="oval" ];

    nat64gw [ label="NAT64 translator", rank=max ];

    subgraph cluster_seperate {
        label="Separated IPv6/IPv4 networks";

        rank="max";

        v6host1--switchv6;
        v6host2--switchv6;
        v6host3--switchv6;

        v4host1--switchv4;
        v4host2--switchv4;
        v4host3--switchv4;

        switchv4--nat64gw;
        switchv6--nat64gw;
    };

    subgraph cluster_mixed {
        label="Mixed IPv6/IPv4 networks";
        rank="min";
        v6host12--switchboth;
        v6host22--switchboth;
        v6host32--switchboth;

        v4host12--switchboth;
        v4host22--switchboth;
        v4host32--switchboth;

     }

}
