Skip to content
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

Implement discv5 sub-protocol data transmission PoC #1734

Open
kdeme opened this issue Sep 7, 2023 · 2 comments
Open

Implement discv5 sub-protocol data transmission PoC #1734

kdeme opened this issue Sep 7, 2023 · 2 comments
Labels

Comments

@kdeme
Copy link
Contributor

kdeme commented Sep 7, 2023

Implementation + benchmarking of PoC for discv5 sub-protocol data transmission in combination with uTP.

See also ethereum/devp2p#229

@kdeme kdeme added the Fluffy label Sep 7, 2023
@mynameisdaniil mynameisdaniil self-assigned this Sep 19, 2023
@kdeme
Copy link
Contributor Author

kdeme commented Sep 19, 2023

@kdeme
Copy link
Contributor Author

kdeme commented Sep 21, 2023

I think the steps to take for this task should/could be something similar like this:

  • Read & understand the discv5-subprotocol draft spec and see if there are no big questions or blockers there. Also understand the reasoning why we need this. And if immediate suggestions are there, feel free to give them.
  • Implement the discv5-subprotocol spec as a standalone code block. It should be agnostic to how it gets it sessions secrets, consider them out-of-band. Have some basic unit testing for this functionality.
  • Implement shared socket (Packet muxer, or rather different handlers per packet). To allow discv5 and discv5 sub-protocol on the same UDP socket. Requires some basic unit tests.
  • Benchmark performance of uTP over discv5 vs uTP over discv5-subprotocol with session setup through discv5 talkreq/talkresp. The uTP based fileserver draft specification can be used for this. This will require:
    • uTP over discv5-subprotocol integration
    • fileserver protocol implementation (+ unittests)
    • [Optional?] benchmarking I: benchmark against go implementation to verify if it is in the same ballpark.
    • Have a fileserver protocol that works over discv5 similar like findcontent/content request/response
    • benchmarking II: benchmark the discv5 version vs the discv5-subprotocol version: measure both throughput vs latency (as the latter will have more RTT, you probably want to introduce real delays here).
    • Potentially revise the fileserver protocol with something with less RTT. (Perhaps this should be moved earlier, I do have some ideas here :-))

At any give step it should be tracked when there are blockers or if you see potential improvements to suggest to spec. This can be done here or in separate issues.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants