From 2e4c260d303ef933708ae503d090df074a2b8a46 Mon Sep 17 00:00:00 2001 From: Marten Seemann Date: Wed, 12 Oct 2022 21:54:09 +0200 Subject: [PATCH] roadmap: rewrite the section about efficient handshakes (#461) * roadmap: rewrite the section about efficient handshakes * fix typos Co-authored-by: Max Inden Co-authored-by: Prithvi Shahi <50885601+p-shahi@users.noreply.github.com> Co-authored-by: Max Inden Co-authored-by: Prithvi Shahi <50885601+p-shahi@users.noreply.github.com> --- ROADMAP.md | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/ROADMAP.md b/ROADMAP.md index fe47b40..67d8d27 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -321,21 +321,19 @@ be achieved with the [WebTransport](#✈️-webtransport) protocol. **High priority for: IPFS** **What?** Establishing a connection and performing the initial handshake -should be as cheap and fast as possible. Supporting things like -*selective* stream opening, *preemption*, *speculative* negotiation, -*upfront* negotiation, protocol table *pinning*, etc. may enable us to -achieve lower latencies when establishing connections, and even the -0-RTT holy grail in some cases. These features are being discussed in -the *Protocol Select* protocol design. +should be as cheap and fast as possible. On TCP, the current libp2p +handshake spends one round-trip negotiating the security protocol, and +another round-trip negotiating the stream multiplexer. +By using advanced features of the handshake protocol, we might even be +able to reach the holy grail of a 0-RTT handshake in some cases. -**Why?** Multistream 1.0 is chatty and naïve. Streams are essential to -libp2p, and negotiating them is currently inefficient in a number of -scenarios. Also, bootstrapping a multiplexed connection is currently -guesswork (we test protocols one by one, incurring in significant -ping-pong). +**Why?** Applications rely on quick connection establishment. libp2p +shouldn't make them wait for any longer than absolutely necessary. **Links:** +- [Security protocol in multiaddr](https://github.com/libp2p/specs/pull/353) +- [Muxer selection in security handshake](https://github.com/libp2p/specs/pull/446) - [Protocol Select specification](https://github.com/libp2p/specs/pull/349) ### 🛣️ Peer Routing Records