Closed jdonszelmann closed 5 years ago
py-ipv8 does not seem to support IPv6 for some unknown reason. It also appears to be quite hardcoded into it [1].
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.
As everyone gets their own IPv6 address NAT hole puncturing should not be necessary for connecting clients together if they can use IPv6.
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.
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.
Closing this as it's better to split it up
List of things we need to ask the py-ipv8 people