Just use raw IPv6 with an authenticated mesh protocol: https://fedoramagazine.org/decentralize-common-fedora-apps-cjdns/