Skip to main content

43 posts tagged with "network"

View All Tags

· One min read
Marcin Szamotulski

High-level overview of sprint 69

Ouroboros-Network-0.17.1.x

We released ouroboros-network-0.17.1.{0,1} which is being integrated with cardano-node-9.2, see releases.

Tx-Submission

We continued working on tests of the new tx-submission application, ouroboros-network#3311, ouroboros-network#4928.

Typed Protocols

The new typed-protocols API is under review, typed-protocols#52

IOSim

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

· 2 min read
Marcin Szamotulski

High-level overview of sprint 68

Peer Sharing

Karl Knutsson (CF) produces graphs which show how peer sharing usage expands on mainnet.

Peer Sharing: discovered unique peersPeer Sharing: discovered unique peers

Private relays in the last graph are relays which we are not certain that are registered on the chain.

Typed Protocols

We conducted an investigation whether the new proposed typed-protocols version (see typed-protocols#52 introduces any performance regression. No regression was found when running a cardano-node (v9.1.0 vs a modified version using the new typed-protocols API) the benchmarking cluster. Also no regression was observed when syncing mainnet. The graph below shows accumulated size of block downloaded over time for both nodes:

Accumulated block size over time

The following draft PRs are openned:

cardano-cli ping

Fixed a bug in which cardano-cli ping exited with wrong exit code when a wrong network magic was supplied, see ouroboros-network#4865.

cardano-cli ping will also now report the remote IP address and port when querying the tip:

> cardano-cli ping -h backbone.mainnet.cardanofoundation.org -p3001 -t -j -q | jq
{
"tip": [
{
"addr": "2a01:2a8:a23d:16::17",
"blockNo": 10699400,
"hash": "f37649c4a6ae0c8b208da7c46d4e04312518969e612af0a8dbfdadcbd7180dd2",
"port": 3001,
"rtt": 0.013192945,
"slotNo": 131991843
},
{
"addr": "2a0e:dc0:3:b122::1",
"blockNo": 10699400,
"hash": "f37649c4a6ae0c8b208da7c46d4e04312518969e612af0a8dbfdadcbd7180dd2",
"port": 3001,
"rtt": 0.024089979,
"slotNo": 131991843
},
{
"addr": "2001:15e8:110:4aae::1",
"blockNo": 10699400,
"hash": "f37649c4a6ae0c8b208da7c46d4e04312518969e612af0a8dbfdadcbd7180dd2",
"port": 3001,
"rtt": 0.034663209,
"slotNo": 131991843
}
]
}

See ouroboros-network#4931.

Tx-Submission

We continued writing tests for the new tx-submission application.

We started extending typed-protocols codec to have access to both raw bytes and decoded transactions in the tx-submission mini-protocol. See ouroboros-network#4934.

· 2 min read
Marcin Szamotulski

High-level overview of sprint 66

We held The Network Working Group (NWG) in the last sprint. Below, we share recordings of this and earlier NWG meetings, which introduce basic notions of ouroboros-network. These recordings should be accessible to a technical audience.

Introduction to Ouroboros Network, NWG, part 1

Introduction to Ouroboros Network, NWG, part 2

Tx-Submission

We continued working on the new design of tx-submission. We progressed in writing a new tx-submission server (inbound side of tx-submission protocol) instrumented by decision logic. The next step is writing a simulation that runs N-pairs of client-server communications in which the same decision logic governs all servers - emulating the behaviour of cardano-node once the new tx-submission is integrated. For more details, see ouroboros-network#3311

Genesis integration

All outstanding PRs related to Genesis have been reviewed and accepted. Soon they will be merged.

Mithril Integration

We presented ideas on how to run mithril functionalities with cardano-node while taking into account the risks that such integration would impose on the system. The technical description will be part of a CIP, which will then go to the Technical Steering Committee (TSC) for an evaluation.

Smaller tasks

Open-Source contributions

We found out and fixed a bug in the iproute parser of IPv4 addresses:

  • Check that IPv4 addresses terminate, iproute#63
  • IPv4 address with mask should not contain a white space, iproute#64

· 2 min read
Marcin Szamotulski

High-level overview of sprint 65

Karl Knutsson (CF) fixed a bug which prevented a node using bootstrap peers to sync using them, for a more detailed description see ouroboros-network#4899.

Earlier this year we fixed bugs in IOSimPOR which prevent us from using it in ouroboros-network (io-sim#153, io-sim#159); since ouroboros-network#4872 was merged we have a large number of tests that are using IOSimPOR's schedule exploration. In the last sprint we fixed some bugs discovered by IOSimPOR in ouroboros-network:

We continued working on new tx-submission logic: ouroboros-network#3311 as well as on Genesis. The work on Genesis is split in a few PRs which are currently in review process:

High-level overview of sprint 64

Karl Knutsson (CF) modified peer sharing behaviour to not share peers whith which connections failed, see ouroboros-network#4883 for more details.

We fixed inbound governor counters tracer, see ouroboros-network#4885.

· 3 min read
Marcin Szamotulski

High-level overview of sprint 60

Edited on 8th of May: new EGK counters will be included in `cardano-node-8.9.3`, added links to `cardano-node-8.9.3` PR and `ouroboros-network-0.15` release.

Peer-Sharing Improvements

We continued working on improving peer sharing. As part of this work light peer sharing (e.g. including inbound peers to the known set of outbound governor), was restructured. Now, sending more peers than what was requested by the peer-sharing client is a protocol error, and the connection will be terminated; This hasn't been a resource attack vector since we always limited the number of peers taken by the outbound-governor and the number of peers has always been limited by the size of the mux ingress queue reserved for peer-sharing mini-protocol. These changes will be released in cardano-node-8.9.3. See ouroboros-network#4868

We also merged the work on outbound governor counters, which initially started as just an extension for peer-sharing counters but turned into a larger refactorisation. We announced it in the previous report. These changes will be included in 8.9.3. See ouroboros-network#4845, ouroboros-network#4861.

Light peer sharing (inbound peers) refactorisation allowed us to refactor the inbound governor loop: we restructured it so that the internal state is kept pure (and thus not shared with other threads), while the public part is computed incrementally (with good amortised costs and thus leading to good performance) and exposed to other components (e.g. the outbound-governor), see ouroboros-network#4871 (which is built on top of ouroboros-network#4868).

The PR [cardano-nod#5831] integrates ouroboros-network-0.15 with cardano-node-8.9.x branch. All included PRs / issues in ouroboros-network-0.15 are listed here.

Genesis

We implemented the API needed by the consensus layer for Genesis; see ouroboros-network#4815, ouroboros-network#4846.

We continued working on outbound governor changes to support Genesis:

Bootstrap Peers

Karl Knutsson ([CF]) found and fixed some problems related to big-ledger and public root peers. Here's an excerpt from the changelog file:

  • updated the big-ledger retry state in case of an exception;
  • reset public root retry state when transitioning between LedgerStateJudgements;
  • reduced public root retry timer;
  • don't classify a config file with public-root/bootstrap-peers IP addresses only as a DNS error. See ouroboros-network#4867.

Churn

We merged a refactorisation which synchronises churn with the outbound governor, see ouroboros-network#4617.

Minor Improvements

A few other minor improvements were merged:

Testing

We added quickcheck-monoids package and also submitted an upstream patch to QuickCheck to include a version of the standard All / Any monoids, which are helpful when writing more complex properties. We will use quickcheck-monoids until the upstream PR will be released. It will be available from CHaP. See quickcheck#397.