Skip to main content

44 posts tagged with "network"

View All Tags

· 3 min read
Marcin Szamotulski

Overview of sprint 76

Network Load

The Cardano Foundation monitors the network by injecting "canary" transactions, allowing us to measure the time taken for a transaction to be included in a block. Approximately four to five of these transactions are submitted every hour.

Since early November, network load has increased, but most transactions are still included within the first or second block after submission. Even if the network is not congested, transactions may not reach the Block Producer responsible for the next block in time due to network propagation delays. Therefore, only a transaction that takes three or more blocks to be included indicates a loaded network.

Since November 1, 2024, we have submitted around 3,700 "canary" transactions, and only 59 of them took longer than two blocks to be included, meaning 98.4% of our test transactions were included within the two-block limit. During this period, the longest observed time to inclusion was five blocks for two transactions and the maximum wait time is 201 seconds.

Network Load

Where the y-axis is a fraction of the block size in the respected dimension (e.g. size, steps, memory).

Hot Standby Block-Producer Nodes

In the last Network Working Group Meeting (NWG) we discussed solutions for running hot standby block producers using P2P.

Short-Term Solution: Local Root Initiator Only Outbound Connections

We agreed to implement initiator-only connections for local roots, which wouldn't bind to the node address (and thus would be made from an ephemeral port). This allows SPOs to have hot standby nodes which are hidden from relays using a firewall rule, while they still can connect to the relays (so they receive blocks while the blocks they produce are not sent to the network). See the ouroboros-network#5020 issue and associated PRs:

The latter PR makes P2P node run on systems with multiple network interfaces or a single interface with multiple IP addresses.

An SPO can control the diffusion mode (initiator only / initiator and responder) in the topology file. A draft PR is available in the coot/connection-manager-initiator-only-0.13.2.5 branch.

In the NWG meeting, it was agreed that once this functionality is implemented, we can remove NonP2P code from ouroboros-network (ouroboros-network#5007).

Long-Term Solution

An agreed long-term solution is to allow to control block propagation of self-produced blocks through cardano-cli.

Reusable Diffusion

We continued working on making ouroboros-network reusable for both cardano-node and mithril (see CIP#137). The PR can be found here: ouroboros-network#5016, while a more detailed description of its direction can be found here. During this sprint, we carried out a team-wise PR review.

Block Fetch Client For Genesis

A new block-fetch client designed for Genesis was merged, see ouroboros-network#4919. The design of the new block-fetch Gensis logic is described in here.

KES Agent: Raw Bearer API

We recently merged ouroboros-network#4395 - a PR which is important for the KES-agent workstream.

· 2 min read
Marcin Szamotulski

Overview of sprint 74

Dropping NonP2P network stack

We are advertising that we will drop the non-p2p network stack. This will happen after the next hard fork. Please comment on the PR if this will be problematic for you. Here's the PR: ouroboros-network#5007.

Node-to-Client versions

We dropped node-to-client versions earlier than version 16, ouroboros-network#5002.

Mithril Design

We completed review how to adopt ouroboros-network for Mithril design. We started to experiment with ouroboros-network in that direction.

Next Cardano-Node release

The next cardano-node release will include the following changes from the networking team:

Typed-Protocols

The integration of ouroboros-network-0.18, which is using the new typed-protocols-0.3 with ouroboros-consensus, was merged, ouroboros-consensus#1223. Integration with cardano-cli and cardano-api was rebased and handed to the release engineer. Integration with ekg-forward was merged: ekg-forward#35.

Genesis

The following changes to support Genesis (both creating big ledger peer snapshots & providing them in a topology file)

Connection Manager

We merged the documentation review of the connection manager, ouroboros-network#5001. We also renamed connection manager methods (as suggested by Neil Davies ([PNSOL])): ouroboros-network#5000.

Outbound Governor

We started to experiment with using FRP to implement the outbound governor in a way that is both easier to maintain and reason about.

· One min read
Marcin Szamotulski

Overview of sprint 73

Ouroboros-Network-0.18 release

We released ouroboros-network-0.18. The main features are:

  • integration with typed-protocols-0.3
  • cardano-client library doesn't depend on the non-p2p stack
  • We expose connectToWithMux family of function in ouroboros-network which give access to the underlying Mux handle.
  • Added NodeToClientV_19: to support new GetLedgerPeerSnapshot query in local-state-query mini-protocol ouroboros-consensus#1067.

See full the list of PRs included in this release. ouroboros-network-0.18 was integrated with ouroboros-consensus (ouroboros-consensus#1223)

Tx-Submission

We continued working on tx-submission monitoring its performance.

Ouroboros-Network - Mithril Design

We had an internal discussion how to support the Mithril design. In near future we will be able to socialise the report we've been working on.

Code Refactoring

We reorganised some of our substysems to use qualified imports with simplified names:

We also removed deprecated APIs in [ouroboros-network#4998]

· One min read
Marcin Szamotulski

Overview of [sprint 73][sprint-73]

Ouroboros-Network-0.18 release

We released ouroboros-network-0.18. The main features are:

  • integration with typed-protocols-0.3
  • cardano-client library doesn't depend on the non-p2p stack
  • We expose connectToWithMux family of functions in ouroboros-network which give access to the underlying [Mux handle][mux-handle].
  • Added NodeToClientV_19: to support the new GetLedgerPeerSnapshot query in local-state-query mini-protocol [ouroboros-consensus#1067].

See full [the list of PRs][ouroboros-network-0.18] included in this release. ouroboros-network-0.18 was integrated with ouroboros-consensus ([ouroboros-consensus#1223])

Tx-Submission

We continued working on tx-submission and monitoring its performance.

Ouroboros-Network - Mithril Design

We internally discussed how to support the [Mithril design][cip#137]. In In the near future, we will be able to socialise the report we've been working on.

Code Refactoring

We reorganised some of our substysems to use qualified imports with simplified names:

  • [ouroboros-network#4990] (connection-manager, inbound-governor)
  • [ouroboros-network#4997] (network-mux)

We also removed deprecated APIs in [ouroboros-network#4998]sim#182]

· One min read
Marcin Szamotulski

Overview of sprint 71

Security Policy

According to IntersectMBOs Open-Source Committee guidance, we updated our security policy.

Tx-Submission

We have been working on the integration of the new tx-submission inbound side with cardano-node.

New Typed-Protocols API

We published typed-protocols-0.3.0.0 to CHaP. It includes changes to the typed-protocols-stateful API. The added changes allow us to simplify LocalStateQuery mini-protocol, particularly the MsgResult doesn't include the request type (e.g. query result). It is provided to the codec using the associated local state mechanism instead. See typed-protocols#61, chap#911.

The integration of typed-protocols-0.3.0.0 with ouroboros-network was merged to the master branch, see ouroboros-network#4935.

The integration of this work stream with cardano-node is tracked on ouroboros-network#4936.

cardano-node-9.3

We started working on cardano-node-9.3 release.

CI