Skip to main content

46 posts tagged with "network"

View All Tags

· 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

Ouroboros-Network

IO-Sim

  • io-classes-1.0.0.0, and following up releases: 1.0.0.1 (ghc-9.6 support), 1.1.0.0 (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-0.1.0.0 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-0.4.0.1 and ouroboros-network-protocols-0.3.0.0 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-0.3.0.1 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-0.1.0.2
* cardano-client-0.1.0.2
* network-mux-0.3.0.0
* ouroboros-network-api-0.1.0.0
* ouroboros-network-protocols-0.2.0.0
* ouroboros-network-testing-0.2.0.1
* ouroboros-network-mock-0.1.0.0
* ouroboros-network-framework-0.3.0.0
* ouroboros-network-0.4.0.0 (it doesn't not yet include the fix we included
in `0.3.0.1`)

· 2 min read
Marcin Szamotulski

High level summary

We have been working towards cardano-node-1.35.5 release. QA & benchmarking teams gave a green light for the release, and we made decent progress with some CI problem which we encountered on the way (PR #4612). We are also working on peer sharing, making improvements in our testing infrastructure, reducing technical debt and making progress towards io-sim-1.0.0.0. Galois is making progress on Handshake improvements.

Low level summary

Our diffusion simulation network now includes a mixed network of initiator only and initiator and responder nodes. issue #4222

We are now reviewing the peer sharing pull request.

We are also reviewing pull request which introduces handshake query flag. PR #4256

We fixed a bug in our network simulator. The bug was triggered when a node died when performing a simultaneous TCP open (a corner case of a corner case!). PR #4265

We also refactored Snocket interface and removed the bearer construction from its methods. PR #4260

We are working towards releasing io-sim-1.0.0.0 on Hackage, which includes reviewing two PRs: PR #57 and PR #60 as well as writing an announcement blog post.