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

py-ipv8 questions list #10

Closed jdonszelmann closed 5 years ago

jdonszelmann commented 5 years ago

List of things we need to ask the py-ipv8 people

NULLx76 commented 5 years ago

IPv6

The problem

py-ipv8 does not seem to support IPv6 for some unknown reason. It also appears to be quite hardcoded into it [1].

Suggested solution

My suggestion is to use a special reserved IPv4 address to indicate that the program should look for the ipv6 address later in the payload, as it will clearly not fit in the currently allocated space for IP address. The benefit of using a reserved ipv4 address for this purpose as opposed to a flag bit is that so the flag bits could be used for other purposes down the line.

Remarks

As everyone gets their own IPv6 address NAT hole puncturing should not be necessary for connecting clients together if they can use IPv6.

dsluijk commented 5 years ago

Other Transport Protocols

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.

dsluijk commented 5 years ago

Closing this as it's better to split it up