Skip to main content

43 posts tagged with "network"

View All Tags

· 4 min read
Marcin Szamotulski

High-level overview of sprint 58 and sprint 59

Releases

We released cardano-node-8.9.1, and we tagged a soon to be released cardano-node-8.9.2 The 8.9.2 release will have a fixed peer sharing support, which we incidentally broke in 8.9.1. We expanded our test suite to cover discovered bugs (see below for more details). Please also see the release tab in our project to see which PRs / issues were included in a given release, the following mapping might also be useful:

  • ouroboros-network-0.13.1.0 -> cardano-node-8.9.1
  • ouroboros-entwork-0.14.0.0 -> cardano-node-8.9.2

Genesis

We continued working on network Genesis support:

  • ouroboros-network#3396 - churn policy for Genesis;
  • ouroboros-network#4813 - outbound governor support for Genesis;
  • support for cardano-cli to write a big ledger peers snapshot to disk and for cardano-node to pass it to ouroboros-network.

As well as a feature required by consensus:

TxSubmission

Only a little progress was made due to one of us being on vacation.

Churn and EKG metrics

While working on ouroboros-network#4815, we addressed technical debt in churn. The PR removes implicit synchronisation (in terms of delays) in favour of explicit synchronisation with the outbound governor. The PR extends EKG counters traced by the node. See below for some graphs.

Documentation

We updated the documentation on peer sharing, see cardano-node-wiki#44.

Low level details

Peer Sharing Testing

We wrote a testing scenario for peer sharing, which simulates a node setup: A -> B <- C, where neither of the nodes B and C have any local roots; they only learn about other nodes through (light) peer sharing. B learns about A and C because they connect to it, while C should learn about A through peer sharing. This test scenario should prevent us from breaking peer sharing in the future in some obvious ways. In the future, we will also work on extending our test suite with peer sharing in mind. See ouroboros-network#4839, ouroboros-network#4841.

EKG / Prometheus Counters

Note that this is in progress, so some things might still change.

We will provide counters for active (also known as hot) peers, established (e.g. hot & warm) peers and known (e.g. hot, warm and cold) peers. This is the same way one specifies targets in the node's configuration. In addition, the three groups are split into five categories:

  • ledger peers
  • big ledger peers
  • local root peers
  • bootstrap peers
  • shared peers

In addition, we also provide a counter for root peers, which counts ledger peers, big ledger peers, local roots and bootstrap peers, which correspond to the root peers target TargetNumberOfRootPeers in the configuration.

We also provide counters for ongoing promotions and demotions.

Ledger peers are affected by TargetNumberOf{Known,Established,Active}Peers and TargetNumberOfRootPeers. The gap between TargetNumberOfRootPeers and TargetNumberOfKnownPeers will be filled either with ledger peers or peers, which the node discovered through peer sharing. Big ledger peers are affected by TargetNumberOf{Known,Established,Active}BigLedgerPeers.

Below are some Grafana graphs from an experimental cardano-node branch:

Deprecation policy

The previous hot, warm / cold EKG counters will also be available, although deprecated after the new ones are released. Sometime in the future they will be removed.

Grafana graphs

The screenshots are from a node, which is configured without any bootstrap peers, which is why all bootstrap metrics are 0. The node is configured with the following targets:

  "TargetNumberOfRootPeers": 60,
"TargetNumberOfKnownPeers": 100,
"TargetNumberOfEstablishedPeers": 40,
"TargetNumberOfActivePeers": 15,
"TargetNumberOfKnownBigLedgerPeers": 15,
"TargetNumberOfEstablishedBigLedgerPeers": 10,
"TargetNumberOfActiveBigLedgerPeers": 5,

and has a small number of local root peers and one peer in its publicRoots configuration.

Active Peers Metrics

P2P relays

Established Peers Metrics

P2P relays

Known Peers Metrics

P2P relays

Churn Metrics

P2P relays

· 2 min read
Marcin Szamotulski

High-level overview of sprint 57

We released cardano-node-8.9.0 (which includes ouroboros-newtork-0.12.0.0). This release contains the following network upgrades:

