-
Notifications
You must be signed in to change notification settings - Fork 46
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
IPv8 v3.0, IPv6 support and network interface refactoring #615
Comments
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
Here is the class diagram (using CurrentProposed |
With #830, the first (easy) step is complete: we can now send and receive IPv6 interface packets. Remaining:
|
I believe we can maintain full backwards compatibilty by making sure all introduction requests and responses using IPv4 still use the old messages. We can have both types (new and old) of introduction requests and response messages call their respective Edit: pucturing will also have to change. |
Naively implementing these new messages turns the Some positive news is that, due to the |
Update on the current best plan to make sure the new-style introduction messages don't spaghettify the community logic: Both the IntroductionRequest and IntroductionResponse have unused bits (in the
Naturally, receiving any new-style introduction logic from a peer automatically flags it as supporting new style logic. This turns most of the connection management that would've had to reside in the |
With #913 merged we now move into the final phase: porting the DHTCommunity and the TunnelCommunity. With that, after an entire year of development, my involvement with this issue is also over. |
Once the last component has been ported, the configuration should also support specifying the address and port of the IPv6 interface. Lines 79 to 80 in 76da077
In turn, the documentation should also be updated: https://github.com/Tribler/py-ipv8/blob/master/doc/reference/configuration.rst |
What is preventing from doing the switch? Asking because if what is left isn't too big of a task then I might be interested in tackling it. |
@Solomon1732 The only Community left to port is the anonymization Community (the If you don't need the anonymization, you can disable it and locally revert this commit and see IPv8 automatically hand off to IPv6. |
Not to forget more closely implementing the V3 hidden services protocol. |
[Memo] The test suite can be run using IPv6 fake addresses by changing the following code from py-ipv8/ipv8/test/mocking/endpoint.py Lines 74 to 76 in fcf2c79
|
2021 update: This issue is almost resolved. The base
Community
class can now handle IPv6. TheTunnelCommunity
is the only component left in IPv8 that is required to be ported.Old O.P.
Title is slightly suggestive: only one change is needed for all three
Right now,
Peer
objects have a most up to date address (.address
). In the future we will want to support multiple network interfaces (requiring multiple sockets, which probably need to be separately punctured).The biggest change to our current codebase will be the refactoring of
Peer
objects to support a set/list of interface specifications. ThePeer
object will have to be in charge of implementing asend()
andpuncture()
method (opening at least one communication channel), this is currently handled by theCommunity
class.Pros:
Cons:
Breaking change to all existing code.EDIT: No breaking change was requiredThe text was updated successfully, but these errors were encountered: