Summary
Implement the QUIC transport for rust-libp2p.
Done criteria
- Quic can be used as a transport in the
Swarm for communication between nodes that can directly reach each other
- TLS handshake is compliant with the libp2p/specs TLS Handshake and unit tested
- Transport is unit & integration tested
- Benchmarked with mxinden/libp2p-perf
- Tested again go-libp2p with Testground
- Public API is documented
Status Quo
Alpha implementation based on quinn crate. See #3454.
Previous attempts / History
Tasks
Long-term (not required for first implementation):
Summary
Implement the QUIC transport for rust-libp2p.
Done criteria
Swarmfor communication between nodes that can directly reach each otherStatus Quo
Alpha implementation based on
quinncrate. See #3454.Previous attempts / History
picoquicquinnbecause back then mostquinntypes were!Sendquinn-prototomaka/quiccc-againlibp2p-quicquinn-proto#2289 [Most recent PR]tomaka/quiccc-againbranchquinn-proto#2289quinninstead ofquinn-protoTasks
quinn-proto#2289:UdpSocketfromquinn_udpinstead of the ruststdimplementationstdones for the first version.quiccodepoint , interpreted as QUIC version draft-29 #3133Long-term (not required for first implementation):
Transport::dial_as_listenerto support hole-punching feat(quic): implement hole punching #3964quinn_protoquic implementations2n-quic(AWS)quiche(Cloudflare)PeerId-validation on TLS level: Add muxer compliance test suite and refactor tests to not depend onlibp2p-swarmkpp/rust-libp2p#27 (comment) Consider verifying expectedPeerIdas part of auth upgrades #2946