From ea4d8be58cd3a648e99a819a5ff30b68d1a0f814 Mon Sep 17 00:00:00 2001 From: Danny Salman Date: Fri, 24 Feb 2023 13:28:01 -0500 Subject: [PATCH] feat: multistream-select (#297) --- .../introduction/protocols/multistream.md | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/content/concepts/introduction/protocols/multistream.md b/content/concepts/introduction/protocols/multistream.md index 77d6a62f..cb2d8328 100644 --- a/content/concepts/introduction/protocols/multistream.md +++ b/content/concepts/introduction/protocols/multistream.md @@ -1,7 +1,23 @@ --- title: "Multistream Select" -description: "" +description: "Multistream Select is used to negotiate the protocol to be spoken on a connection or stream." weight: 26 --- -Coming soon! +## Overview + +[Multistream Select](https://github.com/multiformats/multistream-select) is a +protocol negotiation protocol. It allows two peers to negotiate the next spoken +protocol on a connection or stream. + +Peers use Multistream Select at various places to select the protocols to use on +a libp2p connection or stream. Most prominently Multistream Select is used to +select the [security](../../secure-comm/overview.md) followed by [stream +multiplexing](../../multiplex/overview.md) protocol spoken on a connection. In +addition it is used to select the application protocol (e.g. Kademlia) on each +new stream on a given connection. The [protocol +negotiation](../core-abstractions/connections#protocol-negotiation) and [upgrade +process](../core-abstractions/connections#upgrading-connections) are explained +further in the [connections document](../core-abstractions/connections.md). + +{{< alert icon="💡" context="note" text="See the multistream-select technical specification for more details." />}}