Skip to main content

12 posts tagged with "network"

View All Tags

· 2 min read
Marcin Szamotulski

High level summary

We started working on a new way to switch between root & ledger peers (see below). We continued to work on eclipse-evasion. We merged changes to Handshake contributed by Galois Inc. We made improvements to our tests (fixed a flaky test, added cddl specs for NodeToNodeVersionData and NodeToClientVersionData). We improved our CI and automated the process of releasing new package version to CHaP.

Detailed summary

We continued to work on testing eclipse-evasion.

We came up with an idea to limit how full node wallets relay on root peers (currently operated by IOG, in future also CF and Emurgo). We designed a switch to use ledger peers if the node tip is close enough to the current time. For more details see #4530.

We merged changes to the handshake mini-protocol which allow one to query server's node-to-node / node-to-client parameters. We are grateful to Galois Inc. for implementing it, #4256 and #4538. We published new version of packages to CHaP chap-#253.

We added DiffusionError wrapper. Thanks to it, ouroboros-consensus will not duplicate diffusion errors messages in the log, #4537.

We fixed an issue which caused one of our tests to be flaky, #4515.

We added cddl tests for NodeToNodeVersionData and NodeToClientVersionData: #4540, #4544 (in review).

We wrote scripts which will help us release packages as well as verify that we released all the package necessary to build the newest set of packages, #4542.

We renamed the consensus startup tracer and make sure it doesn't log ExitSuccess exceptions, consensus-#71.

We reviewed PR which adds RawBearer API, #4395.

We made series of improvements to our CI:

  • #4539: we don't need to install cryptographic libraries in CI;
  • #4545: Javier Sagredo (consensus) cleaned up CI after consensus moved to a new repo;
  • [#4546]: we switched to use GitHub merge queues;
  • #4549: we made it possible to trigger building haddocks manually;
  • #4553: we fixed and enhanced caching of building dependencies.

· 2 min read
Marcin Szamotulski

High level summary

The networking team has released the following packages to Hackage:

We published an announcement blog post. We made progress also on another blog post which will describes the design of the P2P networking layer.

After moving ouroboros-consensus to its own repository, we made ouroboros-network compatible with GHC 9.4 and 9.6.

We made cardano-client library independent of ouroboros-consensus-diffusion.

We prepared release of network packages for cardano-node-8.0.

Detailed log



  • io-classes-, and following up releases: (ghc-9.6 support), (documentation fix).
  • Fixed timeouts and delays in io-sim in a series of PRs: io-sim#81, io-sim#82, io-sim#86, io-sim#87.
  • Renamed a module: io-sim#88.
  • Fixed a failing registerDelayCancellable test: [io-sim#80].
  • Use GitHub merge queue in io-sim repository.
  • CI: download stylish-haskell: io-sim#83.

Typed Protocols

· 2 min read
Marcin Szamotulski

High level summary

In the last spring we released cardano-node-1.35.6 with dynamic P2P functionality.

We received reports from some SPOs who encountered problems with their non P2P block producing nodes not being able to connect to their P2P relay. Karl Knutsson (from Cardano Foundation) reproduced this issue between two nodes (a non P2P and a P2P one) on mainnet. Karl and the IOG Networking Team analysed it and found a bug in the legacy non p2p code. The bug is only possible to trigger with a P2P node which is binding its outbound connection port to a fixed IP address and port (default in p2p). A possible solution was found. For more information see #4465.

We released cardano-ping- package to CHaP. cardano-ping is no longer available as a standalone binary, but instead it will become part of cardano-cli (see #4664)

We are testing cardano-node with peer sharing functionality (#4019).

We are working on eclipse evasion. We added new class of peers: big ledger peers to the outbound governor, implemented tests and fixed found issues (#4462). We also made the information if a given peer plays the role of a big ledger peer to the mini-protocols. This will allow to modify mini-protocol applications for such peers. As part of this functionality we refactored some core types in the network code which simplifies exposed API.

Together with Moritz Angerman we started to update io-sim to ghc-9.6.1 (see #73).

We merged a fix of configuration of accepted connections limit in cardano-node (see #4902).

· 2 min read
Marcin Szamotulski

High level summary

In the current sprint the networking team focused on fixing bugs and pushing forward implementation of eclipse evasion. We also found a bug in our simulation testing setup (in integration of test node). We also overviewed the work on extending handshake protocol which is delivered by Galois Inc.

We published ouroboros-network- and ouroboros-network-protocols- to CHaP.

We also fixed a bug in cardano-node which results in not being able to configure inbound connection limits, see PR #4902.

Together with Karl Knutsson (CF) we realised an issue in cardano-cli: it's validation of DNS names, IP address & ports when registering a stake pool should be more strict to protect against common mistakes which we identified on the chain. See issue #4929.

Detailed work log

In PR #4385 we fixed two bugs in peer state actions. First one results in a busy loop if demotion from hot to warm times outs. This busy loop is eventually exited when mux exits (we reported this in our previous report). This fix made it to 1.35.6 release as well.

In addition the PR #4385 also fixes another bug which results in hot -> warm -> hot demotion / promotion busy loop.

The PR #4385 also fixed a bug in a node only used in simulation which resulted in not using chain-sync or block-fetch mini-protocols. In the review process, we realised that the header-body split in the simulated node requires further work (see PR #4419, which is under review).

The PR #4385 also extend our generators, which together with the above fix, cover the hot -> warm -> hot demotion / promotion busy loop.

In PR #4419 we introduce a ChainDB for our simulation node, which plays similar role to ChainDB in the ouroboros-consensus: a persistent (across simulated restarts) store of blocks which does chain selection. This ensures that the simulated node is using block-fetch to download blocks announced by chain-sync mini-protocol.

We also made progress with reviewing PR #4019 - peer sharing.

We also fixed issue #4370 - a connection manager test failure, see PR #4384.

· One min read
Marcin Szamotulski

High level summary

Recently QA found a bug in P2P code, which results in busy loops. We added one fix to 1.35.6 release, another one will likely be part of next release. The first one is already included in ouroboros-network- release. These bugs could only affect nodes which are out of sync and thus should not impose risk on well maintained nodes on mainnet. We also advertise to deploy at most one of the relays as a P2P node, which shields from possible consequences.

We recently finished design phase of eclipse evasion and we started implementing it (see issue #3886 for progress).

Galois finished implementing Handshake extension which will allow to query network protocol versions (see pr #4256).

We also recently released a newer set of network packages to be integrated with cardano-node master branch, this includes:

* monoidal-synchronisation-
* cardano-client-
* network-mux-
* ouroboros-network-api-
* ouroboros-network-protocols-
* ouroboros-network-testing-
* ouroboros-network-mock-
* ouroboros-network-framework-
* ouroboros-network- (it doesn't not yet include the fix we included
in ``)