Documentation
We reviewed the technical report. We closed a number of issues,
the most important are:
And a few smaller issues:
This was done in the Network Spec Update PR, we also fixed many grammar
& spelling errors network-spec: language.
SRV Record Support
We worked on SRV records support by ouroboros-network
, issue
#2780, PR 5018. We will merge it after reuasble
diffusion.
Quering Network State through Node-to-Client Protocol
The aim is to make P2P network stake available through the Local State Query
Mini-Protocol.
We opened a draft PR, also see the issue, where we
mentioned all the branches where the work is progressing. See below for more
technical details.
Extensible Ouroboros Network Diffusion Stack
The work stream reached the review phase. See issue#5016.
Tx-Submission
The Consensus team agreed to implement needed mempool performance
optimisations and is making progress on them. See
ouroboros-consensus#1359.
Ouroboros-Network-0.19 Release
We cut ouroboros-network-0.19
and 0.19.1
releases.
Configuration Changes for Block Propagation Times
Block propagation times are influenced by the number of TCP round trips
required to transmit a block.
In mid-December, we published a post discussing configuration
changes to the Linux IP stack. These adjustments involved increasing the
initial TCP congestion window to 42 segments and ensuring that the
congestion window remained open for idle connections.
IOG applied these changes to four stake pools located in Brazil,
South Africa, Dubai, and Japan around December 15th.
The Cardano Foundation manages a standard peer-to-peer (P2P) node in Paris,
which operates without manual connections to other Cardano
Foundation nodes or IOG nodes. After implementing the configuration changes,
we noted a statistically significant improvement in the propagation times
for blocks larger than 10 segments (about 14,480 bytes) produced by IOG's pools.
Block Size (bytes) | Improvement (ms) |
---|
14,480 - 28,960 | -132 to -78 |
28,960 - 57,920 | -197 to -130 |
>57,920 | -255 to -176 |
These results demonstrate that a Stake Pool Operator (SPO) can enhance the
propagation times of their own pool's blocks by applying config changes
targeting TCP's congestion window.
Low-level summary
Querying Network State through Node-to-Client Protocol
In the first interaction, we will make it possible to query the node-to-node
state
through LocalStateQuery
mini-protocol (part of the node-to-client protocol).
data ConnectionManagerState peeraddr = ConnectionManagerState {
connectionMap :: Map (ConnectionId peeraddr) AbstractState,
registeredOutboundConnections :: Set peeraddr
}
deriving (Eq, Show)
data InboundState peeraddr = InboundState {
remoteHotSet :: !(Set (ConnectionId peeraddr)),
remoteWarmSet :: !(Set (ConnectionId peeraddr)),
remoteColdSet :: !(Set (ConnectionId peeraddr)),
remoteIdleSet :: !(Set (ConnectionId peeraddr))
}
deriving (Eq, Show)
data OutboundState peeraddr = OutboundState {
coldPeers :: Set peeraddr,
warmPeers :: Set peeraddr,
hotPeers :: Set peeraddr
}
deriving (Eq, Show)
data NetworkState peeraddr = NetworkState {
connectionManagerState :: ConnectionManagerState peeraddr,
inboundGovernorState :: InboundState peeraddr,
outboundGovernorState :: OutboundState peeraddr
}
deriving (Eq, Show)