feat(connections): clarify state management around supported protocols (#530)

This commit is contained in:
Thomas Eizinger
2023-03-23 13:35:20 +01:00
committed by GitHub
parent aac4e1f1c8
commit 7530296745

View File

@@ -34,6 +34,7 @@ and spec status.
- [State Management](#state-management) - [State Management](#state-management)
- [Peer Metadata Storage](#peer-metadata-storage) - [Peer Metadata Storage](#peer-metadata-storage)
- [Connection Limits](#connection-limits) - [Connection Limits](#connection-limits)
- [Supported protocols](#supported-protocols)
- [Connection Lifecycle Events](#connection-lifecycle-events) - [Connection Lifecycle Events](#connection-lifecycle-events)
- [Hole punching](#hole-punching) - [Hole punching](#hole-punching)
- [Future Work](#future-work) - [Future Work](#future-work)
@@ -325,6 +326,17 @@ Resource allocation, measurement and enforcement policies are all an active area
of discussion in the libp2p community, and implementations are free to develop of discussion in the libp2p community, and implementations are free to develop
whatever prioritization system makes sense. whatever prioritization system makes sense.
#### Supported protocols
A libp2p node SHOULD scope its set of supported protocols to the underlying
physical connection to a peer. It MAY only support a protocol based on properties
of a physical connection to e.g. limit the use of bandwidth-heavy protocols over
a relayed or metered connection. A libp2p node MAY offer different sets of protocols
to different peers. It MAY revoke or add the support for a protocol at any time,
for example to only offer certain services after learning its NAT status on a connection.
Therefore, libp2p nodes SHOULD NOT assume that the set of protocols on a connection
is static.
### Connection Lifecycle Events ### Connection Lifecycle Events
The establishment of new connections and streams is likely to be a The establishment of new connections and streams is likely to be a