Network Quarterly Update
2022-11 - 2023-01
Summary
The primary goal of the networking team was to focus on the single relay release of P2P. We fixed a number of small late bugs, and concluded QA & performance testing. Although it was discovered a regression in performance of block production when P2P is enabled, relaying with P2P performs better comparing to a non p2p. We concluded that this is not a blocker for the Single Relay Release which is planned shortly.
Peer sharing has gone through review and final review is just being done right now. After merging it will still be disabled (hidden behind a flag) as it's not safe without eclipse evasion. We started implementing light peer sharing (i.e. include inbound peers into known peer set of the outbound governor).
We started a detailed eclipse evasion design, it will continue in the next quarter.
We also made a major revision of package structure of the network packages. We ended up with a very clean dependency graph (pr #4155).
Armando Santos delivered a talk at the ODOPIS 2022 conference on principles of distributed systems in Brussels. The slides are available here.
Neil Davies gave an invited seminar on DeltaQ
at Université Catholique de
Louvain.
We also found and fixed a few of bugs:
a bug in keep alive mini-protocol which resulted in warm to cold transitions to be always executed through a timeout path rather than do a clean demotion ([pr #4168]).
fixed an assetion failure in the outbound governor (issue #4177)
- we fixed DNS test failure issue #4191
Next steps
We will work towards the next release of P2P for block producer nodes. This includes:
- analysing performance regression for BP nodes when using P2P
- finish the work on controlling the block forger through node kernel (pr #3800)
- address issue #3907 and write a script to analyse deployment of P2P relays
We would like also to push forward eclipse evasion. Although most of the work
has be done already the release of io-sim
on Hackage
will happen in the
next quarter.
We would also like to address chain-sync timeout issue recently diagnosed by Karl Knutsson.
If time permits we would also like to address some technical debt, especially:
Risks
The performance regression for block producer with P2P needs to be investigated in the near future. This is blocker for the release of P2P on BP nodes.
Detailed log
Contributions to Ouroboros-Network
- We added
TraceDemoteLocalAsynchronous
, which enables notification of critical issues for SPOs - We fixed
cardano-ping
compatibility withNodeToNodeV_10
(P2P, pr #4165) - We fixed a bug in demotion peers to cold which affected P2P nodes (commit-61058aa5c2)
- Karl Knutsson enhanced
SendFetchRequest
(commit-bb1c3dddee), open-source contribution) - We turned
SizeInBytes
into a newtype. - We extended
CONTRIBUTING.md
,README.md
, addedCODE_OF_CONDUCT
. - We fixed DNS test failure issue #4191
- We fixed a simulation bug found in issue #4258
- [pr #4168]
- issue #4177
Contributions to Cardano-Node
- We maintained the Single Relay Release pr #4612, (e.g. fixing CI issues, Rebasing it when necessary, publishing packages to Cardano Haskell Packages);
- We enhanced
JSON
serialisation / deserialisation ofNodeToNodeVersion
andNodeToClientVersion
;
Contributions to IOSim
- We started to use Cardano Haskell Packages for
IOSim
(pr #48) - We updated change log files
- We added support of
ghc-9.4
(pr #50)
We also addressed the following issues in pr #57 in order to prepare the package for publication on Hackage:
- refactored
io-classes
timers API (issue #46); - created a new package
si-timers
which exposes an interface using SI units and is safe on 32-bit systems (issue #59); - added monad transformers instances for classes defined in
io-classes
(issue #58); - created
io-classes-mtl
package which includes (experimental) instances for monad transformers; - provide
MonadMonotonicTimeNSec
inio-classes
andMonadMonotonicTime
insi-timers
(so thatio-classes
follow thebase
package); - added
registerCancellableDelay
insi-timers
(which allowed us to hide fancy timer api and cleanio-classes
) - added support for
js_HOST_ARCH
(the new GHC JS backend)
Note the pr #57 contains almost 40 commits, and was a major step forward for
io-sim
ecosystem. We also prepared a draft pr #4281 which updates
ouroboros-network
.
Other changes for 1.0.0.0
release on Hackage: