@@ -36,8 +36,7 @@ import Ouroboros.Consensus.Mempool (MempoolCapacityBytes (..),
36
36
import qualified Ouroboros.Consensus.Node as Consensus (NetworkP2PMode (.. ))
37
37
import Ouroboros.Consensus.Storage.LedgerDB.DiskPolicy (NumOfDiskSnapshots (.. ),
38
38
SnapshotInterval (.. ))
39
- import Ouroboros.Network.NodeToNode (AcceptedConnectionsLimit (.. ), DiffusionMode (.. ))
40
- import Ouroboros.Network.PeerSelection.PeerSharing (PeerSharing (.. ))
39
+ import Ouroboros.Network.Diffusion.Configuration as Configuration
41
40
42
41
import Control.Monad (when )
43
42
import Data.Aeson
@@ -149,13 +148,22 @@ data NodeConfiguration
149
148
, ncAcceptedConnectionsLimit :: ! AcceptedConnectionsLimit
150
149
151
150
-- P2P governor targets
152
- , ncTargetNumberOfRootPeers :: Int
153
- , ncTargetNumberOfKnownPeers :: Int
154
- , ncTargetNumberOfEstablishedPeers :: Int
155
- , ncTargetNumberOfActivePeers :: Int
156
- , ncTargetNumberOfKnownBigLedgerPeers :: Int
157
- , ncTargetNumberOfEstablishedBigLedgerPeers :: Int
158
- , ncTargetNumberOfActiveBigLedgerPeers :: Int
151
+ , ncDeadlineTargetOfRootPeers :: ! Int
152
+ , ncDeadlineTargetOfKnownPeers :: ! Int
153
+ , ncDeadlineTargetOfEstablishedPeers :: ! Int
154
+ , ncDeadlineTargetOfActivePeers :: ! Int
155
+ , ncDeadlineTargetOfKnownBigLedgerPeers :: ! Int
156
+ , ncDeadlineTargetOfEstablishedBigLedgerPeers :: ! Int
157
+ , ncDeadlineTargetOfActiveBigLedgerPeers :: ! Int
158
+ , ncSyncTargetOfActivePeers :: ! Int
159
+ , ncSyncTargetOfKnownBigLedgerPeers :: ! Int
160
+ , ncSyncTargetOfEstablishedBigLedgerPeers :: ! Int
161
+ , ncSyncTargetOfActiveBigLedgerPeers :: ! Int
162
+ , ncSyncMinTrusted :: ! MinBigLedgerPeersForTrustedState
163
+
164
+ -- Used to determine which set of peer targets to use
165
+ -- by the diffusion layer when syncing
166
+ , ncConsensusMode :: ! ConsensusMode
159
167
160
168
-- Enable experimental P2P mode
161
169
, ncEnableP2P :: SomeNetworkP2PMode
@@ -184,7 +192,7 @@ data PartialNodeConfiguration
184
192
, pncProtocolConfig :: ! (Last NodeProtocolConfiguration )
185
193
186
194
-- Node parameters, not protocol-specific:
187
- , pncDiffusionMode :: ! (Last DiffusionMode )
195
+ , pncDiffusionMode :: ! (Last DiffusionMode )
188
196
, pncNumOfDiskSnapshots :: ! (Last NumOfDiskSnapshots )
189
197
, pncSnapshotInterval :: ! (Last SnapshotInterval )
190
198
, pncExperimentalProtocolsEnabled :: ! (Last Bool )
@@ -212,13 +220,21 @@ data PartialNodeConfiguration
212
220
, pncAcceptedConnectionsLimit :: ! (Last AcceptedConnectionsLimit )
213
221
214
222
-- P2P governor targets
215
- , pncTargetNumberOfRootPeers :: ! (Last Int )
216
- , pncTargetNumberOfKnownPeers :: ! (Last Int )
217
- , pncTargetNumberOfEstablishedPeers :: ! (Last Int )
218
- , pncTargetNumberOfActivePeers :: ! (Last Int )
219
- , pncTargetNumberOfKnownBigLedgerPeers :: ! (Last Int )
220
- , pncTargetNumberOfEstablishedBigLedgerPeers :: ! (Last Int )
221
- , pncTargetNumberOfActiveBigLedgerPeers :: ! (Last Int )
223
+ , pncDeadlineTargetOfRootPeers :: ! (Last Int )
224
+ , pncDeadlineTargetOfKnownPeers :: ! (Last Int )
225
+ , pncDeadlineTargetOfEstablishedPeers :: ! (Last Int )
226
+ , pncDeadlineTargetOfActivePeers :: ! (Last Int )
227
+ , pncDeadlineTargetOfKnownBigLedgerPeers :: ! (Last Int )
228
+ , pncDeadlineTargetOfEstablishedBigLedgerPeers :: ! (Last Int )
229
+ , pncDeadlineTargetOfActiveBigLedgerPeers :: ! (Last Int )
230
+ , pncSyncTargetOfActivePeers :: ! (Last Int )
231
+ , pncSyncTargetOfKnownBigLedgerPeers :: ! (Last Int )
232
+ , pncSyncTargetOfEstablishedBigLedgerPeers :: ! (Last Int )
233
+ , pncSyncTargetOfActiveBigLedgerPeers :: ! (Last Int )
234
+ , pncSyncMinTrusted :: ! (Last MinBigLedgerPeersForTrustedState )
235
+
236
+ -- Consensus mode for diffusion layer
237
+ , pncConsensusMode :: ! (Last ConsensusMode )
222
238
223
239
-- Enable experimental P2P mode
224
240
, pncEnableP2P :: ! (Last NetworkP2PMode )
@@ -299,13 +315,20 @@ instance FromJSON PartialNodeConfiguration where
299
315
<- Last <$> v .:? " AcceptedConnectionsLimit"
300
316
301
317
-- P2P Governor parameters, with conservative defaults.
302
- pncTargetNumberOfRootPeers <- Last <$> v .:? " TargetNumberOfRootPeers"
303
- pncTargetNumberOfKnownPeers <- Last <$> v .:? " TargetNumberOfKnownPeers"
304
- pncTargetNumberOfEstablishedPeers <- Last <$> v .:? " TargetNumberOfEstablishedPeers"
305
- pncTargetNumberOfActivePeers <- Last <$> v .:? " TargetNumberOfActivePeers"
306
- pncTargetNumberOfKnownBigLedgerPeers <- Last <$> v .:? " TargetNumberOfKnownBigLedgerPeers"
307
- pncTargetNumberOfEstablishedBigLedgerPeers <- Last <$> v .:? " TargetNumberOfEstablishedBigLedgerPeers"
308
- pncTargetNumberOfActiveBigLedgerPeers <- Last <$> v .:? " TargetNumberOfActiveBigLedgerPeers"
318
+ pncDeadlineTargetOfRootPeers <- Last <$> v .:? " TargetNumberOfRootPeers"
319
+ pncDeadlineTargetOfKnownPeers <- Last <$> v .:? " TargetNumberOfKnownPeers"
320
+ pncDeadlineTargetOfEstablishedPeers <- Last <$> v .:? " TargetNumberOfEstablishedPeers"
321
+ pncDeadlineTargetOfActivePeers <- Last <$> v .:? " TargetNumberOfActivePeers"
322
+ pncDeadlineTargetOfKnownBigLedgerPeers <- Last <$> v .:? " TargetNumberOfKnownBigLedgerPeers"
323
+ pncDeadlineTargetOfEstablishedBigLedgerPeers <- Last <$> v .:? " TargetNumberOfEstablishedBigLedgerPeers"
324
+ pncDeadlineTargetOfActiveBigLedgerPeers <- Last <$> v .:? " TargetNumberOfActiveBigLedgerPeers"
325
+ pncSyncTargetOfActivePeers <- Last <$> v .:? " SyncTargetNumberOfActivePeers"
326
+ pncSyncTargetOfKnownBigLedgerPeers <- Last <$> v .:? " SyncTargetNumberOfKnownBigLedgerPeers"
327
+ pncSyncTargetOfEstablishedBigLedgerPeers <- Last <$> v .:? " SyncTargetNumberOfEstablishedBigLedgerPeers"
328
+ pncSyncTargetOfActiveBigLedgerPeers <- Last <$> v .:? " SyncTargetNumberOfActiveBigLedgerPeers"
329
+ pncSyncMinTrusted <- Last <$> v .:? " SyncMinNumberOfBigLedgerPeersForTrustedState"
330
+
331
+ pncConsensusMode <- Last <$> v .:? " ConsensusMode"
309
332
310
333
pncChainSyncIdleTimeout <- Last <$> v .:? " ChainSyncIdleTimeout"
311
334
@@ -319,7 +342,7 @@ instance FromJSON PartialNodeConfiguration where
319
342
320
343
-- Peer Sharing
321
344
-- DISABLED BY DEFAULT
322
- pncPeerSharing <- Last <$> v .:? " PeerSharing" .!= Just PeerSharingDisabled
345
+ pncPeerSharing <- Last <$> v .:? " PeerSharing" .!= Just Configuration. PeerSharingDisabled
323
346
324
347
pure PartialNodeConfiguration {
325
348
pncProtocolConfig
@@ -346,13 +369,19 @@ instance FromJSON PartialNodeConfiguration where
346
369
, pncTimeWaitTimeout
347
370
, pncChainSyncIdleTimeout
348
371
, pncAcceptedConnectionsLimit
349
- , pncTargetNumberOfRootPeers
350
- , pncTargetNumberOfKnownPeers
351
- , pncTargetNumberOfEstablishedPeers
352
- , pncTargetNumberOfActivePeers
353
- , pncTargetNumberOfKnownBigLedgerPeers
354
- , pncTargetNumberOfEstablishedBigLedgerPeers
355
- , pncTargetNumberOfActiveBigLedgerPeers
372
+ , pncDeadlineTargetOfRootPeers
373
+ , pncDeadlineTargetOfKnownPeers
374
+ , pncDeadlineTargetOfEstablishedPeers
375
+ , pncDeadlineTargetOfActivePeers
376
+ , pncDeadlineTargetOfKnownBigLedgerPeers
377
+ , pncDeadlineTargetOfEstablishedBigLedgerPeers
378
+ , pncDeadlineTargetOfActiveBigLedgerPeers
379
+ , pncSyncTargetOfActivePeers
380
+ , pncSyncTargetOfKnownBigLedgerPeers
381
+ , pncSyncTargetOfEstablishedBigLedgerPeers
382
+ , pncSyncTargetOfActiveBigLedgerPeers
383
+ , pncSyncMinTrusted
384
+ , pncConsensusMode
356
385
, pncEnableP2P
357
386
, pncPeerSharing
358
387
}
@@ -521,17 +550,37 @@ defaultPartialNodeConfiguration =
521
550
, acceptedConnectionsSoftLimit = 384
522
551
, acceptedConnectionsDelay = 5
523
552
}
524
- , pncTargetNumberOfRootPeers = Last (Just 85 )
525
- , pncTargetNumberOfKnownPeers = Last (Just 85 )
526
- , pncTargetNumberOfEstablishedPeers = Last (Just 40 )
527
- , pncTargetNumberOfActivePeers = Last (Just 15 )
553
+ , pncDeadlineTargetOfRootPeers = Last (Just deadlineRoots )
554
+ , pncDeadlineTargetOfKnownPeers = Last (Just deadlineKnown )
555
+ , pncDeadlineTargetOfEstablishedPeers = Last (Just deadlineEstablished )
556
+ , pncDeadlineTargetOfActivePeers = Last (Just deadlineActive )
528
557
, pncChainSyncIdleTimeout = mempty
529
- , pncTargetNumberOfKnownBigLedgerPeers = Last (Just 15 )
530
- , pncTargetNumberOfEstablishedBigLedgerPeers = Last (Just 10 )
531
- , pncTargetNumberOfActiveBigLedgerPeers = Last (Just 5 )
532
- , pncEnableP2P = Last (Just EnabledP2PMode )
533
- , pncPeerSharing = Last (Just PeerSharingDisabled )
558
+ , pncDeadlineTargetOfKnownBigLedgerPeers = Last (Just deadlineBigKnown)
559
+ , pncDeadlineTargetOfEstablishedBigLedgerPeers = Last (Just deadlineBigEst)
560
+ , pncDeadlineTargetOfActiveBigLedgerPeers = Last (Just deadlineBigAct)
561
+ , pncSyncTargetOfActivePeers = Last (Just syncActive)
562
+ , pncSyncTargetOfKnownBigLedgerPeers = Last (Just syncBigKnown)
563
+ , pncSyncTargetOfEstablishedBigLedgerPeers = Last (Just syncBigEst)
564
+ , pncSyncTargetOfActiveBigLedgerPeers = Last (Just syncBigAct)
565
+ , pncSyncMinTrusted = Last (Just defaultMinBigLedgerPeersForTrustedState)
566
+ , pncConsensusMode = mempty
567
+ , pncEnableP2P = Last (Just EnabledP2PMode )
568
+ , pncPeerSharing = Last (Just Configuration. PeerSharingDisabled )
534
569
}
570
+ where
571
+ Configuration. PeerSelectionTargets {
572
+ targetNumberOfRootPeers = deadlineRoots,
573
+ targetNumberOfKnownPeers = deadlineKnown,
574
+ targetNumberOfEstablishedPeers = deadlineEstablished,
575
+ targetNumberOfActivePeers = deadlineActive,
576
+ targetNumberOfKnownBigLedgerPeers = deadlineBigKnown,
577
+ targetNumberOfEstablishedBigLedgerPeers = deadlineBigEst,
578
+ targetNumberOfActiveBigLedgerPeers = deadlineBigAct } = defaultDeadlineTargets
579
+ Configuration. PeerSelectionTargets {
580
+ targetNumberOfActivePeers = syncActive,
581
+ targetNumberOfKnownBigLedgerPeers = syncBigKnown,
582
+ targetNumberOfEstablishedBigLedgerPeers = syncBigEst,
583
+ targetNumberOfActiveBigLedgerPeers = syncBigAct } = defaultSyncTargets
535
584
536
585
lastOption :: Parser a -> Parser (Last a )
537
586
lastOption = fmap Last . optional
@@ -553,27 +602,45 @@ makeNodeConfiguration pnc = do
553
602
shutdownConfig <- lastToEither " Missing ShutdownConfig" $ pncShutdownConfig pnc
554
603
socketConfig <- lastToEither " Missing SocketConfig" $ pncSocketConfig pnc
555
604
556
- ncTargetNumberOfRootPeers <-
605
+ ncDeadlineTargetOfRootPeers <-
557
606
lastToEither " Missing TargetNumberOfRootPeers"
558
- $ pncTargetNumberOfRootPeers pnc
559
- ncTargetNumberOfKnownPeers <-
607
+ $ pncDeadlineTargetOfRootPeers pnc
608
+ ncDeadlineTargetOfKnownPeers <-
560
609
lastToEither " Missing TargetNumberOfKnownPeers"
561
- $ pncTargetNumberOfKnownPeers pnc
562
- ncTargetNumberOfEstablishedPeers <-
610
+ $ pncDeadlineTargetOfKnownPeers pnc
611
+ ncDeadlineTargetOfEstablishedPeers <-
563
612
lastToEither " Missing TargetNumberOfEstablishedPeers"
564
- $ pncTargetNumberOfEstablishedPeers pnc
565
- ncTargetNumberOfActivePeers <-
613
+ $ pncDeadlineTargetOfEstablishedPeers pnc
614
+ ncDeadlineTargetOfActivePeers <-
566
615
lastToEither " Missing TargetNumberOfActivePeers"
567
- $ pncTargetNumberOfActivePeers pnc
568
- ncTargetNumberOfKnownBigLedgerPeers <-
616
+ $ pncDeadlineTargetOfActivePeers pnc
617
+ ncDeadlineTargetOfKnownBigLedgerPeers <-
569
618
lastToEither " Missing TargetNumberOfKnownBigLedgerPeers"
570
- $ pncTargetNumberOfKnownBigLedgerPeers pnc
571
- ncTargetNumberOfEstablishedBigLedgerPeers <-
619
+ $ pncDeadlineTargetOfKnownBigLedgerPeers pnc
620
+ ncDeadlineTargetOfEstablishedBigLedgerPeers <-
572
621
lastToEither " Missing TargetNumberOfEstablishedBigLedgerPeers"
573
- $ pncTargetNumberOfEstablishedBigLedgerPeers pnc
574
- ncTargetNumberOfActiveBigLedgerPeers <-
622
+ $ pncDeadlineTargetOfEstablishedBigLedgerPeers pnc
623
+ ncDeadlineTargetOfActiveBigLedgerPeers <-
575
624
lastToEither " Missing TargetNumberOfActiveBigLedgerPeers"
576
- $ pncTargetNumberOfActiveBigLedgerPeers pnc
625
+ $ pncDeadlineTargetOfActiveBigLedgerPeers pnc
626
+ ncSyncTargetOfActivePeers <-
627
+ lastToEither " Missing SyncTargetNumberOfActivePeers"
628
+ $ pncSyncTargetOfActivePeers pnc
629
+ ncSyncTargetOfKnownBigLedgerPeers <-
630
+ lastToEither " Missing SyncTargetNumberOfKnownBigLedgerPeers"
631
+ $ pncSyncTargetOfKnownBigLedgerPeers pnc
632
+ ncSyncTargetOfEstablishedBigLedgerPeers <-
633
+ lastToEither " Missing SyncTargetNumberOfEstablishedBigLedgerPeers"
634
+ $ pncSyncTargetOfEstablishedBigLedgerPeers pnc
635
+ ncSyncTargetOfActiveBigLedgerPeers <-
636
+ lastToEither " Missing SyncTargetNumberOfActiveBigLedgerPeers"
637
+ $ pncSyncTargetOfActiveBigLedgerPeers pnc
638
+ ncSyncMinTrusted <-
639
+ lastToEither " Missing SyncMinNumberOfBigLedgerPeersForTrustedState"
640
+ $ pncSyncMinTrusted pnc
641
+ ncConsensusMode <-
642
+ lastToEither " Missing ConsensusMode"
643
+ $ pncConsensusMode pnc
577
644
ncProtocolIdleTimeout <-
578
645
lastToEither " Missing ProtocolIdleTimeout"
579
646
$ pncProtocolIdleTimeout pnc
@@ -632,17 +699,23 @@ makeNodeConfiguration pnc = do
632
699
, ncTimeWaitTimeout
633
700
, ncChainSyncIdleTimeout
634
701
, ncAcceptedConnectionsLimit
635
- , ncTargetNumberOfRootPeers
636
- , ncTargetNumberOfKnownPeers
637
- , ncTargetNumberOfEstablishedPeers
638
- , ncTargetNumberOfActivePeers
639
- , ncTargetNumberOfKnownBigLedgerPeers
640
- , ncTargetNumberOfEstablishedBigLedgerPeers
641
- , ncTargetNumberOfActiveBigLedgerPeers
702
+ , ncDeadlineTargetOfRootPeers
703
+ , ncDeadlineTargetOfKnownPeers
704
+ , ncDeadlineTargetOfEstablishedPeers
705
+ , ncDeadlineTargetOfActivePeers
706
+ , ncDeadlineTargetOfKnownBigLedgerPeers
707
+ , ncDeadlineTargetOfEstablishedBigLedgerPeers
708
+ , ncDeadlineTargetOfActiveBigLedgerPeers
709
+ , ncSyncTargetOfActivePeers
710
+ , ncSyncTargetOfKnownBigLedgerPeers
711
+ , ncSyncTargetOfEstablishedBigLedgerPeers
712
+ , ncSyncTargetOfActiveBigLedgerPeers
713
+ , ncSyncMinTrusted
642
714
, ncEnableP2P = case enableP2P of
643
715
EnabledP2PMode -> SomeNetworkP2PMode Consensus. EnabledP2PMode
644
716
DisabledP2PMode -> SomeNetworkP2PMode Consensus. DisabledP2PMode
645
717
, ncPeerSharing
718
+ , ncConsensusMode
646
719
}
647
720
648
721
ncProtocol :: NodeConfiguration -> Protocol
0 commit comments