A way to do an open and permissionless mesh network
12 points by fiatjaf
12 points by fiatjaf
This sounds something like Yggdrasil or, previously, cjdns. Not necessarily in the specific implementation details, but re: the broader goals.
Yes, the goals are clear and shared, but the novelty here (or so I think) is the routing method, which is based on the assumption that DHTs don't scale basically.
Yggdrasil does not assume that DHTs scale. Instead, as they have blogged, they sacrifice the requirement that every route is efficient:
Yggdrasil is not guaranteed to find the shortest path when routing a packet. Instead, it merely tries to guarantee that it can find some path for any network, and we observe that it tends to find a good path for the special case of small-world / scale-free networks.
I don’t think it’s possible for a network to be completely permissionless: you always have to rely on at least one other person to provide connectivity, and there must be mechanisms to curtail abuse. But it ought to be possible for me to share my connectivity with you without having to get extra permission beyond what I already have.
A classic problem with source routing is DoS attacks that waste resources by sending packets round in loops. One way to tackle that is by giving routers a more structured model of the network topology, so they know which links travel towards or away from the core, and thereby can enforce valley-free paths. However that implies that the network has a hierarchial structure: problematic. An idea I like is to have islands of flat mesh connectivity at smaller scales where it’s ok for every node to have a view of its entire region (detailed enough that path loops can be stopped), and use a loose hierarchy to link islands together. The hierarchy doesn’t have to be monolithic if everything supports multipath connectivity: there can be multiple apexes (analogous to default-free zones) and edge devices can choose whichever subset gets the job done.
One of the designs that came out of the DARPA clean-slate network research programme about 20 years ago is SCION which is definitely not permissionless. It’s very hierarchial without local meshes, but it’s an interesting example of an architecture based on source routing that isn’t anything like the classic peer-to-peer-ish designs.
I am working in the environment of PacketRadio, Meshtastic/Meshcore, ISM, LoRa so almost uncontrolled networking over shared rf medium. Coming from the lowest depths of the physical layer and moving upwards, I was hoping some sophisticated arbitration schemes would have been worked out by now. To my incomplete knowledge there are only intricate centralised schemes like mobile basestations or wifi 802.11 (does wpa3 even solve deauth yet?) and the rediscovery that flood routing (Meshtastic) wastes too much airtime, leading to Meshcom's routing.
Does routing need to be seen seperate from nice/naughty node arbitration? There wouldn't happen to be a solution?