hyperboria / bugs

Peer-to-peer IPv6 networking, secure and near-zero-conf.
153 stars 17 forks source link

What are the differences between ipop and cjdns? #118

Open zenny opened 8 years ago

zenny commented 8 years ago

Came across https://github.com/ipop-project and http://upcommons.upc.edu/bitstream/handle/2099.1/21475/92969.pdf, and would love to know how cjdns fares in scalaebility of nodes and latency per se?

This question is inspired by https://github.com/hyperboria/cjdns/issues/112

ansuz commented 8 years ago

at a glance, I can say that cjdns only does peer discovery over local networks (ethernet, WLAN).

We use peer in the sense of another node in the network with whom we share a direct connection

Cjdns does not facilitate peering between indirect nodes in the network because it was designed to function as a mesh network, not just an overlay. That means that it should work over any medium for which an adaptor has been written (currently raw ethernet frames and UDP).

With the UDP adaptor it can function as an overlay running on the current internet, and we're using that to bootstrap the network, however, it is not limited to this, and so the connection model seems different.

I had not heard of IPOP before this. From what I can tell, they're looking to be able to function over a wider range of interfaces (XMPP, WebRTC, etc). Cjdns could do this in theory, but the intent is to provide the best performance possible while encrypting all content.

I don't see anything on their end about generating IP addresses. Cjdns uses cryptographically generated IPv6 addresses, and provides strong guarantees that if you are able to connect to an address, then the node with that address is in possession of the corresponding private key. This is a core feature of cjdns.

Overall, cjdns seems to address a different use case, focusing more on cryptography and less on peer discovery. It tends to require a little bit more configuration and social interaction between node operators. This was a design decision.

I am sure there are other differences. It is entirely possible I do not understand IPOP very well. I'd be very interested in receiving more input from someone with better knowledge of their protocol.