Skip to content

Commit

Permalink
Draft ADR about network properties and etcd implementation
Browse files Browse the repository at this point in the history
  • Loading branch information
ch1bo committed Feb 12, 2025
1 parent 5e55e3e commit 433ccc6
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 4 deletions.
4 changes: 2 additions & 2 deletions docs/adr/2022-03-28_017-udp-networking.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@ slug: 17
title: |
17. Use UDP protocol for Hydra networking
authors: []
tags: [Proposed]
tags: [Superseded]
---

## Status

Proposed
Superseded (as never implemented) by [ADR 32](/adr/32)

## Context

Expand Down
4 changes: 2 additions & 2 deletions docs/adr/2023-09-09_027-network-resilience.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@ slug: 27
title: |
27. Network failures model
authors: [abailly, pgrange]
tags: [Accepted]
tags: [Superseded]
---

## Status

Accepted
Superseded by [ADR 32](/adr/32)

## Context

Expand Down
46 changes: 46 additions & 0 deletions docs/adr/2025-02-12_032-network-properties-etcd.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
---
slug: 32
title: |
32. Network layer properties, implementation using etcd
authors: [ch1bo]
tags: [Accepted]
---

## Status

Accepted

## Context

TODO write context

- First relevant is [ADR 6](/adr/6) which defines the multicast/broadcast primitive
- Related to [ADR 27](/adr/27)
- re-confirm the failure model
- superseded decision taken in there
- correspondence of reliable broadcast and consensus
- summarize properties of network layer

## Decision

- We supersede [ADR 17](/adr/17) and [ADR 27](/adr/27) with the current ADR.

TODO write decision

- Define properties of the network layer
- Precise definition of broadcast to be a reliable broadcast (including Agreement)
- https://hydra.family/head-protocol/docs/dev/architecture/networking#interface

TODO write decision (separate ADR?)

- Decide to use `etcd` as a proxy to achieve reliable broadcast via its raft consensus
- (or consequence?) Change of `PeerConnected` to `HydraNetworkConnected` semantics

## Consequences

TODO write consequences

- Drop existing implementation using `Reliability` layer (could be revisited, as in theory it would satisfy properties if implemented correctly -> link to Cachin, Uniform reliable broadcast = only deliver when seen by everyone = not what we had implemented)
- Run time dependency on `etcd`
- Improved introspectability
- Crash tolerance of up to `n/2` failing nodes

0 comments on commit 433ccc6

Please sign in to comment.