Replies: 4 comments
-
I had been spending some thoughts regarding what approach we should take regarding implementation of QUIC. Questions and Considerations:
It is a very tough choice, using Are the performance benefits worth the cost, I would beg to differ at this point. Rather I would like to go first with the python native approach resulting in a much faster implementation of QUIC, and it has all the features 0-RTT, HTTP/3 support etc. If and when we see a requirement of bringing high-performance QUIC transport, then we can come back here, curse me and start development of a new transport. |
Beta Was this translation helpful? Give feedback.
-
@AkMo3 : Thank you so much for the incredibly thorough and thoughtful breakdown — this is excellent work, and I really appreciate the depth of analysis you’ve brought in here. You've laid out the trade-offs between the two implementation options for QUIC with great clarity, especially factoring in performance, interoperability, and maintainability. The proposed path — starting with On the same note, thanks for also sharing your feedback on the existing efforts on QUIC transport layer within Py-libp2p. Here's why I strongly agree with your approach:
Overall, I’m fully aligned with your proposal to go ahead with Please go ahead and start shaping the transport layer around Let’s keep tracking performance metrics, and if any bottlenecks arise during usage or scaling, we can revisit and prioritize optimization. Thanks again for the clarity and leadership here — delighted to see this move forward. |
Beta Was this translation helpful? Give feedback.
-
Thanks for your thorough review, @AkMo3. I agree with your and @seetadev's view. |
Beta Was this translation helpful? Give feedback.
-
@pacrob : Thank you Paul for your kind feedback and pointers. Appreciate it. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Dear Py-libp2p team members,
Following the initial review and interoperability testing phase, I’d like to outline the next phase of the QUIC implementation and development work. This phase will be key to strengthening our Python-based QUIC transport for libp2p and aligning it better with broader ecosystem efforts.
After completing the MVP and interoperability testing, our focus should be on implementing QUIC more robustly by leveraging one of the following lower-level approaches:
Depending on your preference and what you find easier to work with, we can decide the exact pathway — all three options are valid and have their own trade-offs in terms of performance, maintenance, and compatibility.
Additionally, it’s worth keeping an eye on some related efforts across the libp2p ecosystem, which could significantly inform and refine our own design:
zig-msquic + zig-libp2p:
There’s work happening to wrap
ms-quic
using Zig’s FFI capabilities for use within Zig-libp2p: please visit https://github.com/MarcoPolo/zig-libp2p➔ This could offer valuable insights into performance optimization and interoperability techniques, and potentially inspire native bindings strategies for Python.
➔ Aleksey (@flcl42) is also exploring MSQUIC integration in
dotnet-libp2p
, providing another parallel track we can learn from: please visit https://github.com/NethermindEth/dotnet-libp2p/tree/main and Quic on Windows should use OpenSSL version NethermindEth/dotnet-libp2p#45Cayman’s js-libp2p-quic (Rust-backed for JS stack):
Cayman (@wemeetagain) has built a Rust-based QUIC transport for
js-libp2p
: please visit https://github.com/ChainSafe/js-libp2p-quic➔ This can be very useful to validate handshake compatibility and muxing behavior across different runtimes, which will become crucial once we do transport interop with
js-libp2p
.➔ Great work by Cayman that we can learn from as we aim for smooth cross-language interoperability.
Waku team's ngtcp2 bindings in Nim:
Our collaborators at Waku are wrapping
ngtcp2
(another QUIC implementation) in Nim using OpenSSL.➔ See here: Waku Nim-libp2p QUIC Transport
➔ Their approach will be a wonderful reference, especially if we consider evaluating other QUIC backend libraries for our use cases or future interop scenarios.
➔ Hats off to @richard-ramos and @vladopajic for their great work here.
Immediate next steps for you:
Beta Was this translation helpful? Give feedback.
All reactions