Skip to main content

60 posts tagged with "network"

View All Tags

· 2 min read
Marcin Szamotulski

Overview of spint 102

Leios

We completed a basic prototype of a request-respond mini-protocol that supports server-side message reordering while ensuring both deadlock and livelock freedom. The prototype was reviewed by the consensus and formal methods teams. Next development steps involve simplifying the API and evaluating specific modifications tailored for Leios. At this point, we consider the technical risk of this development direction to be addressed and are transitioning to other, higher-priority Leios tasks.

Mithril

We're moving the development to a new repository: https://github.com/IntersectMBO/dmq-node

Ouroboros Network

Cardano Node

· 3 min read
Marcin Szamotulski
Marcin Wójtowicz

Overview of spint 100 and 101

Cardano Incident

On November 12th, Cardano experienced a fork due to a bug in ledger (de-)serialisation. Some nodes accepted an invalid tx, while others rejected it, leading to a fork of the chain.

The network team worked closely with the other Cadano teams, Intersect, Cardano Foundation, Emurgo, and stake pool operators to monitor and resolve the incident.

The network layer was not affected by the incident, and its resiliency played a role in the recovery of the network. We identified some areas that can further improve the network layer's robustness in such situations, and we'll be working on addressing these issues.

Churn Mitigation

We rolled out a churn mitigation included in the latest cardano-node-10.5 and 10.6 releases. This change ensures the speed of churn of hot peers is at least the speed of churn for established peers, and the speed of churn of the established peers is at least the speed of churn of known peers. This way, we avoid a situation where, over a long period of time, established peers will accumulate already tried hot peers, and cold peers will accumulate already tried established peers. See #5238 for more details.

The issue was identified using CF's cardano-ignite tool, with analysis provided by Karl Knutsson.

DMQ-Node

We are initiating a public repository for dmq-node to host its codebase.

We removed the KES evolution configuration; as a consequence, the genesis file option is no longer needed in the configuration of dmq-node, see #5244.

Ouroboros Leios development

Leios Demo

We have contributed improvements to consensus team's Leios demo, which includes minimal prototypes of a few miniprotocols and a simple network emulation layer for exchanging data between a leios server and patched cardano nodes. Our updates addressed unrealistic results obtained stemming from the use of a program toxiproxy for modeling bandwidth and delays. We have also improved our packet capture tooling and gathered some preliminary data for analysis. Based on this early investigation, we have identified a few areas where non-trivial changes may have to be made to the network stack to support the new protocol, as well as new features which could be introduced to deal with greatly expanded traffic requirements, while maintaining the base Praos protocol timeliness guarantees. More details about this were provided at the recent November Leios demo presentation, and further work will continue along these lines.

Server-side re-ordering for a request-response mini-protocol

It is a requirement of Leios to support Frishest-First delivery. For that purpose we started to work on a prototype implementationof a request-response mini-protocol which allows for server side re-ordering while maintaining typed-protocols safety guarantees of deadlock & live-lock freedom.

Peer Selection Improvements

Refined peer selection for local root peers behind firewalls: instead of polling, it now waits for incoming connections and reuses them outbound. See #5241 for details.

· 2 min read
Marcin Szamotulski

Overview of sprint 98 and 99

Cardano-Node 10.6 Release

