Safe Haskell | None |
---|---|
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
- defaultAcceptedConnectionsLimit :: AcceptedConnectionsLimit
- defaultPeerSharing :: PeerSharing
- defaultBlockFetchConfiguration :: Int -> BlockFetchConfiguration
- defaultChainSyncTimeout :: IO ChainSyncTimeout
- defaultDeadlineTargets :: PeerSelectionTargets
- defaultDeadlineChurnInterval :: DiffTime
- defaultBulkChurnInterval :: DiffTime
- data AcceptedConnectionsLimit = AcceptedConnectionsLimit {}
- data BlockFetchConfiguration = BlockFetchConfiguration {}
- data ChainSyncTimeout = ChainSyncTimeout {}
- data DiffusionMode
- data MiniProtocolParameters = MiniProtocolParameters {}
- 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
- local_PROTOCOL_IDLE_TIMEOUT :: DiffTime
- local_TIME_WAIT_TIMEOUT :: DiffTime
Documentation
defaultAcceptedConnectionsLimit :: AcceptedConnectionsLimit Source #
Inbound governor targets
defaultPeerSharing :: PeerSharing Source #
Node's peer sharing participation flag
defaultBlockFetchConfiguration :: Int -> BlockFetchConfiguration Source #
Configuration for FetchDecisionPolicy.
defaultDeadlineTargets :: PeerSelectionTargets Source #
Outbound governor targets Targets may vary depending on whether a node is operating in Genesis mode.
Default peer targets in Praos mode
data AcceptedConnectionsLimit #
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 Methods showsPrec :: Int -> BlockFetchConfiguration -> ShowS # show :: BlockFetchConfiguration -> String # showList :: [BlockFetchConfiguration] -> ShowS # |
data ChainSyncTimeout #
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 | |
Fields |
data DiffusionMode #
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 Methods (==) :: DiffusionMode -> DiffusionMode -> Bool # (/=) :: DiffusionMode -> DiffusionMode -> Bool # | |
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 # max :: DiffusionMode -> DiffusionMode -> DiffusionMode # min :: DiffusionMode -> DiffusionMode -> DiffusionMode # |
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 (==) :: PeerSelectionTargets -> PeerSelectionTargets -> Bool # (/=) :: PeerSelectionTargets -> PeerSelectionTargets -> Bool # |
data PeerSharing #
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 #
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 Cardano.Network.ConsensusMode Methods parseJSON :: Value -> Parser ConsensusMode # parseJSONList :: Value -> Parser [ConsensusMode] # | |||||
Generic ConsensusMode | |||||
Defined in Cardano.Network.ConsensusMode Associated Types
| |||||
Show ConsensusMode | |||||
Defined in Cardano.Network.ConsensusMode Methods showsPrec :: Int -> ConsensusMode -> ShowS # show :: ConsensusMode -> String # showList :: [ConsensusMode] -> ShowS # | |||||
Eq ConsensusMode | |||||
Defined in Cardano.Network.ConsensusMode Methods (==) :: ConsensusMode -> ConsensusMode -> Bool # (/=) :: ConsensusMode -> ConsensusMode -> Bool # | |||||
type Rep ConsensusMode | |||||
Defined in Cardano.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 #
The default value for timeWaitTimeout
.
defaultProtocolIdleTimeout :: DiffTime #
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 #
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
local_PROTOCOL_IDLE_TIMEOUT :: DiffTime Source #
Protocol inactivity timeout for local (e.g. node-to-client) connections.
local_TIME_WAIT_TIMEOUT :: DiffTime Source #
Used to set cmWaitTimeout
for local (e.g. node-to-client) connections.