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