Encryption.
EDIT: To elaborate, in some mesh protocols (such as cjdns), all messages are encrypted from the source to the destination. This prevents third parties from snooping on the data. Not all mesh protocols do this though, and some don't encrypt or make any effort to protect your data.
What ARM board were you running it on? I've only ever run into serious performance issues with old MIPS/ARM boards, even a pentium 4 can move 427mbps. The latency increase from cjdns is also fairly imperceptible, I've found it to be around 0.271 to 0.180ms, which is small enough that virtually nothing will be affected by latency.
If you were using say a Raspi, recent optimizations have gotten speeds up to around 8mbps, and you can check out more benchmarks, look at this line for the throughput that you are likely to get IRL.
>This is the switch configuration so this indicates expected switch throughput:
Overall, there is still a lot of optimizations that can be done on ARM & MIPS for performance, but if your looking to make high bandwidth nodes, an old laptop (say a P2 or a P3) with some wireless NICs is going to be a better node than a raspi, especially since it has some battery backup built in.
Hey there /u/twignewton, a meshnet is a network where most users of the network are connected to multiple other users of said network. By connecting to multiple other users, mesh networks increase connection reliability, reduce latency and (depending on how you set it up) enable increased network speed.
For a meshnet to work, you should connect to other users who are already on the network and are ideally close by. CJDNS supports connecting over raw ethernet frames over ethernet cables, wireless links, etc.
Ubuntu can definitely run CJDNS, the CJDNS readme is a great walkthrough on how to get CJDNS and get it up and running.
Additionally, if there is no one close by who you can peer with, you can peer over the internet using the UDP interface in CJDNS once you locate a willing peer who is already on the network. This particular type of peering is a fallback device designed for helping you to start a meshnet locally, please make sure to search for local peers prior to UDP peering!
Hey, first lets try & get your tun adapter up, but I'd recommend you try following the instructions in the main repository to update cjdns.
Run these commands to set up & debug your TUN device:
> sudo /sbin/ip addr add <your ipv6 address>/8 dev cjdroute0
> sudo /sbin/ip link set cjdroute0 up
If you could paste here what the results were, that'd be a big help in determining if its an issue with Tun adapter creation or if something else is going on.