ip-v8 / rust-ipv8

Rust implementation of the IPv8 application.
https://ip-v8.github.io/rust-ipv8/ipv8
GNU Lesser General Public License v3.0
13 stars 2 forks source link

Other Transport Protocols #12

Open dsluijk opened 5 years ago

dsluijk commented 5 years ago

The problem

IPv8 has no realistic way of using a different transport protocol than UDP. This is desired for multiple reasons.

The biggest reason is to allow connections from the web. If you would allow multiple protocols web can be connected trough WebRTC, which would open a whole range of new use cases. The second reason is connectablility. A lot of networks (especially corporate) filter out UDP. Having more transport protocols would mean that you could circumvent a lot of these blockades, making it possible to connect a lot more devices to the network.

Suggested solution

You could add a list of supported protocols in the introduction requests, which the other node would choose one to create the connection, this is similar to how TLS agrees on the algorithm to use. After this is decided both nodes attempt to switch to the used protocol. This would give both of the nodes the ability to choose the protocols to be used. This would also add the ability to mix and match the different protocols, depending on the situation.

ichorid commented 5 years ago

While producing your design, please keep this issue in mind. However, this should only be done after everything else is stable and going.

ichorid commented 5 years ago

Would you kindly look into this paper? I guess you were interested in Pastry DHT. Well, that paper is even more promising in regards to proper message routing.

(It is funny that its author essentially employs the Watts-Strogatz model, yet never mentions it in the paper...)

dsluijk commented 5 years ago

Thank you, I will add it to my reading list