We swiftly identified and resolved an issue in the Ouroboros.Network.Server.Simple.with function. This bug broke cardano-tracer component, [on#5224], [on#5223]. The function hasn't been used in cardano-node before. ouroboros-network-framework-0.19.2.0 was released ([chap#1157]).

We'd like to point out that cardano-node-10.6 will come supporting only P2P network stack.

For this coming release, we addressed some corner cases in topology parsing, cn#6304.

DMQ-Node

We continued working on dmq-node. Recently, an end-to-end test was successfully run using the mithril Rust client, submitting signatures to a dmq-node, which propagated them to another instance of dmq-node. on#5203

We found out and fixed a bug in typed-protocol's annotated driver, which is used by dmq-node: on#5207.

A static build of dmq-node is now also available for the x86_64-linux-musl target:

nix build .#dmq-node-static

The trace & monitoring team is helping us to integrate dmq-node with the cardano-tracer library. The aim is to give SPO the familiar user experience when monitoring dmq-node.

Peer Selection Improvements

A number of discrepancies were found and fixed in the peer selection logic. The peer-selection and net-sim tests were improved: on#5209, on#5232

WASM support in Ouroboros-Network

The node team contributed a partial WASM support to ouroboros-network, on#5229.

Technical Debt Reduction

Ouroboros-Network

We reorganised the ouroboros-network package structure to improve maintainability and simplify our release process, on#5200.

  • cardano-diffusion: everything related to diffusion for Cardano purposes, in particular cardano-node, but not only.
  • ouroboros-network-api, ouroboros-network-framework, ouroboros-network-protocols packages are now sublibraries of ouroboros-network. Some Cardano-specific APIs are only present in cardano-diffusion.
  • cardano-client package is now just a sublibrary: cardano-diffusion:subscription.
  • cardano-ping will become a sublibrary: cardano-diffusion:ping once on#5205 is merged.

Consensus

We addressed some outstanding TODOs in the ouroboros-consensus-diffusion package, see oc#1660.

· 2 min read
Marcin Szamotulski

Overview of sprint 95

Mithril

We've been working on integrating Mithril signature verification into dmq-node. This involves implementing the necessary logic to handle and verify signatures, ensuring that the node can correctly process Mithril-related data. Progress is being tracked in issue#5175 and issue#5176.

Cardano-Node

We worked on configuration and tracing improvements for the upcoming cardano-node 10.6 release. The focus was on enhancing the user experience in Genesis and Praos modes by refining how the network topology file is handled. Specifically, we addressed issues where the topology file contains bootstrap peers and genesis snapshot file locations, which are only relevant in one of the modes. The goal is to ensure that parsing errors are minimised and that appropriate log messages are emitted instead of errors in specific scenarios. Detailed corner cases are documented in issue#6304.

Tx-Submission

We wrote a microbenchmark to evaluate the performance of the new tx-submission decision logic. The results will help identify any performance bottlenecks and guide further optimisations. See pr#5191.

Chain-Sync Protocol Specification Update

The specification of the chain-sync mini-protocol has been relaxed to reflect the Cardano-Node implementation more accurately. The changes include allowing the server to send MsgRollBackward after sending MsgFindIntersect allowing the rollback to a point before the found intersection point. See pr#5187.

Disconnection Reason Propagation

After a discussion in the networking working group, we found out that we could improve the debugging experience for SPOs by propagating the disconnection reason from the low-level connection manager to the inbound / outbound governor. This will allow SPOs to understand better why a connection was dropped. The work is tracked in pr#5189.

QuickCheck-2.15 and 2.16

We relaxed the bounds of QuickCheck dependency for the upcoming cardano-node-10.6 release for a smoother transition, see pr#5190.

· One min read
Marcin Szamotulski

Overview of sprint 94

Mithril

We implemented node-to-node mini-protocols for dmq-node, see pr#5183.

The PR with node-to-client mini-protocols for dmq-node (pr#5173) is expected to be merged soon after addressing review comments.

We started working on verification of mithril signatures in the dmq-node, see issue#5175 and issue#5176.

Cardano-Node 10.6

We also contributed configuration/tracing changes to cardano-node for its 10.6 release. See issue#6304.

TLDR

We want to simplify user experience of cardano-node for Genesis and Praos modes: the network topology file contains bootstrap peers and genesis snapshot file location, which are only needed in one of the modes. In some cases, parsing shouldn't error (as it does now), but just emit a log message of the right severity. All the corner cases are described in the issue.

Tx-Submission

The new tx-submission decision logic was merged, see issue#3311. The new tx-submission logic was benchmarked in the ioe performance cluster. Additional work is required to analyse its performance bottlenecks.