Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Ouroboros.Network.Diffusion.Configuration
Description
One stop shop for configuring diffusion layer for upstream clients nb. the module Ouroboros.Network.Diffusion.Governor should be imported qualified as PeerSelection by convention to aid comprehension
Synopsis
- newtype DefaultNumBootstrapPeers = DefaultNumBootstrapPeers {}
- defaultNumBootstrapPeers ∷ DefaultNumBootstrapPeers
- defaultAcceptedConnectionsLimit ∷ AcceptedConnectionsLimit
- defaultDiffusionMode ∷ P2P
- defaultPeerSharing ∷ PeerSharing
- defaultBlockFetchConfiguration ∷ Int → BlockFetchConfiguration
- defaultChainSyncTimeout ∷ IO ChainSyncTimeout
- defaultPraosTargets ∷ PeerSelectionTargets
- defaultGenesisSyncTargets ∷ PeerSelectionTargets
- data AcceptedConnectionsLimit = AcceptedConnectionsLimit {}
- data BlockFetchConfiguration = BlockFetchConfiguration {}
- data ChainSyncTimeout = ChainSyncTimeout {}
- data ConsensusModePeerTargets = ConsensusModePeerTargets {}
- data DiffusionMode
- data MiniProtocolParameters = MiniProtocolParameters {}
- data P2P
- data PeerSelectionTargets = PeerSelectionTargets {}
- data PeerSharing
- data ConsensusMode
- defaultConsensusMode ∷ ConsensusMode
- defaultMiniProtocolParameters ∷ MiniProtocolParameters
- deactivateTimeout ∷ DiffTime
- closeConnectionTimeout ∷ DiffTime
- peerMetricsConfiguration ∷ PeerMetricsConfiguration
- defaultTimeWaitTimeout ∷ DiffTime
- defaultProtocolIdleTimeout ∷ DiffTime
- defaultResetTimeout ∷ DiffTime
- handshake_QUERY_SHUTDOWN_DELAY ∷ DiffTime
- ps_POLICY_PEER_SHARE_STICKY_TIME ∷ DiffTime
- ps_POLICY_PEER_SHARE_MAX_PEERS ∷ PeerSharingAmount
Documentation
newtype DefaultNumBootstrapPeers Source #
Default number of bootstrap peers
Constructors
DefaultNumBootstrapPeers | |
Fields |
Instances
defaultAcceptedConnectionsLimit ∷ AcceptedConnectionsLimit Source #
Inbound governor targets
defaultDiffusionMode ∷ P2P Source #
Principal mode of network operation
defaultPeerSharing ∷ PeerSharing Source #
Node's peer sharing participation flag
defaultBlockFetchConfiguration ∷ Int → BlockFetchConfiguration Source #
Configuration for FetchDecisionPolicy.
defaultPraosTargets ∷ PeerSelectionTargets Source #
Outbound governor targets Targets may vary depending on whether a node is operating in Genesis mode.
Default peer targets in Praos mode
defaultGenesisSyncTargets ∷ PeerSelectionTargets Source #
These targets are established when Genesis mode is enabled in node configuration and when the node is syncing up
data AcceptedConnectionsLimit Source #
Policy which governs how to limit the number of accepted connections.
Constructors
AcceptedConnectionsLimit | |
Fields
|
Instances
data BlockFetchConfiguration Source #
Configuration for FetchDecisionPolicy. Should be determined by external local node config.
Constructors
BlockFetchConfiguration | |
Fields
|
Instances
Show BlockFetchConfiguration Source # | |
Defined in Ouroboros.Network.BlockFetch |
data ChainSyncTimeout Source #
Configurable timeouts
These are configurable for at least the following reasons.
o So that deployment and testing can use different values.
o So that a net running Praos can better cope with streaks of empty slots.
(See intersectmbo/ouroboros-network#2245
.)
Constructors
ChainSyncTimeout | |
data ConsensusModePeerTargets Source #
Provides alternate peer selection targets for various syncing modes.
Constructors
ConsensusModePeerTargets | |
Instances
data DiffusionMode Source #
The flag which indicates whether the node runs only initiator or both initiator or responder node.
This data structure has two proposes:
- instruct the diffusion layer if it should listen on incoming connections;
- it is communicated via
NodeToNodeVersionData
during handshake negotiation. In non-p2p mode we always sendInitiatorOnlyDiffusionMode
, in p2p mode we send exactly what the diffusion is given. In non-p2p mode every connection outbound port is ephemeral, the remote side cannot connect to it, however in p2p mode the outbound port is actually the port on which the node is listening (if it runs inInitiatorAndResponderDiffusionMode
).
Instances
Show DiffusionMode | |
Defined in Ouroboros.Network.NodeToNode.Version Methods showsPrec ∷ Int → DiffusionMode → ShowS # show ∷ DiffusionMode → String # showList ∷ [DiffusionMode] → ShowS # | |
Eq DiffusionMode | |
Defined in Ouroboros.Network.NodeToNode.Version | |
Ord DiffusionMode | |
Defined in Ouroboros.Network.NodeToNode.Version Methods compare ∷ DiffusionMode → DiffusionMode → Ordering # (<) ∷ DiffusionMode → DiffusionMode → Bool # (<=) ∷ DiffusionMode → DiffusionMode → Bool # (>) ∷ DiffusionMode → DiffusionMode → Bool # (>=) ∷ DiffusionMode → DiffusionMode → Bool # |
data MiniProtocolParameters Source #
Constructors
MiniProtocolParameters | |
Fields
|
data PeerSelectionTargets Source #
Adjustable targets for the peer selection mechanism.
These are used by the peer selection governor as targets. They are used by the peer churn governor loop as knobs to adjust, to influence the peer selection governor.
The known, established and active peer targets are targets both from below and from above: the governor will attempt to grow or shrink the sets to hit these targets.
Unlike the other targets, the root peer target is "one sided", it is only a target from below. The governor does not try to shrink the root set to hit it, it simply stops looking for more.
There is also an implicit target that enough local root peers are selected as active. This comes from the configuration for local roots, and is not an independently adjustable target.
Constructors
PeerSelectionTargets | |
Fields
|
Instances
Show PeerSelectionTargets Source # | |
Defined in Ouroboros.Network.PeerSelection.Governor.Types Methods showsPrec ∷ Int → PeerSelectionTargets → ShowS # show ∷ PeerSelectionTargets → String # showList ∷ [PeerSelectionTargets] → ShowS # | |
Eq PeerSelectionTargets Source # | |
Defined in Ouroboros.Network.PeerSelection.Governor.Types Methods |
data PeerSharing Source #
Is a peer willing to participate in Peer Sharing? If yes are others allowed to share this peer's address? Information about the node comes from the configuration file, while information about other nodes is received via handshake.
NOTE: This information is only useful if P2P flag is enabled.
Constructors
PeerSharingDisabled | Peer does not participate in Peer Sharing at all |
PeerSharingEnabled | Peer participates in Peer Sharing |
Instances
data ConsensusMode Source #
Diffusion layer configuration parameter.
The two modes determine which PeerSelectionTargets
basis is used
by churn and OG. The node's configuration sets this, and diffusion
is initiated and remains only in this mode.
Constructors
GenesisMode | When |
PraosMode | The legacy mode which depends on official relays and/or bootstrap peers configuration. This mode uses only the default target basis irrespective ledger state. |
Instances
FromJSON ConsensusMode | |
Defined in Ouroboros.Network.ConsensusMode Methods parseJSON ∷ Value → Parser ConsensusMode Source # parseJSONList ∷ Value → Parser [ConsensusMode] Source # | |
Generic ConsensusMode | |
Defined in Ouroboros.Network.ConsensusMode Associated Types type Rep ConsensusMode ∷ Type → Type # | |
Show ConsensusMode | |
Defined in Ouroboros.Network.ConsensusMode Methods showsPrec ∷ Int → ConsensusMode → ShowS # show ∷ ConsensusMode → String # showList ∷ [ConsensusMode] → ShowS # | |
Eq ConsensusMode | |
Defined in Ouroboros.Network.ConsensusMode | |
type Rep ConsensusMode | |
Defined in Ouroboros.Network.ConsensusMode |
deactivateTimeout ∷ DiffTime Source #
Timeout for spsDeactivateTimeout
and churn hot to warm demotions.
The maximal timeout on ChainSync
(in StMustReply
state) is 269s
,
see maxChainSyncTimeout
below.
closeConnectionTimeout ∷ DiffTime Source #
Timeout for spsCloseConnectionTimeout
.
This timeout depends on KeepAlive
and TipSample
timeouts. KeepAlive
keeps agency most of the time, but TipSample
can give away its agency for
longer periods of time. Here we allow it to get 6 blocks (assuming a new
block every 20s
).
peerMetricsConfiguration ∷ PeerMetricsConfiguration Source #
Number of events tracked by PeerMetrics
. This corresponds to one hour of
blocks on mainnet.
TODO: issue #3866
defaultTimeWaitTimeout ∷ DiffTime Source #
The default value for cmTimeWaitTimeout
.
defaultProtocolIdleTimeout ∷ DiffTime Source #
Inactivity timeout. It configures how long to wait since the local side demoted remote peer to cold, before closing the connection.
handshake_QUERY_SHUTDOWN_DELAY ∷ DiffTime Source #
A 20s delay after query result was send back, before we close the connection. After that delay we close the connection.
ps_POLICY_PEER_SHARE_STICKY_TIME ∷ DiffTime Source #
Amount of time between changes to the salt used to pick peers to gossip about.
ps_POLICY_PEER_SHARE_MAX_PEERS ∷ PeerSharingAmount Source #
Maximum number of peers to respond with in a single request