Skip to main content

Crate recon_protocols

Crate recon_protocols 

Source
Expand description

Distributed algorithms, written as sans-IO protocols.

Each module is one abstraction from Cachin, Guerraoui & Rodrigues, Introduction to Reliable and Secure Distributed Programming — transcribed so that the code can be read against the page. The pseudocode each one implements is quoted in its module documentation.

The bottom abstraction, fair-loss links, is not here: it is what the simulator provides.

Re-exports§

pub use best_effort_broadcast::BestEffortBroadcast;
pub use consensus_based_total_order_broadcast::ConsensusBasedTotalOrderBroadcast;
pub use detector::Detector;
pub use detector::DetectorInd;
pub use eventually_perfect_failure_detector::EventuallyPerfectFailureDetector;
pub use flooding_consensus::FloodingConsensus;
pub use logged_epoch_change::LoggedEpochChange;
pub use logged_epoch_consensus::LoggedEpochConsensus;
pub use logged_leader_driven_consensus::LoggedLeaderDrivenConsensus;
pub use logged_uniform_reliable_broadcast::LoggedUniformReliableBroadcast;
pub use logged_uniform_total_order_broadcast::LoggedUniformTotalOrderBroadcast;
pub use majority_ack_uniform_reliable_broadcast::MajorityAckUniformReliableBroadcast;
pub use multi_paxos_replica::MultiPaxosReplica;
pub use multi_paxos_synod::MultiPaxosSynod;
pub use note::Note;
pub use note::Refusal;
pub use perfect_failure_detector::PerfectFailureDetector;
pub use reliable_broadcast::ReliableBroadcast;
pub use stubborn_broadcast::StubbornBroadcast;
pub use timing::Timing;
pub use total_order_log::LogInd;
pub use total_order_log::TotalOrderLog;
pub use uniform_reliable_broadcast::UniformReliableBroadcast;

Modules§

best_effort_broadcast
Best-effort broadcast.
consensus_based_total_order_broadcast
Consensus-based total-order broadcast.
detector
The detector port: what a layer above a failure detector may depend on, and the whole of it.
epoch_change
Epoch-change — a sequence of epochs, each with a timestamp and a leader.
epoch_consensus
Read/write epoch consensus — the quorum core, and where Paxos’s safety argument lives.
eventual_leader_detector
Ω — an eventual leader detector.
eventually_perfect_failure_detector
Eventually perfect failure detection — ◇P.
fair_loss_link
Fair-loss point-to-point links — the bottom of the stack, and the weakest link there is.
flooding_consensus
Flooding consensus.
lazy_probabilistic_broadcast
Lazy probabilistic broadcast — gossip, then pull back what it missed.
leader_driven_consensus
Leader-driven consensus — Paxos.
link
The link port: what a layer above the link may depend on, and the whole of what it may.
logged_epoch_change
Epoch-change that survives a restart.
logged_epoch_consensus
Read/write epoch consensus that survives a restart.
logged_leader_driven_consensus
Paxos that survives a restart.
logged_link
Logged perfect point-to-point links.
logged_uniform_reliable_broadcast
Logged uniform reliable broadcast.
logged_uniform_total_order_broadcast
Logged uniform total-order broadcast.
majority_ack_uniform_reliable_broadcast
Majority-ack uniform reliable broadcast.
multi_paxos_replica
The Multi-Paxos replica: slots become positions in a log.
multi_paxos_synod
The Synod protocol of Multi-Paxos: ballots, acceptors, scouts, commanders and leaders.
note
What a protocol says about a decision it took.
perfect_failure_detector
Perfect failure detection.
perfect_link
Perfect point-to-point links.
probabilistic_broadcast
Eager probabilistic broadcast — gossip.
reliable_broadcast
Regular reliable broadcast.
session_link
A link whose guarantees come from an underlying session.
stacks
Ready-made compositions: a layer, spelled with the link it runs over.
stubborn_broadcast
Stubborn best-effort broadcast.
stubborn_link
Stubborn point-to-point links.
timing
The durations the leader-driven family is configured with.
total_order_log
The total-order log port: what a layer above a totally ordered log may depend on, and the whole of what it may.
uniform_reliable_broadcast
Uniform reliable broadcast.