-
Notifications
You must be signed in to change notification settings - Fork 780
Open
Labels
enhancementNew feature or requestNew feature or requestp2ptrackingA complex issue broken down into sub-problemsA complex issue broken down into sub-problems
Description
Feature Request
Summary
Currently, we're using TCP as our default transport protocol. QUIC has a few benefits compared to TCP:
- no head-of-line blocking
- built-in streams (no need for out-of-protocol multiplexing)
- 0-RTT handshake
Furthermore, adopting QUIC will eliminate the need for custom encryption (SecretConnection) and framing. There is nothing terrible about custom encryption except that it's custom. On the other hand, custom framing interferes with the underlying transport and prevents us from fully utilizing the underlying connection buffers.
High-level steps
- Extract transport from the p2p package
- Allow for different protocols in
NetAddr - Implement QUIC transport
- Evaluate QUIC and
- Support both TCP and QUIC in v1, but mark TCP as deprecated
- Drop support for TCP in v2
OR - Drop QUIC if its performance and stability are not up to par
Execution steps
Steps
- refactor(p2p)!: Extract TCP transport #4148
- refactor(p2p/netaddress)!: move to netaddr #4303
- refactor(p2p/nodekey)!: remove NodeKey suffix #4304
- refactor(p2p/nodeinfo)!: remove NodeInfo suffix #4305
- refactor(p2p)!: extract
MConnectionfromPeer#4307 - Modify
netaddrto support both TCP and QUIC addresses - Implement QUIC transport feat(p2p): add QUIC transport #4729
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or requestp2ptrackingA complex issue broken down into sub-problemsA complex issue broken down into sub-problems