102 research outputs found
Self-stabilizing protocol for anonymous oriented bi-directional rings under unfair distributed schedulers with a leader
We propose a self-stabilizing protocol for anonymous oriented bi-directional rings of any size under unfair distributed schedulers with a leader. The protocol is a randomized self-stabilizing, meaning that starting from an arbitrary configuration it converges (with probability 1) in finite time to a legitimate configuration (i.e. global system state) without the need for explicit exception handler of backward recovery. A fault may throw the system into an illegitimate configuration, but the system will autonomously resume a legitimate configuration, by regarding the current illegitimate configuration as an initial configuration, if the fault is transient. A self-stabilizing system thus tolerates any kind and any finite number of transient faults. The protocol can be used to implement an unfair distributed mutual exclusion in any ring topology network; Keywords: self-stabilizing protocol, anonymous oriented bi-directional ring, unfair distributed schedulers. Ring topology network, non-uniform and anonymous network, self-stabilization, fault tolerance, legitimate configuration
Asynchronous neighborhood task synchronization
Faults are likely to occur in distributed systems. The motivation for designing self-stabilizing system is to be able to automatically recover from a faulty state. As per Dijkstra\u27s definition, a system is self-stabilizing if it converges to a desired state from an arbitrary state in a finite number of steps. The paradigm of self-stabilization is considered to be the most unified approach to designing fault-tolerant systems. Any type of faults, e.g., transient, process crashes and restart, link failures and recoveries, and byzantine faults, can be handled by a self-stabilizing system; Many applications in distributed systems involve multiple phases. Solving these applications require some degree of synchronization of phases. In this thesis research, we introduce a new problem, called asynchronous neighborhood task synchronization ( NTS ). In this problem, processes execute infinite instances of tasks, where a task consists of a set of steps. There are several requirements for this problem. Simultaneous execution of steps by the neighbors is allowed only if the steps are different. Every neighborhood is synchronized in the sense that all neighboring processes execute the same instance of a task. Although the NTS problem is applicable in nonfaulty environments, it is more challenging to solve this problem considering various types of faults. In this research, we will present a self-stabilizing solution to the NTS problem. The proposed solution is space optimal, fault containing, fully localized, and fully distributed. One of the most desirable properties of our algorithm is that it works under any (including unfair) daemon. We will discuss various applications of the NTS problem
Self-stabilization Overhead: an Experimental Case Study on Coded Atomic Storage
Shared memory emulation can be used as a fault-tolerant and highly available
distributed storage solution or as a low-level synchronization primitive.
Attiya, Bar-Noy, and Dolev were the first to propose a single-writer,
multi-reader linearizable register emulation where the register is replicated
to all servers. Recently, Cadambe et al. proposed the Coded Atomic Storage
(CAS) algorithm, which uses erasure coding for achieving data redundancy with
much lower communication cost than previous algorithmic solutions.
Although CAS can tolerate server crashes, it was not designed to recover from
unexpected, transient faults, without the need of external (human)
intervention. In this respect, Dolev, Petig, and Schiller have recently
developed a self-stabilizing version of CAS, which we call CASSS. As one would
expect, self-stabilization does not come as a free lunch; it introduces,
mainly, communication overhead for detecting inconsistencies and stale
information. So, one would wonder whether the overhead introduced by
self-stabilization would nullify the gain of erasure coding.
To answer this question, we have implemented and experimentally evaluated the
CASSS algorithm on PlanetLab; a planetary scale distributed infrastructure. The
evaluation shows that our implementation of CASSS scales very well in terms of
the number of servers, the number of concurrent clients, as well as the size of
the replicated object. More importantly, it shows (a) to have only a constant
overhead compared to the traditional CAS algorithm (which we also implement)
and (b) the recovery period (after the last occurrence of a transient fault) is
as fast as a few client (read/write) operations. Our results suggest that CASSS
does not significantly impact efficiency while dealing with automatic recovery
from transient faults and bounded size of needed resources
On the Limits and Practice of Automatically Designing Self-Stabilization
A protocol is said to be self-stabilizing when the distributed system executing it is guaranteed to recover from any fault that does not cause permanent damage. Designing such protocols is hard since they must recover from all possible states, therefore we investigate how feasible it is to synthesize them automatically. We show that synthesizing stabilization on a fixed topology is NP-complete in the number of system states. When a solution is found, we further show that verifying its correctness on a general topology (with any number of processes) is undecidable, even for very simple unidirectional rings. Despite these negative results, we develop an algorithm to synthesize a self-stabilizing protocol given its desired topology, legitimate states, and behavior. By analogy to shadow puppetry, where a puppeteer may design a complex puppet to cast a desired shadow, a protocol may need to be designed in a complex way that does not even resemble its specification. Our shadow/puppet synthesis algorithm addresses this concern and, using a complete backtracking search, has automatically designed 4 new self-stabilizing protocols with minimal process space requirements: 2-state maximal matching on bidirectional rings, 5-state token passing on unidirectional rings, 3-state token passing on bidirectional chains, and 4-state orientation on daisy chains
Technical Report: Using Static Analysis to Compute Benefit of Tolerating Consistency
Synchronization is the Achilles heel of concurrent programs. Synchronization
requirement is often used to ensure that the execution of the concurrent
program can be serialized. Without synchronization requirement, a program
suffers from consistency violations. Recently, it was shown that if programs
are designed to tolerate such consistency violation faults (\cvf{s}) then one
can obtain substantial performance gain. Previous efforts to analyze the effect
of \cvf-tolerance are limited to run-time analysis of the program to determine
if tolerating \cvf{s} can improve the performance. Such run-time analysis is
very expensive and provides limited insight.
In this work, we consider the question, `Can static analysis of the program
predict the benefit of \cvf-tolerance?' We find that the answer to this
question is affirmative. Specifically, we use static analysis to evaluate the
cost of a \cvf and demonstrate that it can be used to predict the benefit of
\cvf-tolerance. We also find that when faced with a large state space, partial
analysis of the state space (via sampling) also provides the required
information to predict the benefit of \cvf-tolerance. Furthermore, we observe
that the \cvf-cost distribution is exponential in nature, i.e., the probability
that a \cvf has a cost of is , where and are constants,
i.e., most \cvf{s} cause no/low perturbation whereas a small number of \cvf{s}
cause a large perturbation. This opens up new aveneus to evaluate the benefit
of \cvf-tolerance
Self-stabilizing minimum-degree spanning tree within one from the optimal degree
International audienceWe propose a self-stabilizing algorithm for constructing a Minimum-Degree Spanning Tree (MDST) in undirected networks. Starting from an arbitrary state, our algorithm is guaranteed to converge to a legitimate state describing a spanning tree whose maximum node degree is at most ∆∗ + 1, where ∆∗ is the minimum possible maximum degree of a spanning tree of the network. To the best of our knowledge our algorithm is the first self stabilizing solution for the construction of a minimum-degree spanning tree in undirected graphs. The algorithm uses only local communications (nodes interact only with the neighbors at one hop distance). Moreover, the algorithm is designed to work in any asynchronous message passing network with reliable FIFO channels. Additionally, we use a fine grained atomicity model (i.e. the send/receive atomicity). The time complexity of our solution is O(mn2 log n) where m is the number of edges and n is the number of nodes. The memory complexity is O(δ log n) in the send-receive atomicity model (δ is the maximal degree of the network)
- …