Soon we will release [cardano-node-8.9.1] (which includes ouroboros-network-0.12.0.0). This release will contain:

  • Peer sharing improvements & fixes. Contributed and tested by Karl Knutsson CF.
  • cardano-ping updates to support NodeToNode_V13 & peer sharing.
  • Some smaller maintenance changes.

The list of network features included in ouroboros-network-0.12.0.0 and ouroboros-network-0.13.0.0 can be found here.

We also continued working on tx-submission, ouroboros-network#3311. Mostly working on the pure internal API for decision-making and testing it with property-based tests. The next step is to get all the information needed to run the decision logic in an efficient way and later write a mini-protocol client which is using the new API and testing it.

We also started working on thing to finalise the Genesis support from the network. We have a PR under review, ouroboros-network#4832. We also started to investigate how to support big ledger peer snapshots. This requires changes in the topology file as well as cardano-node & ouroboros-network to understand the snapshots; and on the other hand creation of such snapshots by cardano-cli.

Low-level summary

This time everything was high-level, 😉.

· 2 min read
Marcin Szamotulski

High-level overview of sprint 56

Cardano-Node, Cardano-API, Cardano-CLI

In the last sprint, the network team was designated to take the Release Engineering Role, as the coming release contains mostly network advances. Armando Santos has been making progress on it. The following packages were published to CHaP:

and other ouroboros-network packages with minor changes. The following packages were also published:

The work on cardano-node is in progress, see cardano-node#5485

We would like to thank Karl Knutsson (CF) for helping us to test the upcoming cardano-node release.

Ouroboros-Network

We continued working on tx-submission, ouroboros-network#3311

We started to execute an idea to put all configuration values used by the diffusion layer Ouroboros.Network.Diffusion.Configuration module. Currently, default values are spread in different repositories (e.g. cardano-node, ouroboros-consensus). See ouroboros-network#4805.

We restored how syncing works in bootstrap mode to get the same performance characteristics, see ouroboros-network#4809, ouroboros-network#4810.

We started working on Outbound-Governor Genesis mode, see ouroboros-network#4813.

Ouroboros-Consensus

We requested to modify how bulk-sync mode works to make it use the same mechanism that the newly added LedgerStateJudgement. See ouroboros-consensus#958.

Low-level summary

We also addressed a minor issue regarding tracing LedgerStateJudgement changes, see ouroboros-network#4816.

· 2 min read
Marcin Szamotulski

High-level overview of sprint 55

This sprint the networking was nominated for the Cardano Release Engineer role and we've been working on the integration of bootstrap peers with cardano-node. This is a work in progress: cardano-node-5485. cardano-node-8.9 will be the first node which supports the bootstrap peers feature, but we anticipate additional improvements needed before this is used at scale.

We disabled mean reward for new peers in the churn mechanism which was hurting connection in remote destinations. Thanks to Karl Knutsson (CF) for providing evidence and a patch. In future, this mechanism will be further changed, but this requires more analysis. ouroboros-network#4800

We continued working on tx-submission, ouroboros-network#3311

We welcome Marcin Wójtowicz as part of the Networking Team of Cardano Core Tech. He reviewed our documentation as part of his onboarding process: ouroboros-network#4802.

Andrew Westberg (DripDropz) corrected documentation regarding which node-to-node protocol version introduced P2P.

Low-level summary

Open Source Contributions

IOSim

We released io-sim-1.4.1.0 with some new features & improvements:

· 2 min read
Marcin Szamotulski

High-level overview of sprint 54

In this sprint, we merged the bootstrap peers (aka weak genesis) changes to the ouroboros-network repository (ouroboros-network#4615). We continued working on integration & testing it using an early development version of cardano-node (cardano-node#5485).

Andrew Westberg (DripDropz) noticed and fixed a mistake in the cddl spec which resulted in misleading documentation; ouroboros-network#4790. The Handshake protocol flag should be called initiatorOnlyDiffusionMode. Library authors providing connectivity with other nodes via the node-to-node protocol are advised to review their implementation.

We continued working on the tx-submission decision logic; ouroboros-network#3311.

Karl Knutsson (CF) implemented:

Open Source Contributions

IOSim

We released a new version of io-sim to Hackage:

NoThunks

We released a new version of nothunks to Hackage:

Low-level summary