4 research outputs found

    Interactive Consistency in practical, mostly-asynchronous systems

    Full text link
    Interactive consistency is the problem in which n nodes, where up to t may be byzantine, each with its own private value, run an algorithm that allows all non-faulty nodes to infer the values of each other node. This problem is relevant to critical applications that rely on the combination of the opinions of multiple peers to provide a service. Examples include monitoring a content source to prevent equivocation or to track variability in the content provided, and resolving divergent state amongst the nodes of a distributed system. Previous works assume a fully synchronous system, where one can make strong assumptions such as negligible message delivery delays and/or detection of absent messages. However, practical, real-world systems are mostly asynchronous, i.e., they exhibit only some periods of synchrony during which message delivery is timely, thus requiring a different approach. In this paper, we present a thorough study on practical interactive consistency. We leverage the vast prior work on broadcast and byzantine consensus algorithms to design, implement and evaluate a set of algorithms, with varying timing assumptions and message complexity, that can be used to achieve interactive consistency in real-world distributed systems. We provide a complete, open-source implementation of each proposed interactive consistency algorithm by building a multi-layered stack of protocols that include several broadcast protocols, as well as a binary and a multi-valued consensus protocol. Most of these protocols have never been implemented and evaluated in a real system before. We analyze the performance of our suite of algorithms experimentally by engaging in both single instance and multiple parallel instances of each alternative.Comment: 13 pages, 10 figure

    The Failure Detector Abstraction

    Get PDF
    A failure detector is a fundamental abstraction in distributed computing. This paper surveys this abstraction through two dimensions. First we study failure detectors as building blocks to simplify the design of reliable distributed algorithms. In particular, we illustrate how failure detectors can factor out timing assumptions to detect failures in distributed agreement algorithms. Second, we study failure detectors as computability benchmarks. That is, we survey the weakest failure detector question and illustrate how failure detectors can be used to classify problems. We also highlight some limitations of the failure detector abstraction along each of the dimensions

    Implementable Failure Detectors in Asynchronous Systems

    No full text
    The failure detectors discussed in the literature so far are impossible to implement in an asynchronous system. We introduce a failure detector called infinitely often accurate failure detector which can be implemented in an asynchronous system. We provide one such implementation and show its application to fault-tolerant server maintenance problem. 1 Introduction We introduce a failure detector which is implementable in asynchronous systems. The previous work [CT96] has only considered those failure detectors which solve the consensus problem in asynchronous systems. It follows from [FLP85] that these failure detectors are not implementable in asynchronous systems. The failure detector introduced in this paper, called Infinitely Often Accurate detector (IO detector for short), can be implemented efficiently in asynchronous systems. An IO detector requires the detector to satisfy even weaker accuracy then eventually weak accuracy proposed by Chandra and Toueg [CT96]. Intuitively,..
    corecore